2026.01.11S·15파일 업로드 시스템: 대용량 파일을 안전하게 처리하기
10MB 이미지 업로드는 됐는데 2GB 동영상은 타임아웃이 났다. 청크 업로드, presigned URL, 그리고 재시도 로직까지 정리한 이야기.
System DesignFile UploadS3
→2026.01.10S·14알림 시스템 설계: 수백만 유저에게 알림 보내기
알림 하나 보내는 건 쉽지만, 알림이 많아지면서 중복 방지, 선호도 관리, 재시도까지 고려하면 완전히 다른 문제가 된다.
System DesignNotificationArchitecture
→2026.01.09S·13검색 시스템: Elasticsearch vs 자체 구현
SQL LIKE 검색으로 시작했다가 한계를 느꼈고, Elasticsearch를 도입했다가 운영 비용에 놀랐다. 검색 시스템의 트레이드오프를 정리했다.
System DesignSearchElasticsearch
→2026.01.08S·12결제 시스템 설계: 돈이 오가는 코드의 무게
결제 API 연동이 끝이 아니었다. 중복 결제 방지, 환불 처리, 멱등성까지 고려하니 결제 시스템이 왜 어려운지 뼈저리게 느꼈다.
System DesignPaymentArchitecture
→2026.01.07S·11뉴스 피드 시스템: Push vs Pull 모델
인스타그램처럼 피드를 만들려고 했는데, 팔로워 100만 명인 사람이 글을 올리면 어떻게 되는 걸까? Push와 Pull 모델의 트레이드오프를 정리했다.
System DesignFeedArchitecture
→2026.01.06S·10실시간 채팅 시스템 설계: WebSocket만으로 될까?
1:1 채팅은 쉬웠는데 그룹 채팅, 읽음 표시, 오프라인 메시지까지 고려하니 완전히 다른 문제였다.
System DesignWebSocketReal-time
→2026.01.05S·09URL 단축 서비스 설계: 쉬워 보이지만 함정투성이
URL 줄이는 거 뭐가 어렵겠어? 했는데, 해시 충돌, 만료 정책, 리다이렉트 성능까지 고려하니 시스템 디자인의 축소판이었다.
System DesignArchitectureHashing
→2025.08.27B·04회원가입 버튼을 눌렀는데 3초나 걸린다고? (Message Queue 도입기)
사용자가 회원가입 버튼을 누르면 이메일을 보낼 때까지 로딩 바가 돌아가고 있었습니다. 이메일 서버가 죽으면 회원가입도 실패했죠. 이 강결합(Tightly Coupled) 문제를 해결하기 위해 메시지 큐(Redis/BullMQ)를 도입하고, '식당 주문표' 비유로 비동기 처리를 이해한 과정을 공유합니다.
Message QueueRabbitMQKafka
→2025.08.20B·03내 서버를 내가 DDOS 칠 뻔했다 (Rate Limiting 완벽 가이드)
Rate Limiter 없이 API를 공개하면 사용자 자신이 DDOS 공격자가 될 수 있다. Token Bucket, Leaky Bucket, Sliding Window 등 핵심 알고리즘을 비교하고, Redis와 Lua Script를 사용해 분산 환경에서도 완벽하게 동작하는 Rate Limiter를 구현하는 방법을 정리해본다.
System DesignSecurityNginx
→2025.06.18S·08CAP 이론: 분산 시스템의 불가능한 삼위일체 (PACELC 포함)
분산 시스템에서 일관성(C), 가용성(A), 분할 내성(P)을 모두 만족하는 것은 물리적으로 불가능합니다. CP(은행) vs AP(SNS) 시스템의 트레이드오프와 최신 PACELC 이론을 다룹니다.
System DesignDatabaseTheory
→2025.06.12S·07MSA의 문지기, API Gateway: 구현부터 모니터링까지
마이크로서비스 아키텍처(MSA)에서 API Gateway가 필수적인 이유를 '호텔 프론트 데스크' 비유로 설명합니다. Kong, Nginx, AWS API Gateway 비교 및 Rate Limiting, GraphQL 통합, Observability까지 심층 분석.
MSAAPI GatewayBackend
→2025.06.10S·06DB 샤딩(Sharding): 10억 건 데이터를 처리하는 유일한 방법
테이블 하나에 10억 개의 행이 쌓이면 인덱스도 소용없습니다. 수직 파티셔닝(Vertical)과 수평 샤딩(Horizontal)의 차이, 일관된 해싱(Consistent Hashing), 그리고 샤딩의 치명적 단점인 JOIN 문제를 분석합니다.
System DesignDatabaseBackend
→2025.06.02S·05로드 밸런서: 서버가 100만 명을 버티는 기술 (L4 vs L7 완벽 분석)
트래픽 폭주로 서버가 죽는 것을 막으려면? L4(전송 계층)와 L7(응용 계층)의 차이, 라운드 로빈부터 IP 해시까지의 알고리즘, 그리고 Nginx 실제 설정법을 다룹니다.
System DesignNetworkInfrastructure
→2025.06.02Y·02DDoS 공격의 원리와 방어 전략: 당신의 서버는 안전한가요?
DDoS(분산 서비스 거부) 공격은 단순히 트래픽을 많이 보내는 것 이상의 정교한 기술입니다. L4(TCP Syn Flood)부터 L7(Slowloris)까지 다양한 공격 유형을 분석하고, Rate Limiting, CDN, Anycast Network를 활용한 실질적인 방어 전략을 정리합니다.
SecurityNetworkDDoS
→2025.06.01S·04DDD (Domain Driven Design): 개발자가 비즈니스 언어를 배워야 하는 이유
DDD는 단순히 'Repository 패턴을 쓰는 것'이 아닙니다. 복잡한 비즈니스 문제를 해결하기 위해 개발자와 기획자가 같은 언어(Ubiquitous Language)를 사용하고, 거대한 시스템을 'Bounded Context'로 나누어 정복하는 전략적 설계 방법론입니다.
ArchitectureDDDDesign Patterns
→2025.05.29S·03CQRS 패턴: 읽기와 쓰기를 분리해야 하는 진짜 이유 (Command Query Responsibility Segregation)
대규모 트래픽을 처리하는 시스템에서 데이터베이스의 병목 현상은 피할 수 없는 숙명입니다. 읽기(Query)와 쓰기(Command)의 책임을 물리적으로, 논리적으로 분리하여 성능과 확장성을 극대화하는 CQRS 패턴의 핵심 개념과 적용 전략을 정리합니다.
ArchitectureDesign PatternsMicroservices
→2025.05.24S·02서킷 브레이커(Circuit Breaker): 분산 시스템의 두꺼비집
집에 누전이 발생하면 두꺼비집이 내려가 전체 정전을 막습니다. 마이크로서비스에서도 한 서비스의 장애가 전체로 전파되는 것을 막기 위해 서킷 브레이커 패턴과 벌크헤드(Bulkhead) 패턴이 필수적입니다.
System DesignMicroservicesResilience
→2025.05.22I·03카오스 엔지니어링(Chaos Engineering): 일부러 서버를 부수는 이유
왜 넷플릭스는 멀쩡한 서버를 랜덤하게 꺼버릴까요? 시스템의 약점을 찾기 위해 고의로 장애를 주입하는 카오스 엔지니어링의 철학과 실천 방법(GameDay)을 소개합니다.
DevOpsSREInfrastructure
→2025.05.20S·01캐싱 전략(Caching Strategies): 성능 최적화의 꽃
캐시를 어디에, 어떻게 배치해야 할까? Cache-Aside, Read-Through, Write-Back 등 5가지 핵심 패턴과 캐시 스탬피드(Thundering Herd) 현상을 막는 방법을 상세히 다뤄봤습니다.
System DesignBackendPerformance
→