ARCHIVE
-
디스크리스 카프카(Diskless Kafka): 브로커가 데이터를 소유하지 않을 때 일어나는 분산 아키텍처의 전환 — KIP-1150과 객체 스토리지 기반 스트리밍ARCHIVE 2026. 10. 31. 09:06
아파치 카프카(Apache Kafka)는 지난 15년간 대규모 분산 스트리밍의 표준으로 군림했다. 2011년 링크드인(LinkedIn)의 NetDB 논문에서 제시된 설계 철학은 명확했다. 디스크의 순차 I/O(Sequential I/O), OS 페이지 캐시(Page Cache), 커널 공간에서 네트워크 소켓으로 버퍼를 직접 전달하는 sendfile 제로 카피(Zero-copy)다. 이 구조에서 브로커는 파티션 로그 파일(partition-N.log)을 로컬 디스크에 직접 저장하고, 복제본 상태를 스스로 관리했다.온프레미스 베어메탈 서버를 위해 태어난 이 설계는 퍼블릭 클라우드 환경에서 막대한 인프라 비용과 운영 마찰을 일으킨다. 3개 가용 영역(AZ)에 걸쳐 복제본을 유지하는 클러스터는 기가바이트(GiB..
-
DB 커넥션 풀 사이징: 왜 커넥션을 늘려도 TPS가 오르지 않을까? — 코어×2 공식과 리틀의 법칙ARCHIVE 2026. 10. 24. 09:06
웹 서비스 트래픽이 급증하고 응답 지연이 발생할 때, 개발자가 가장 흔하게 저지르는 실수가 있다. WAS의 데이터베이스 커넥션 풀(Connection Pool) 크기를 10에서 50, 100, 200으로 무작정 늘리는 조치다. "일꾼이 많으면 밀린 일도 빨리 끝나겠지"라는 직관에 기댄다.결과는 정반대로 흐른다. 커넥션 풀을 늘리자마자 데이터베이스 서버 CPU 사용률이 100%를 찍고, 쿼리 응답 시간은 급증하며, 시스템 전체가 마비에 빠진다.커넥션 수가 늘어난다고 처리량(TPS)이 비례해 오르지 않는다. 오히려 특정 임계점을 넘는 순간 성능이 곤두박질친다. 이 역설을 이해하고 데이터베이스 하드웨어에 맞는 최적의 커넥션 풀을 산정하는 기준을 정리한다. 🔍 클릭하여 확대 flowchart LR s..
-
MSA 분산 트랜잭션 설계의 기원: 1987년 Sagas 논문과 완화된 원자성ARCHIVE 2026. 10. 15. 09:03
마이크로서비스 아키텍처(MSA)에서 데이터 정합성을 다룰 때 가장 먼저 마주치는 해법이 사가(Saga) 패턴이다. 오늘날 카프카(Kafka) 기반 이벤트 코레오그래피나 템포럴(Temporal), 캠문다(Camunda) 같은 워크플로 오케스트레이터로 구현되는 이 패턴은 1987년 헥터 가르시아-몰리나(Hector Garcia-Molina)와 케네스 살렘(Kenneth Salem)이 발표한 논문 "Sagas"에 뿌리를 둔다.40년 전 데이터베이스 엔지니어들이 단일 DBMS 환경에서 마주했던 병목과 이를 극복하기 위해 제안한 원자성 완화(Relaxing Atomicity) 원리는 현대 분산 트랜잭션 설계의 본질을 그대로 관통한다.1. LLT(Long-Lived Transaction)와 전통 ACID의 붕괴전통..
-
카프카를 탄생시킨 핵심 설계 원칙: 2011 NetDB 논문과 초고처리량 아키텍처ARCHIVE 2026. 10. 10. 09:02
참고: 2011년 아테네에서 열린 ACM SIGOPS NetDB 워크숍에서 제이 크렙스(Jay Kreps), 네하 나르케데(Neha Narkhede), 준 라오(Jun Rao)가 발표한 카프카 창립 논문 "Kafka: a Distributed Messaging System for Log Processing"과 [[코딩하는기술사]]의 아키텍처 분석 강의를 바탕으로 정리한 기술 분석입니다.📌 핵심 요약2011년 공개된 아파치 카프카(Apache Kafka) 창립 논문은 전통적인 엔터프라이즈 메시지 큐의 무거운 보장(2PC 분산 트랜잭션, 메시지별 영속성, B-Tree 인덱스, 임의 삭제)을 과감히 버리고, 추가 전용 로그(Append-Only Log), 오프셋 기반 주소화, 리눅스 sendfile 제로카피..
-
카프카(Kafka)를 메시지 큐로만 쓰면 안 되는 이유: 'The Log'와 분산 커밋 로그 아키텍처ARCHIVE 2026. 9. 21. 21:14
참고: 본 글은 링크드인(LinkedIn)의 분산 인프라를 설계하고 아파치 카프카(Apache Kafka)를 창시한 제이 크렙스(Jay Kreps)의 기념비적 논고, "The Log: What every software engineer should know about real-time data's unifying abstraction" (2013)의 핵심 통찰을 바탕으로 현대 분산 시스템과 데이터베이스 아키텍처의 기저 원리를 심층 분석합니다.📌 한 줄 요약카프카는 단순한 고성능 메시지 큐가 아니라, 물리적 시계의 불완전성을 논리적 순번(Offset)으로 극복하는 분산 커밋 로그(Distributed Commit Log)이며, $O(N^2)$ 거미줄 파이프라인을 $O(N)$으로 단순화하고 모든 분산 시스..
-
Shopify는 왜 수년간 쓰던 Redis를 버리고 MySQL SKIP LOCKED로 돌아섰을까?ARCHIVE/DATABASE 2026. 9. 20. 07:56
참고: 본 글은 Shopify Engineering 팀의 아키텍처 전환 사례("We replaced Redis with MySQL for inventory reservations—and it scaled", 2026)를 기반으로 핵심 엔지니어링 통찰을 정리한 글입니다.📌 한 줄 요약체크아웃 오버셀(과판매) 방지를 위한 재고 예약을 수년간 Redis로 운영하다가, 예약과 재고 원장 간의 이중 시스템·비원자적 Claim 문제를 근본적으로 해결하기 위해 MySQL 8 SKIP LOCKED + 단위당 1행 + 가용 풀 상한 구조로 재설계했습니다. 그리고 이 과정에서 밝혀진 진짜 병목은 쿼리 성능이 아닌 커넥션 점유 시간이었습니다.1. 배경: 분리된 이중 시스템의 한계이커머스 결제 흐름에서 재고 처리는 통상 2..
-
Chat-GPT 장난 아니구나ARCHIVE/MACHINE LEARNING 2023. 2. 4. 20:03
다이어트에 대해 글을 써 달라고 하니, 아래와 같은 글을 써 줬다. 별다른 고민 없이 주제만 하나 던졌는데, 저렇게 써주다니 대단하다. 왜 요즘들어 여기저기서 난리가 났는지 알거 같다. 건강한 라이프스타일 만들기: 다이어트, 운동 및 진행 상황 추적 가이드 소개 다이어트의 정의 다이어트는 체중 조절, 건강 개선 또는 특정 영양 목표 달성을 위해 음식이나 음료 섭취를 의도적으로 제한하는 것을 말합니다. 여기에는 칼로리 섭취를 줄이고 체중 감량을 촉진하는 데 도움이 되는 균형 잡히고 지속 가능한 식사 계획을 만드는 것이 포함됩니다. "다이어트"라는 용어는 종종 빠른 체중 감량을 목표로 하는 단기적이고 제한적인 식사 계획과 관련이 있지만 잘 계획되고 균형 잡힌 식단은 건강한 체중을 유지하고 전반적인 건강을 개..
-
Java — 모범 사례 및 권장 사항: 디자인 패턴ARCHIVE/JAVA 2022. 1. 8. 11:12
출처: https://blog.singular.uk/java-good-practices-and-recommendations-design-patterns-eade30be7965 설계 패턴은 소프트웨어 개발 중에 자주 발생하는 문제에 대한 일반적인 해결책이다. 이러한 솔루션은 우아하고 대부분의 경우 객체 생성, 리소스 할당, 코드 단순화 등과 관련된 다양한 문제를 해결하는 가장 효과적인 방법을 제공한다. 비즈니스 논리에 따라 솔루션 자체를 커스터마이징할 필요가 있는 반면, 그것들이 주어지는 맥락을 유지할 필요가 있다. 설계 패턴은 세 가지 범주로 구분된다. 창조, 객체 생성 중에 발생하는 다양한 문제를 해결하기 위한 솔루션 제공 구조, 더 큰 구조에서 클래스를 구성할 수 있는 방법을 찾아냄으로써 인스턴스화 ..