본문 바로가기

책과 강연/독후감 - 개발

[도서 리뷰] 가상 면접사례로 배우는 대규모 시스템 설계 기초

 

가상 면접 사례로 배우는 대규모 시스템 설계 기초 | 알렉스 쉬 - 교보문고

가상 면접 사례로 배우는 대규모 시스템 설계 기초 | 페이스북의 뉴스 피드나 메신저,유튜브, 구글 드라이브 같은 대규모 시스템은 어떻게 설계할까? IT 경력자라도 느닷없이 대규모 시스템을 설

product.kyobobook.co.kr

 

이번에도 지인이 추천해주셨고, 이전 프로젝트를 진행하면서 시스템 자체를 설계하는 능력이 필요하다 느꼈다.

솔직히 말하면 나는 "DB- 백엔드 - 프론트엔드" 밖에 몰라서, 이전 프로젝트에서 너무 고생을 많이 했다.

 

한줄평 : 반드시 읽어야하는 필수적인 책. 시스템 설계, 구조, 규모에 대해서 매우 읽기 쉽게 설명해주신다.

 

[책의 핵심 내용]

시스템 설계 청사진

위 내용은 책에서 제공하는 청사진이다. 청사진에 있는 모든 내용을 얇게 배우는 데, 그 중 아래 공통적인 내용과 도메인의 특성을 잘 조합해서 서비스를 설계하는 것이 이 책의 핵심 내용이다.

 

[공통 내용]

- 수직적/ 수평적 확장 

- 캐시

- CDN

- 큐 / 메시지 큐

 

책의 각 챕터는 모의 면접(가상 면접)을 보는 거라 가정하고 진행한다. 한 챕터만 간단하게 정리를 진행한다.

 

1. 기술에 대한 간단한 소개

비디오 플랫폼 유튜브를 설계한다.

 

[유튜브 필요 요건]

  - MAU 20억

  - 비디오 플레이 횟수 : 50억

  - Creater : 5000만명

  - ....

 

2. 가상 면접 진행

제약조건에 대해서 소개 및 구체화를 대화 형식으로 진행한다.

- 회사 : 유튜브 필요 요건에 대한 설명

- 면접자 : 비디오 크기 등 제한 조건 구체화 (비디오 최대 크기는 1GB)

- 면접자 : 암호화, 기존 클라우드 서비스 사용 가능 여부 구체화

 

3. 기초 설계 진행

유튜브 설계

- 필요한 요소들을 단순 배치한다. (캐시도 필요하고, DB도 필요하고 등등)

- 책의 저자가 생각할 때, 필요한 부분을 개선하고 부연 설명한다. (캐시에서 00 요소도 더 고려되어야한다. 이 서버는 분리되면 좋다 등등)

 

4. 상세 설계 진행

각 파트에 더욱 상세한 설계를 진행하거나 조건을 추가한다.

 

비디오 트랜스 코딩 아키텍처
페이스북의 DAG 스케줄러

[비디오 트랜스 코딩 서버 상세 설계]

- 호환성을 고려하여 여러 포맷으로 인코딩하여 저장해야한다.

- 대역폭에 따라서, 고화질 / 저화질 비디오 재생을 나눠서 보낸다.

- 모바일은 네트워크 상태가 자주 바뀌므로 수시로 화질을 변경함이 바람직하다.

- 인코딩 알고리즘을 선정한다.

 

그 후, 위 사진처럼 하나의 서버를 더 자세하게 해야할 일로 분류하며 구체화해나간다. (트랜스코딩 서버 > 트랜스 코딩 서버 아키텍처 > DAG 스케줄러, ....)

상황에 따른 최적화

반드시 고려해야하는 부분이 모두 고려되었다면, 최적화나 상황에 따른 조언을 해준다. 위 사진은 속도를 최적화하기 위하여 메시지큐를 각 과정에 도입하여 느슨한 시스템을 만드는 예시이다.

 

5. 마무리 

이 책에서 다루지 않은 비슷한 내용들을 공유한다.

- 라이브 스트리밍

- 저작권 위반 비디오를 트랜스파일 서버에서 잡아내기

 

[ 평가 ]

장점

- 쉬운 단어와 문장으로 초보자도 읽기 좋다.

- 큰 규모의 설계를 기준으로 설명해주기 때문에 인사이트를 얻기 좋다.

- 시스템 설계에 대해서 배울 수 있으며, 처리율 제한 장치 등 생소한 시스템에 대해서도 많이 배울 수 있다.

 

단점

- 없다.

 

결론

- 이 책을 강하게 추천한다.

- 이 책이 "기초"인 이유는 실제 구현에서 고려해야하는 것이 너무나 많고, 복잡하기 때문이라 생각한다. 더 많이 공부하고 성장해야할 것이다.

- 직접 이런 설계를 다 해볼 수 있다면 정말 좋은텐데, 어렵겠지...

- 작년에 2도 나와서 기대 중이다. 결제모듈 시스템이 있어서 더 기대된다.