[대규모 시스템 설계 기초] 2장,3장 - 개략적인 규모 추정 / 시스템 설계 면접 공략법
책/대규모 트래픽 설계 기초

[대규모 시스템 설계 기초] 2장,3장 - 개략적인 규모 추정 / 시스템 설계 면접 공략법

728x90
반응형

 

개략적인 규모 추정을 위해서는 규모 확장성 표현에 능숙해야 한다.

  • 2의 제곱수
  • 응답 지연(latency) 값
  • 고가용성

 

2의 제곱수

  • 데이터 최소 단위 : 1 byte = 8bit
  • ASCII 문자 하나 메모리 크기 : 1 byte

 

모든 프로그래머가 알아야 하는 응답지연 값

  • 메모리는 빠르지만 디스크는 아직 느리다.
  • 디스크 탐색(seek) 가능한 피하기
  • 단순한 압축 알고리즘은 속도가 빠르다.
  • 데이터를 인터넷으로 전송하기 전에 가능하면 압축하기
  • 데이터 센터는 여러 지역에 분산되어 있고, 센터들 간에 데이터를 주고 받는 시간은 꽤 걸린다.

 

가용성에 관계된 수치들

  • 고가용성(high availability) : 시스템이 오랜 시간동안 지속적으로 중단 없이 운영될 수 있는 능력
  • SLA(Service Level Agreement) : 서비스 사업자(service provider)와 고객 사이에 맺어진 합의
    • 서비스 사업자가 제공하는 서비스의 가용시간(uptime)이 공식적으로 기술되어 있다.

 

예제 : 트위터 QPS와 저장소 요구량 추정

  • 월간 능동 사용자 3억명
  • 50% 사용자가 트위터를 매일 사용
  • 평균적으로 각 사용자는 매일 2건의 트윗을 올린다.
  • 미디어를 포함하는 트윗은 10%
  • 데이터 5년 보관

 

미디어 저장을 위한 저장소 요구량

  • 1.5억 X 2 X 10% X 1MB = 30TB
  • 5년 미디어 보관을 위한 저장소 요구량 : 30TB X 365 X 5 = 약 55PB

 


3장 - 시스템 설계 면접 공략법

 

효과적 면접을 위한 4단계 접근법 (면접관과 인터렉티브하게 풀어나가라)

 

1단계 : 문제 이해 및 설계 범위 확정

  • 생각 없이 바로 답을 내놓지 않는다.
  • 요구사항을 정확히 이해하고, 생각하고 질문하여 답을 한다.
  • 필요 질문 예시 
    • 구체적으로 어느 기능을 만드는지?
    • 제품의 사용자 수는?
    • 회사의 규모는 얼마나 빨리 커질 것으로 예상하는지? x 년 이후의 규모는?
    • 회사의 기술 스택은 무엇인지?
  • 예제
    • 모바일 앱, 웹 앱 어느쪽 지원?
    • 가장 중요한 기능은?
    • 뉴스 피드는 시간 역순인지, 정렬기준이 있는지
    • 한 사용자가 최대 몇명의 사용자와 친구를 맺을 수 있는지?
    • 사이트로 오는 트래픽 규모는?
    • 피드에 이미지, 비디오도 가능한지? 아니면 그저 텍스트인지?

 

2단계 : 개략적인 설계안 제시 및 동의 구하기

  • 핵심 컴포넌트를 포함하는 다이어그램을 그린다.
    • 클라이언트(모바일/웹), API, 웹, 서버, 데이터 저장소, 캐시, CDN, 메시지 큐 등등
  • 최초 설계안이 시스템 규모에 관계된 제약사항을 만족하는지 개략적으로 계산하기
  • 예제 - 뉴스 피드 시스템 설계
    • 피드 발행 : 사용자가 포스트를 올리면 관련된 데이터가 캐시/데이터베이스에 기록되고, 해당 사용자의 친구 뉴스피드에 뜬다.
    • 피드 생성 : 어떤 사용자의 뉴스 피드는 해당 사용자 친구들의 포스트를 시간 역순으로 정렬하여 만든다.
     

 

 

 

3단계 : 상세 설계

  • 설계 대상 컴포넌트 사이의 우선순위 정하기
  • 시스템 성능 특성에 대한 질문에는?
    • 시스템의 병목 구간이나 자원 요구량 추정치에 초점 맞추기
  • 단축 URL 생성기 설계 문제에는?
    • 해시 함수 설계를 구체적으로 설명하기
  • 채팅 시스템에 대한 문제는?
    • 어떻게 하면 지연시간(latency)를 줄이고 사용자의 온/오프라인 상태를 표시할 것인지
  • 예제 - 뉴스 피드 시스템
    • 피드 발행
    • 뉴스 피드 가져오기

 

4단계 : 마무리

  • 오류가 발생하면 무슨 일이 생기는지(서버 오류, 네트워크 장애 등)
  • 운영 이슈 논의 - 메트릭은 어떻게 수집하고 모니터링과 로그는 어떻게? 배포는 어떻게 할 것인지?
  • 규모 확장을 어떻게 해나갈 것인지? 
728x90
반응형