[Open Source] 돈내기 싫어 만든 크롬 익스텐션
2023. 11. 5. 19:03
Open Source
ChatGPT의 등장으로 개발자의 생산성은 크게 증가했습니다. 더불어 chatGPT를 효과적으로 활용할 수 있는 서비스를 사용하면 생산성을 훨씬 더 극대화할 수 있습니다. 하지만, 이런 서비스의 단점은 월별로 지불해야 하는 금액이 "ChatGPT API Key 사용료"와 "서비스 이용료"의 합계로 측정되어 월에 만원 이상의 금액을 지불해야 한다는 것입니다. 향상된 생산성을 생각해 봤을 때 충분히 납득할 수 있는 금액이지만, 앞으로도 오랜 시간 동안 이 서비스를 사용할 예정인 만큼 지출 금액을 무시할 수는 없다고 판단했습니다. 최근 이직 준비가 마무리되고 시간이 약간 남은 관계로, ChatGPT를 효과적으로 활용할 수 있는 크롬 익스텐션 개발을 시작하기로 결정했습니다. Free AI Sidebar chro..
[Database] 분산환경 데이터베이스 일관성
2023. 11. 4. 12:30
Database/Database 필수
이번 포스팅에서는 분산 환경에서의 데이터베이스 일관성에 대해 살펴보겠습니다. 먼저 "일관성"이란 시스템에서 규정한 규칙을 지킬 수 있는 능력을 의미합니다. 이 규칙은 문맥에 따라 달라지므로 일관성 있는 시스템의 조건도 문맥에 따라 의미를 달리합니다. 분산 환경의 데이터베이스에서 말하는 "일관성"은 데이터베이스 ACID의 C(일관성)와는 다른 의미를 지닙니다. 아래에서 이 차이를 살펴보겠습니다. 데이터베이스 ACID의 C는 애플리케이션에서 규정한 규칙 및 데이터베이스 규칙을 지킬 수 있는 능력을 의미합니다. 그러나 ACID의 C는 애플리케이션 도움 없이 데이터베이스 자체적으로 갖출 수 있는 특징이 아니기 때문에 종종 ACID가 아닌 AID가 되어야 한다는 주장이 존재합니다. 분산 환경에서의 데이터베이스의 ..
[OS] TCP 송수신 Deep Dive
2023. 10. 20. 17:56
Operating System
본 포스팅에서는 Naver D2의 "TCP/IP 네트워크 스택 이해하기" 문서와 RFC 793(Transmission Control Protocol)를 참조해서 TCP에 대해 살펴보겠습니다. TCP(Transmission Control Protocol)란? 우선 TCP는 어떤 성격의 프로토콜인지 살펴보겠습니다. TCP의 특성 Connection oriented TCP는 통신하기 위해 우선 프로세스 간 연결(connection)을 맺어야 합니다. RFC 문서는 connection을 다음과 같이 정의합니다. The reliability and flow control mechanisms described above require that TPCs initialize and maintain certain sta..
[Kubernetes] Kubernetes + CI/CD 파이프라인 구축기
2023. 10. 16. 17:53
Infrastructure/Kubernetes
저는 회사에서 두 개의 팀에 소속되어 서비스를 구축하고 개발하고 있습니다. 1팀(첫 번째 팀)은 Java".jar" 파일을 클라우드 가상 머신에 배포하는 방식으로 작업하고 있고, 2팀(두 번째 팀)은 쿠버네티스 환경에 Java 애플리케이션을 배포하는 방식을 사용하고 있습니다. 다양한 팀원들과 이야기를 나눈 결과, 2팀의 쿠버네티스 환경과 개발 플로우가 장기적으로 비용 효율적이고 개발 효율성을 높일 수 있다는 결론을 내리게 되어 1팀에도 쿠버네티스를 도입하기로 결정하였습니다. 제가 쿠버네티스 환경에서의 애플리케이션 개발 및 배포 경험이 있기 때문에 다른 팀원들이 쿠버네티스 환경에 쉽게 적응할 수 있도록 가이드를 제공하게 되었습니다. 다른 팀원들이 쿠버네티스에 애플리케이션을 배포하는데 참고할 수 있도록 쿠버..
소프트웨어 개발과 인지 편향 현상(Cognitive Bias)
2023. 10. 7. 17:48
Others
평소처럼 유튜브를 시청하던 중 인간의 인지 편향에 대한 흥미로운 영상을 발견했습니다. 인간이 저지르기 쉬운 인지 편향에 관련된 내용인데, 이러한 편향은 소프트웨어 업계에도 만연해있기 때문에 예시와 함께 고민해 보면 좋은 주제라 생각하여 포스팅을 작성하게 됐습니다. 인지 편향 현상을 소개한 영상 기준점 편향(Anchoring Bias) 기준점 편향은 처음 제공된 정보를 의사 결정의 기준점(anchor)으로 삼아 지나치게 의존할 때 발생하는 현상입니다. 예를 들어 우리가 어떤 지역의 월세방을 구한다 했을 때 처음 확인한 월세방이 "보증금/월세"가 3000/60이라고 가정해 보겠습니다. 그다음으로 확인한 웰셋방의 "보증금/월세"가 2000/50이라고 가정했을 때 여러분은 어떻게 느끼시나요? 대부분의 사람들은 ..
[Kubernetes] Rolling Update 이슈와 해결 과정
2023. 9. 21. 18:18
Infrastructure/Kubernetes
최근 쿠버네티스에서 운영되는 프로덕션 애플리케이션을 배포(rolling update)하는 과정에서 클라이언트 요청이 중단되거나 거부되는 현상이 발생했습니다("client connection refused" 등의 에러 발생). 분명 deployment.yaml에 rollingUpdate를 수행하도록 설정했지만, 배포 과정에서 순단현상이 발생했습니다. spec: strategy: type: RollingUpdate rollingUpdate: maxSurge: 1 maxUnavailable: 0 replicas: 4 위 설정에서의 배포는 다음과 같이 동작합니다. 총 4개의 pod가 실행됩니다. 배포 시 새로운 버전의 반영은 순차적으로 수행됩니다. 새로운 pod 생성 새로운 pod가 준비상태(Ready)가 되면..
[필D상] Chapter 1. 실제 DBMS 사례를 통해 기본 개념 익히기 - MySQL Redo Log & Checkpoint
2023. 9. 9. 16:01
Database/필수 DBMS 상식
INSERT, UPDATE, DELETE 등의 DML이 수행될 때 디스크상의 데이터 파일에 변경사항을 즉시 반영하는 것은 성능에 부정적인 영향을 미칠 수 있습니다. 이는 변경해야 하는 데이터 파일이 디스크에 랜덤 하게 위치하기 때문입니다. MySQL은 리두 로그와 체크포인트를 활용해 변경사항을 일괄적으로 처리해 성능을 최적화합니다. Redo Log 트랜잭션은 ACID 속성을 지니고 있습니다. ACID를 풀이하면 다음과 같습니다. A(Atomicity): 원자성을 의미합니다. 트랜잭션으로 묶인 작업은 모두 성공하거나 모두 실패해야 한다는 속성입니다. C(Consistency): 트랜잭션에 의해 조작된 데이터는 일관성을 유지할 수 있음을 의미합니다. 주의할 점은 데이터의 일관성을 유지하기 위해서는 트랜잭션뿐..
[필D상] Chapter 1. 실제 DBMS 사례를 통해 기본 개념 익히기 - MySQL 아키텍처
2023. 9. 8. 06:15
Database/필수 DBMS 상식
Chapter 1에서는 MySQL의 아키텍처에 대해 살펴보겠습니다. MySQL의 기본 아키텍처는 다음과 같습니다. MySQL Connectors & Shell MySQL connector는 애플리케이션이 MySQL과 연결되어 작동할 수 있도록 도와주는 소프트웨어입니다. API를 통해 MySQL의 기능(쿼리 실행, 데이터 조회, 데이터 수정 등)을 활용할 수 있습니다. MySQL connector는 프로그래밍 언어에 따라 구현이 다르며, 대표적인 예시로 Java의 경우 JDBC(Java Database Connectivity)를 사용합니다. MySQL shell은 CLI(Command Line Interface) 또는 스크립트를 사용하여 MySQL을 다룰 수 있는 또 다른 방법입니다. MySQL Engin..