오늘 <대규모 서비스를 지탱하는 기술> 책 스터디를 마지막으로 진행하면서 서평을 작성했다. 책은 2023년 5월 13일부터 2023년 6월 11일까지 한 달 간 읽었다.
이 책은 하테나라는 회사에서 인턴에게 교육을 해주면서 회사의 데이터와 경험으로 강의를 진행해준 내용을 담고 있다. 책에서는 데이터 구조, 캐시와 분산, 인덱싱, 확장성과 다중성, 가상화 등 대규모 서비스로 고민해볼 많은 요소를 담고 있다.
대규모는 직접 경험해보지 못하면 뜬구름 잡기같은 느낌이 강한데, 예시와 함께 회사에서는 어떻게 아키텍처를 구성하고 있는지 설명해주니 더 이해가 잘됐다. 이 책이 다른 책들과 다른 점은 과제를 제공한다는 것인데, 실제로 이 과제를 수행하면 많이 배울 수 있을 것 같다. 나는 책을 읽기만해서 과제를 해보지는 않았다.
대규모는 처음부터 고려해서 작업하는 경우가 많지 않고, 서비스가 작은 경우에 미리 작업하는 것은 오버엔지니어링이 될 수도 있다. 그렇지만 아예 확장성을 염두하지 않고 작업하면 갑자기 사용량이 증가하거나 대규모 서비스를 운용해야할 때 곤란해질 수 있다. 책에는 이런 말이 나온다.
대규모 웹 애플리케이션을 개발, 운용하려고 하면 이론과 실전이 모두 필요하다.
결국 이런 문제는 결국 직접 겪어보면서 배우고 성장할 수 있다. 하지만 문제의 상황을 겪게될 것을 인지하고 해결방법을 미리 고민하면서 제품을 만드는 것과 일단 그냥 돌아가게만 만드는 것에는 차이가 있을 것이다.
프론트엔드 엔지니어로서 이 책을 읽으면서 배울 점은 캐시를 잘 활용하기, 확장을 전제로 설계하기, 효율적인 알고리즘 사용하기, 시스템 안정화 등이 있다고 생각한다. 대규모 서비스 관련해서는 백엔드에서 많은 노력이 필요하다는 것을 느꼈다. 하지만 이제는 프론트엔드도 백엔드 기술을 알아야하는 시대! 대규모 서비스를 관리해본 경험과 기술적인 지식은 강점이 될 수 있을 것이다.
중간에 스터디에 많이 빠져서 많은 대화를 나누지는 못했지만 그 중에서도 흥미로웠던 내용들은 아래와 같다. (스터디 5번 중에 2번밖에 참석을 안했다 헉...)
- 분산 처리는 AWS가 해주는 부분이 많지만 기본적인 지식이 있어야 AWS를 잘 활용할 수 있다
- 부하를 줄이기 위한 캐싱 활용이 중요하다
- 대부분 회사에서 파티셔닝을 하고 있고 읽기, 쓰기 DB를 따로 쓴다
- 실전에서는 JOIN을 잘 안쓰고 FK도 사용하지 않는다
책을 읽고 스터디에 참여하면서 느낀 점은 대규모 서비스를 관리하려면 기본기가 탄탄해야 한다는 것이다. 컴퓨터 구조, 데이터베이스, 알고리즘, 운영체제, 네트워크 등 CS 지식들을 잘 알아야 문제를 이해하고 해결할 수 있다. CS 공부 열심히 하고 책 많이 읽고 실전 경험을 잘 쌓아봐야겠다.
'코딩 > 책책책' 카테고리의 다른 글
[이너게임] 2. 이너게임과 대기업의 만남 (1) | 2023.12.26 |
---|---|
[이너게임] 1. 이너게임의 탄생과 확산 (4) | 2023.11.30 |
면접을 위한 CS 전공지식 노트 서평 (0) | 2023.05.01 |
표현적 글쓰기 서평 (0) | 2022.09.15 |
프로그래머의 뇌 책 서평 (0) | 2022.03.30 |