여자친구와 교보문고에서 독서를 하며 건강한 데이트를 하고있다가 제목이 궁금증을 생기게 하여 펼쳐본 책이었습니다.
간단하게 읽어보려 했지만, 정신없이 구매까지 이어지며 완독까지 해버렸네요.
이직을 준비하면서 많은 채용공고에서 주니어 개발자들에게 원하는 기술적 능력치중 하나인 '대규모 트래픽 경험'
많은 기술블로그를 보기도 하면서 이럴땐 이렇게 하구나를 느꼈지만 항상 느낀 감정은 이건 'How-to(사용 방법)'에서 끝나는 아쉬움이 있었습니다.
단순히 기능을 구현하는 '애플리케이션 개발자'에서, 전체 구조를 이해하는 '엔지니어'로 시야를 넓혀준 책입니다.
들어가며, 책의 초반부는 대규모 데이터와 트래픽을 처리하기 위한 가장 기초적이면서도 중요한 전략을 다룹니다.
스케일 업(Scale-up) vs 스케일 아웃(Scale-out)
- 스케일 업: 더 비싼 CPU, 더 많은 RAM을 가진 장비로 교체하는 것. 가장 쉽지만 물리적/비용적 한계가 명확합니다.
- 스케일 아웃: 저렴한 서버 여러 대를 연결해 성능을 높이는 것. 이 책의 핵심입니다.
서버를 횡적으로 늘리기(Scale-out) 위해서는 로드 밸런서(Load Balancer)가 필요하고, 각 서버가 상태를 공유하지 않는 Stateless 아키텍처가 전제되어야 함을 배울 수 있었습니다.
OS와 하드웨어의 기분을 이해하자
이 책이 여타 기술 서적과 다른 점은 '기본기'를 강조한다는 점입니다. 특정 프레임워크 사용법이 아니라, OS가 메모리와 디스크를 어떻게 다루는지 설명합니다.
- 메모리는 디스크보다 압도적으로 빠르다: 너무나 당연한 말 같지만, 대규모 시스템에서의 성능 튜닝은 결국 "어떻게 하면 디스크 I/O를 줄이고 메모리를 활용할 것인가?"로 귀결됩니다.
- 캐시(Cache)의 마법: DB 부하를 줄이기 위해 OS의 파일 시스템 캐시 원리를 이해하고, 리버스 프록시나 로컬 캐시를 적재적소에 배치하는 것이 얼마나 중요한지 깨달았습니다.
영원한 병목, 데이터베이스(DB) 길들이기
웹 애플리케이션의 성능 저하는 8할이 데이터베이스에서 발생합니다. 책에서는 수천만 건의 데이터가 쌓였을 때 RDBMS가 겪는 고통과 이를 해결하는 기법들을 상세히 소개합니다.
인덱스(Index)는 만능이 아니다
인덱스는 탐색 속도를 높여주지만, 쓰기(Write) 성능을 떨어뜨립니다. 데이터 구조(B-Tree)를 이해하고 상황에 맞는 적절한 인덱싱 전략이 필요합니다.
데이터 분산의 기술
결국 단일 DB로는 한계가 옵니다.
- 파티셔닝(Partitioning): 테이블을 쪼개서 관리
- 샤딩(Sharding): 데이터를 여러 물리적 서버에 분산 저장
- 리플리케이션(Replication): 읽기 전용 복제본(Slave)을 두어 읽기 부하 분산
이러한 기법들이 어떤 상황에서, 어떤 트레이드오프(Trade-off)를 가지고 적용되는지 배울 수 있었습니다.
낡았지만 변하지 않는 가치
이 책은 출간된 지 시간이 꽤 흘렀습니다. 책에 나오는 언어나 구체적인 도구(Perl, 구버전 MySQL 등)는 지금의 트렌드(Java, Spring Boot, Docker, K8s 등)와 다를 수 있습니다.
하지만 "도구는 변해도 원리는 변하지 않는다"는 말이 있듯, 대규모 트래픽을 처리하는 아키텍처의 본질은 그대로입니다.
OS의 원리, 알고리즘, 네트워크의 기본기는 10년 뒤에도 유효할 것입니다.
오히려 최신 기술의 화려함에 가려져 있던 '엔지니어링의 본질'을 다시금 확인하는 계기가 되었습니다.
'3. 서재' 카테고리의 다른 글
| [DevFest Incheon 2025 후기] 불안을 이기는 '긴 호흡', 그리고 AI의 눈과 귀가 된 WebRTC (1) | 2025.12.07 |
|---|---|
| [포스팅 리뷰] Simple code scales better than "scalable" code. (0) | 2025.11.23 |
| [OpenSource] WET vs DRY(feat 오픈소스기여) (1) | 2025.07.13 |
| [독서] 도메인 주도 설계 (0) | 2024.09.06 |
| [독서] Clean Code (0) | 2024.01.28 |