/
https://42jerrykim.github.io/ _index.md
한 서비스의 장애가 이를 호출하는 다른 서비스로 연쇄 전파되는 문제와, 실패율이 임계값을 넘으면 타임아웃 중인 호출을 차단해 장애 확산을 막는 서킷 브레이커의 Closed/Open/Half-Open 상태 전이, 그리고 서비스 메시 계층에서의 적용까지 다룹니다.
세그먼트 트리는 구간 합·구간 최솟값 같은 구간 쿼리를 O(log n)에 처리하는 트리입니다. 배열 순회 대비 이점과 트리 구축·쿼리 원리를 컴파일 가능한 C 코드로 다루고, 배열 크기 산정·경계 조건에서 흔히 나는 구현 버그도 함께 짚습니다.
세마포어는 값이 0/1인 뮤텍스와 달리 정수 카운트로 여러 스레드의 동시 진입을 허용하는 동기화 도구입니다. 커넥션 풀 예시, POSIX 세마포어 코드, 락+조건 변수를 캡슐화한 모니터까지 다루며, 언제 세마포어 대신 모니터를 써야 하는지 비교합니다.
스레드풀은 스레드를 미리 만들어 재사용해 매 작업마다 생성 비용을 치르지 않게 하는 패턴입니다. 작업 큐와 워커 구조를 C 코드로 구현하고, 풀 크기 설정이 병목과 컨텍스트 스위칭 사이에서 갖는 트레이드오프를 설명합니다.
스킵 리스트는 연결리스트에 여러 층의 고속 포인터를 더해 평균 O(log n) 탐색을 얻는 확률적 자료구조입니다. Redis Sorted Set 사례와 함께 다룹니다.
시계열 데이터베이스는 시간 순서로 계속 추가되기만 하는 데이터에 최적화된 저장소입니다. 시간 기준 파티셔닝과 델타 인코딩이 압축률·쓰기 처리량을 높이는 원리를 다루고, 오래된 파티션을 통째로 폐기해 삭제 비용을 줄이는 실무 이점까지 설명합니다.
운영체제가 프로세스에 비동기 이벤트를 전달하는 시그널 메커니즘을 SIGINT·SIGTERM·SIGKILL 차이와 컴파일 가능한 핸들러 등록 코드로 다루고, async-signal-safe 제약과 실무에서 흔한 오해까지 함께 설명합니다.
MAJOR.MINOR.PATCH 형식은 하위 호환 깨짐·기능 추가·버그 수정을 숫자로 약속하는 신뢰의 계약입니다. 이 규칙을 어긴 배포가 실무에서 어떤 문제를 일으키는지, npm의 caret·tilde 범위 규칙과 함께 다룹니다.
옵저버 패턴은 주체의 상태 변화를 여러 구독자에게 통지하는 행동 패턴입니다. 프런트엔드 이벤트 리스너와 발행-구독 시스템의 근간이 되는 구조를 Python 코드로 다루고, 언제 이 패턴을 피해야 하는지도 함께 짚습니다.
CAS는 스레드를 대기시키는 뮤텍스와 달리, 락 없이 하드웨어 수준에서 예상값과 같으면 새 값으로 교체하는 lock-free 기법입니다. C11 stdatomic.h 코드로 재시도 루프 구조와 weak/strong 차이를 설명합니다.