1. 왜 이 책을 읽게 되었나?
최근에 회사 SW의 DB 구조를 개편하면서 좀 더 넓은 시야에서 시스템 개편을 계획하고 싶다는 생각이 들었다. 이 책의 저자는 트위터, 애플 등 글로벌 대기업에서 일한 경력을 가지고 있기에 이렇게 큰 회사들은 어떤 식으로 문제에 접근하는지 노하우를 알고 싶었다. 확장 가능한 (scalable) 시스템을 만드는 것이 SW 엔지니어로서 중요한 자질로 평가받는 요즘, 나도 최소한 어떻게 세상이 돌아가고 있는지는 알아야겠다는 생각도 들었다.
또 다른 이유로는 주변 사람들이 있는데, 현재는 마이크로소프트 Azure팀에서 일하고 있는 친구가 System Design Interview도 준비하고 있었던 대학 시절이 떠올라서 나도 지금이나마 좀 준비를 해보자라는 생각이었고, 회사 동료분께서도 추천하셨기 때문에 고민 없이 책을 읽기 시작했다.
2. 책의 구성 및 특징
이 책은 1, 2장이 가장 중요한데 scalability에 대한 내용의 핵심을 담고 있다. 그 뒤로는 특정 시스템을 만들 때 고려해야 할 방법론을 소개해주기에 3장 이후로는 각각의 장들이 어느 정도는 독립적이다. 그래서 읽고 싶은 장별로 읽어도 무관하다. 그래도 5장 '안정해시설계'까지는 뒷장에서 반복적으로 나오는 내용을 다루고 있기 때문에 내 개인적인 추천은 5장까지는 순서대로 읽고 그 뒤부터는 자유롭게 흥미로운 주제 혹은 본인에게 필요한 주제를 골라 읽으면 되겠다.
이 책이 좋은 점은 레고 블럭을 쌓듯이 개념을 쌓아간다는 점이다. 그래서 초반 장에서는 세부적으로 다루던 것들이 나중 장에서는 그냥 다이어그램 상에서 네모 하나로 표시되는 식이다. 덕분에 각 장에서 집중해야 할 것들에 집중할 수 있게 만들어 주는 게 이 책이 가지고 있는 강점 중 하나다.
3. 인상 깊었던 내용
책 전반에서 느낄 수 있는건데, 예상 트래픽 규모가 어마어마하다. 보통 천만 단위이기 때문에 이런 수준의 시스템 설계가 필연적이구나라는 것을 느끼게 된다. 그렇기에 정말 Backend developer, programmer이기보다 Engineer라는 표현이 어울리는 거구나 싶다. 개인적인 추측으로는 대기업에서 일한다고 해서 모두가 이런 scalability에 빠삭하지 않을 것 같긴 하지만, 내가 개발하고 있는 제품의 영향력이 어마어마하구나라는 걸 느낀다면 대충 코딩하는 일도 없을 거 같다.
가장 인상 깊었던 장은 1장 '사용자 수에 따른 규모 확장성'과 5장 '안정해시설계'이다. 특히 안정해시는 여태까지는 생각해 본 적 없는 알고리즘(?)이라 신선한 충격이었다.
4. 아쉬웠던 점
모든 챕터가 균등한 깊이로 설명을 하지는 않는다. 목차에서도 알 수 있다시피 각 장마다 페이지 차이가 좀 난다. 이 책이 면접 준비용이라는 것을 감안했을 때는 본인이 좀 더 이해를 하고 싶은 주제에 대해서는 추가적인 자료 조사와 공부가 필요할 것이다. 기대했던 장에서 생각보다 내용이 없을 수 있다는 점만 알아두시라... 하지만 그렇기에 부담감 없이 책을 볼 수 있어서 좋았다.
5. 이 책이 추천되는 대상
프로그래밍을 몇 년 해보고 제품도 몇 번 서비스 해본 사람이라면 한 번쯤 읽어보면 좋은 책이다. 좀 더 넓은 시야로 기술적인 관점에서 제품을 바라보게 해 줄 것이다.
6. 읽고 나서의 변화
이런 책들을 읽다보면 Computer Science를 사랑하고, 꾸준히 공부해야 한다는 생각이 절로 들게 된다. 이런 책들은 한 번만 읽으면 안 되고 여러 번 읽어보면서 PoC도 해보고, 책에서 나온 개념들을 내 것으로 만드는 시간을 만들어야 한다. JSON 상하차도 나쁘진 않지만, 설계하고 개선하는 작업이 진정으로 내가 SW Engineer임을 느끼게 만드는 것 같다. 앞으로도 꾸준히 공부하는 모습을 보여주겠다.
'후기' 카테고리의 다른 글
2025년 내가 쓰는 맥 필수 어플 (0) | 2025.01.11 |
---|---|
아이폰 12 패널과 배터리 교체 후기 (0) | 2024.08.05 |
월가아재의 제2라운드 투자 수업을 읽고... (0) | 2023.06.27 |
tldr; 사용기 (0) | 2022.03.19 |