본문 바로가기
Boaz/Real-time Data and Kafka

[대규모 실시간 데이터 처리 #2] 대규모 시스템 설계 기초. 2장~3장 개략적인 규모 추정, 시스템 설계 면접 공략법

by 남디윤 2024. 7. 28.

보아즈 멘멘 스터디 중 기록한 내용입니다.

목차

2장 개략적인 규모 추정

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

 

2장 개략적인 규모 추정

태그: 대규모 시스템 설계 기초
주차: 1

 

개략적인 규모 추정 back-of-the-envelope estimation

  • 보편적으로 통용되는 성능 수치상에서 사고 실험 thought experiments → 추정치 계산
  • 어떤 설계가 요구사항에 부합할 것인지
  • 규모 확장성 표현 이해 필요

 

2의 제곱수

  • 데이터 볼륨의 단위를 2의 제곱수로 표현
  • 최소 단위 1바이트, 8비트 구성
    • ASCII 문자 하나 차지하는 메모리 크기: 1바이트

 

응답지연 값

  • 구글의 제프 딘: (2010년) 컴퓨터에서 구현된 연산들의 응답지연 값 공개
  • 결론
    • 메모리는 빠르지만 디스크는 느리다
    • 디스크 탐색은 가능한 피하라
    • 단순한 압축 알고리즘은 빠르다
    • 데이터를 인터넷으로 전송하기 전에 가능하면 압축하라
    • 데이터 센터는 보통 여러 지역 region에 분산, 센터들 간에 데이터를 주고 받는 데에는 시간이 소요된다.

 

가용성에 관계된 수치들

  • 고가용성 high availability: 시스템이 오랜 시간 동안 지속적으로 중단 없이 운영될 수 있는 능력
  • 아마존, 구글, 마이크로소프트와 같은 사업자는 99% 이상의 SLA 제공
    • SLA: Service Level Agreement. 서비스 사업자가 제공하는 서비스의 가용시간 uptime 이 기술되어 있음
    • 관습적으로 9를 사용해 표시. 9가 많을수록 좋음

 

 

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

태그: 대규모 시스템 설계 기초
주차: 1

효과적 면접을 위한 4단계 접근법

 

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

  • 바로 답하기 보다는 깊이 생각하고 질문하여 요구사항과 가정들을 분명히 하라.
  • 엔지니어가 가져야 할 가장 중요한 기술:
    • 올바른 질문을 하는 것.
    • 적절한 가정을 하는 것.
    • 시스템 구축에 필요한 정보를 모으는 것

 

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

  • 면접관과 협력하여 진행
  • 설계안에 대한 최초 청사진 제시, 의견 구하기
  • 핵심 컴포넌트를 포함하는 다이어그램 그리기
  • 최초 설계안이 시스템 규모에 관계된 제약사항들을 만족하는지

 

3단계. 상세 설계

  • 설계 대상 컴포넌트 사이의 우선 순위 정하기
  • 시간 관리에도 주의하기
    • 불필요한 세부사항에 시간 소요 x

 

4단계. 마무리

  • 개선점 질문 시, 비판적 사고 능력을 보이자. 완벽한 설계 x
  • 설계를 다시 한 번 요약해주는 것도 도움이 될 수 있다
  • 오류 발생 시 무슨 일이 생기는지를 따져보는 것도 좋다
  • 운영 이슈도 논의할 가치가 있다
  • 향후 규모 확장 요구에 어떻게 대처할 것인지도 흥미로운 주제
  • 시간 여유 시, 세부적인 개선사항들 제안