ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 가상 면접 사례로 배우는 대규모 시스템 설계 기초
    후기/Book Review 2022. 12. 10. 23:03

    겉표지가 너무 맨진맨질 반사되서 벗기고 찍음

     

      최근에 출판되었다는 걸 본 기억이 있었다. 그러던 중 대규모 시스템은 어떻게 설계하는지 궁금해서 사서 읽어보게 되었다.

     


     

    목차

    • 1장 사용자 수에 따른 규모 확장성
    • 2장 개략적인 규모 추정
    • 3장 시스템 설계 면접 공략법
    • 4장 처리율 제한 장치의 설계
    • 5장 안정 해시 설계
    • 6장 키-값 저장소 설계
    • 7장 분산 시스템을 위한 유일 ID 생성기 설계
    • 8장 URL 단축기 설계
    • 9장 웹 크롤러 설계
    • 10장 알림 시스템 설계
    • 11장 뉴스 피드 시스템 설계
    • 12장 채팅 시스템 설계
    • 13장 검색어 자동완성 시스템
    • 14장 유튜브 설계
    • 15장 구글 드라이브 설계
    • 16장 배움은 계속된다

     


     

      몇 년 전에 페이스북 같은 (그 때는 아직 페이스북이 시들하지 않던 시절이었다) 글로벌 소셜 네트워크 서비스는 어떻게 만드는지 얘기를 나눈 기억이 있다. 왜 팔로워 수를 5000명으로 제한을 뒀을까에 대한 이야기도 했었던 것 같고... 우리가 평소에 유용하게 사용하는(유료 혹은 무료) 글로벌 서비스들의 뒷단은 어떻게 되어 있을 지 한 번쯤 궁금해 보았을 것이다. 물론 "{서비스명} system design" 혹은 "{서비스명} architecture" 같이 구글링을 하면 잘 나오긴 하지만 일부러 찾아가서 영어를 읽어 보는 건 생각보다 수고롭다. 그런 수고를 덜어주는 좋은 책이라고 생각한다. 

     

      단일 웹서버부터 시작해서 데이터베이스, 로드밸런서, CDN, 캐시 등 점차 시스템을 분리하고 확장해 나가는 것부터 시작한다. 일반적으로 알아두면 좋을 응답지연 값 (사진1)이나 SLA에서 말하는 퍼센트가 1년에 어느정도의 수치인지(사진2) 등을 알려준다.

     

    사진1. 응답지연 시간 표
    사진2. 가용율에 따른 장애시간 표

     

      책 내용 답게 시스템 디자인 관련 기술 면접에서 어떤 식으로 하면 좋을 지 등을 알려주는 부분도 있다. 단계별로 살펴보면 아래와 같다.

    1. 문제 이해 및 설계 범위 확정
    2. 개략적인 설계안 제시 및 동의 구하기
    3. 상세 설계
    4. 마무리

    아무리 훌륭한 엔지니어라고 하더라도 면접자와 커뮤니케이션이 되지 않아서 문제의 의도에 완전히 벗어난다면 패스할 확률이 높진 않을 것이다. 제한된 시간 내에 이루어지는 면접이니 면접관과 잘 이야기 하면서 진행해 나가는 것이 핵심 포인트 같다.

     

      뒤에는 웹 크롤러, 알림 시스템, 뉴스 피드 시스템, 채팅 시스템, 검색어 자동완성 시스템 등 보편적인 서비스 설계 내용과  유튜브, 구글 드라이브 같은 서비스 까지 어떻게 설계할 수 있을 지 다뤄본다. 물론 다년간의 운영을 바탕으로 안정적인 서비스를 해오고 있는 서비스들의 실제 구현은 훨씬 복잡하겠지만 그 시작점은 도움이 된다. 책에서 다루는 내용이 많다보니 각 내용들의 깊이가 깊지는 않은 편인 것 같은데, 부족한 내용들은 더 찾아보고 공부하면 될 것 같다.

     

      처음의 간단한 시스템부터 시작해서 최종 단계에 이를 때까지 계속 시스템 구조도를 보여주는 부분이 좋은 것 같다. 글로 이런 이런 모듈이 추가되고 해야합니다 라고 말하는 것보다 그림으로 단계적으로 계속 보여주니 이해가 더 잘 된다.

     

      면접을 준비하는 상황이 아니라 하더라도 백엔드 개발자라면 한 번쯤 읽어보면 좋을 것 같다. 일하면서 비슷한 종류의 시스템 설계를 하게 된다면 분명 조금이라도 참고가 되고 도움이 될 것이다.

     

     

    가상 면접 사례로 배우는 대규모 시스템 설계 기초, 알렉스 쉬(인사이트)

     

    가상 면접 사례로 배우는 대규모 시스템 설계 기초 - YES24

    “페이스북의 뉴스 피드나 메신저, 유튜브, 구글 드라이브 같은 대규모 시스템은 어떻게 설계할까?”IT 경력자라도 느닷없이 대규모 시스템을 설계하려고 하면 막막하다고 느낄 수 있다. 특히나

    www.yes24.com

     

    댓글

Designed by Tistory.