융무의 기술블로그
article thumbnail

이 책은 도메인 주도 설계 첫걸음과 같이 추천을 받아서 읽게 된 책입니다.

이 책은 12가지의 시스템 설계에 대해서 문제 이해 및 설계 범위 확정, 개략적인 설계안 제시 및 동의 구하기, 상세 설계, 마무리라는 4단계 접근법을 통해서 공략하고 있습니다.

책을 읽으면서 시스템에 대해서 많은 생각이 들었고 아키텍처 그림과 실제 시스템 디자인 면접을 보는 듯한 느낌이 좋았습니다.

이 책의 목적은 시스템 설계 면접 문제를 푸는 데 안정적으로 적용할 수 있는 전략을 제시하는 것으로 규모 확장성을 갖춘 시스템을 만들기 위 해 필수적인 지식도 제공하고 있습니다. 이 책에서는 시스템 설계 면접 문제들을 공략하는 단계적 접근법도 다루고 있어서 해당 접근법을 실제로 따라 하면서 배울 수 있도록 많은 예제를 상세한 설명과 함께 제공하고 있어서 좋았습니다.

  • 12가지의 시스템 설계는 처리율 제한 장치의 설계, 안정 해시 설계, 키-값 저장소 설계, 분산 시스템을 위한 유일 ID 생성기 설계, URL 단축기 설계, 웹 크롤러 설계, 알림 시스템 설계, 뉴스 피드 시스템 설계, 채팅 시스템 설계, 검색어 자동완성 시스템, 유튜브 설계, 구글 드라이브 설계입니다.

다음은 몇 가지 시스템 설계의 아키텍처를 도식화한 것입니다.

  • 데이터베이스 샤딩을 적용한 아키텍처
    • 데이터베이스에 대한 부하를 줄이기 위해 굳이 관계형 데이터 베이스가 요구되지 않는 기능들은 NoSQL로 이전
  • 피드 발행
  • 뉴스 피드 가져오기
  • 분산 키-값 저장소의 쓰기,읽기 경로
    • 쓰기 경로
      • 쓰기 요청이 커밋 로그(commit log) 파일에 기록됨
      • 데이터가 메모리 캐시에 기록됨
      • 메모리 캐시가 가득차거나 사전에 정의된 어떤 임계치에 도달하면 데이터는 딧드크에 있는 SSTable에 기록됨. SSTable은 Sorted-String Table의 약어로 <키,값>의 순서쌍을 정렬히 리스트 형태로 관리하는 테이블
    • 읽기 경로
      • 데이터가 메모리에 없을 때 읽기연산이 처리되는 경로
        • 데이터가 메모리에 있는지 검사함. 없으면 2로 감
        • 데이터가 메모리에 없으면 블룸 필터를 검사함
        • 블룸 필터를 통해 어떤 SSTable에 키가 보관되어 있는지 알아냄
        • SSTable에서 데이터를 가져옴
        • 해당 데이터를 클라이언트에게 반환함
profile

융무의 기술블로그

@융무

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!