일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 스프링부트
- aws
- 브라우저 단축키
- 판교퇴근길밋업
- 코드트리
- 알고리즘사이트
- 알고리즘초보
- 기능 많은 브라우저
- 코딩
- 가발자 인사이드아웃
- 오블완
- 소프트웨어 지표
- 성능테스트
- 편한 즐겨찾기 편집
- 알고리즘
- 프로그래밍
- spring boot
- ui 커스텀
- mac 화면분할
- 스카이라인 열차
- Java
- 코코테라스
- JMeter
- 커스텀단축키
- 초년생
- 조가사키 해안
- 대규모 시스템 설계
- 알고리즘 추천
- 자동화
- 알고리즘분류
- Today
- Total
영감을 (inspire) 주고픈 개발 블로그
개발 책 추천: 가상 면접 사례로 배우는 대규모 시스템 설계 기초2 본문
이번 독서 스터디에선 가상 면접 사례로 배우는 대규모 시스템 설계 기초2 를 완독했습니다. 최근에 개발책들이 잘 나오고 있는데 이 책은 그 중에서도 내용도 좋고 내용 전달 방식도 좋은 것 같아요
기술이나 이론을 설명하는 책은 많아요. 그러나 다양한 시스템을 설계해보는 책은 그렇게 많지 않습니다.
이 책은 실제 시스템을 설계하기 위해 이야기를 나누면서 요구사항을 정리하고 요구되는 대규모 시스템에 맞는 기술과 상황에 맞게 Trade-off 를 생각해볼 수 있는 대해 잘 정리된 책입니다.
책의 구성이 각 챕터마다 동일하게 되어 있어 새롭고 낯선 주제라도 이해하고 생각하기 좋습니다.
각 챕터는 아래와 같은 구조를 가집니다.
- 1단계 문제 이해 및 설계 범위 확정
- 2단계 개략적 설계안 제시 및 동의 구하기
- 3단계 상세 설계
- 4단계 마무리
- 요약
처음 1단계 내용을 읽고 놀랐습니다. 면접관과 지원자가 이야기를 나누는 플롯인데 다루는 크기가 생각보다 많았거든요
8장 분산 이메일 서비스에 부분 1단계의 일부입니다
지원자: 얼마나 많은 사람들이 사용하는 제품입니까?
면접관: 10억명입니다.
...??
다른 장에서도 10억건의 광고 클릭과 2백만 회 개제에 대한 데이터 크기를 다루기도 합니다.
1권에서는 이런 건수에 대한 저장소 크기나 QPS(Query Per Second) 등을 계산하는 방법도 알려주는데 2권에선 그런 내용은 생략되어 있습니다.
그리고 기능적인 부분에 대해 지원자-면접관 형태로 이야기를 나누면서 요구사항을 확정하고 Trade-off 에 대해 이야기를 나눕니다.
그리고 면접에 이야기 나눈 부분에 대해 기능 요구사항과 비기능 요구사항으로 나뉘어서 정리를 하고 개략적 추정을 진행합니다
- 기능 요구사항은 주제에 관련된 필수 기능
- 비기능 요구사항은 시스템 가용성과 지연시간, 멱등성 등과 관련된 내용입니다
- 개략적 추정은 데이터량, DAU, QPS, 저장소 크기 등을 고려하여 계산합니다
회사에서 인프라 신청 등을 할 때 필수적으로 필요한 부분인데 이런 부분을 알려주는 곳이 별로 없는데 이 책에서는 계속 이런 요구사항 정리와 개략적 추정을 통해 트레이닝이 됩니다.
2단계 개략적 설계안 제시 및 동의 구하기에서 기능 요구사항에 대한 구현을 다룹니다 API나 데이터 모델, 개략적 설계안 등을 정하는데 설계안에선 이 시스템을 구성하기 위해 어떤 데이터베이스를 고를지 어떤 도구를 통해 아키텍처를 설계할지에 대한 내용이 있어서 기술적인 부분도 공부가 많이 됩니다.
3단계 상세설계 는 2단계에서 나아가 비기능 요구사항까지 고려해서 선택할만한 시스템에 대해 알려주고 각 시스템에 대한 장단점을 정리하고 기술을 고르는 이유를 정합니다. 전체적인 프로세스와 그에 맞는 전체적인 설계도도 완성하고 대안적인 시스템에 대한 점도 정리해줍니다.
4단계 마무리 에서는 전체적인 정리를 해줍니다. 나중에 책을 다시 읽을 때 마무리 부분을 보면서 다시 리마인드하면서 공부하기 좋을 것 같습니다.
그동안 일을 하면서 Trade off 로 버렸던 부분도 있었는데 이 책을 보면서 새로 알게된 부분도 많습니다. 10장의 실시간 게임 순위표에서 레디스 sorted set 을 통한 실시간 순위 정하기 같은 내용이 그랬습니다.
책의 구성 뿐아니라 경험하기 어려운 새롭고 다양한 주제에 대해 재밌게 공부할 수 있는 책이라 추천드립니다.
'후기 > 컴퓨터 관련 책' 카테고리의 다른 글
코어 자바 9 (0) | 2020.09.03 |
---|---|
Node.js 마이크로 서비스 코딩공작소 (0) | 2018.04.30 |
웹 개발을 하려면 공부해야할 게 너무 많아 - Learning React 를 읽고 (0) | 2018.04.14 |
[컴퓨터 서적 리뷰]맥북에 겁 내는 사람을 위한 안내서 : 맥 쓰는 사람들과 함께하는 macOS 하이 시에라 리뷰 (0) | 2018.03.08 |
[독서] 알고리즘 트레이닝 (원저 Competive Programming) (0) | 2017.07.03 |