본문 바로가기

개발4

Blocking vs Non-Blocking Blocking vs Non-Blocking Introduction 많은 분들이 Non-Blocking 알고리즘이 빠르다는 것을 들어서 알고 있지만, 1. Non-Blocking I/O와 혼용해 사용하는 경우가 많고 2. 정확히 Non-Blocking 알고리즘이 어떤 것인지 모르고 3. Blocking보다 어떤 이유에서 빠른지 모르기 때문에 본 포스팅에서 해당 내용을 확실하게 정리해보려고 합니다. Interrupt 내가 interrupt를 잘 알고 있다 확신하면 다음 장으로 건너뛰셔도 됩니다. interrupt는 processor가 현재 실행 중인 코드를 중단시키는 요청입니다. interrupt가 accept되면, 프로세서는 현재 활동을 중단하고, 해당 활동의 state를 저장하고, interrupt를 .. 2023. 12. 3.
Four Golden Signals 글에 들어가기 앞서 ⚡ 서비스를 개발하다 보면 서비스가 성장함에 따라 유지보수를 위해 모니터링 시스템을 구축하게 됩니다. 모니터링 시스템 구축 시 어떤 지표를 봐야 하는지, 어떤 상황에 알람이 와야 하는지는 경험적으로 알아가는 경우가 많습니다. 많은 트래픽을 받고 있는 구글의 SRE팀은 해당 고민을 오래전부터 해왔고, 본인들의 경험을 공유했습니다. 이번 포스트에서는 구글에서 공유한 Four Golden Signal로 유명한 monitoring-distributed-system를 번역하고, 중간중간 저의 이해를 공유해보려 합니다. 본 글은 SRE 관점의 모니터링이고, application 관점의 모니터링은 해당 글에서 다루지 않습니다. 왜 모니터링을 해야 하는가? 시스템을 모니터링해야 하는 이유는 아래와 .. 2023. 11. 11.
The Twelve-Factor App (2/2) The Twelve-Factor App (2/2) 이전글 > The Twelve-Factor App (1/2) The Twelve-Factor App (1/2) 이전 포스트의 내용을 요약하면 아래와 같습니다. I. Codebase: app은 단일 레포지토리와 1:1 관계 하나의 codebase는 여러 deploy에 배포 가능 II. Dependencies (의존성) 모든 의존성들을 explicit 하게 manifest로 관리 시스템 도구를 포함한 implicit한 의존성이 존재해서는 안됨 III. Config (설정) 코드로부터 분리하고, 환경 변수를 통해 관리 IV. Backing services (ex. DB, Redis, 다른 백엔드 서비스 등등) backing service를 리소스로써 취급 V... 2023. 6. 4.
The Twelve-Factor App (1/2) The Twelve-Factor App (1/2) 글에 들어가기 앞서 ⚡ 서비스를 개발하다 보면, 아래와 같은 고민들을 많이 하게 됩니다. config를 어떻게 관리해야 하지? 로그는 어떻게 처리하는 것이 좋지? 코드를 어떻게 관리하지? 의존성은 어떻게 관리하지? 트래픽이 몰려서 서비스 성능을 올려야 하는데, 여러 머신에서 구동했을 때 충돌이 일어나네..?! 🚨🚨🚨 기존에 똑똑하신 선조분께서 컨벤션을 잘 잡아주신 경우는 컨벤션을 따라가면 되지만, 처음 프로젝트를 킥오프 하는 상황에서 컨벤션을 정해야 하는 경우가 필연적으로 존재합니다. 😢😢😢 (˚ ˃̣̣̥⌓˂̣̣̥ )(˚ ˃̣̣̥⌓˂̣̣̥ ) ☄✨🌟💫⭐ 그런 상황에서 기준이 될 수 있는 `The Twelve-Factor App` 을 소개합니다! ⭐💫🌟✨☄.. 2023. 6. 3.