박종훈 기술블로그

2024년 스터디 할 책 목차 훑어보기

2024년에 K-DEVCON 대전에서는 데이터 중심 애플리케이션 설계, 대규모 시스템 설계 기초 2 를 스터디 할 예정이다.

두 책의 목차를 읽어보면서 전반적인 흐름을 파악해보고 싶었다.

데이터 중심 애플리케이션 설계

멧돼지 책으로 유명한 책이다. 아마존에서도 많은 부수가 팔린 것으로 알고 있다. 예전부터 읽고 싶다는 생각을 가지고 있었는데 올해는 이번 기회에 읽을 것 같아 기대하고 있다.

목차

  • [Part 1] 데이터 시스템의 기초

    • 01장: 신뢰할 수 있고 확장 가능하며 유지보수하기 쉬운 애플리케이션

      • 데이터 시스템에 대한 생각
      • 신뢰성
        • 하드웨어 결함
        • 소프트웨어 오류
        • 인적 오류
        • 신뢰성은 얼마나 중요할까?
      • 확장성
        • 부하 기술하기
        • 성능 기술하기
        • 부하 대응 접근 방식
      • 유지보수성
        • 운용성: 운영의 편리함 만들기
        • 단순성: 복잡도 관리
        • 발전성: 변화를 쉽게 만들기
    • 02장: 데이터 모델과 질의 언어

      • 관계형 모델과 문서 모델
        • NoSQL의 탄생
        • 객체 관계형 불일치
        • 다대일과 다대다 관계
        • 문서 데이터베이스는 역사를 반복하고 있나?
        • 관계형 데이터베이스와 오늘날의 문서 데이터베이스
      • 데이터를 위한 질의 언어
        • 웹에서의 선언형 질의
        • 맵리듀스 질의
      • 그래프형 데이터 모델
        • 속성 그래프
        • 사이퍼 질의 언어
        • SQL의 그래프 질의
        • 트리플 저장소와 스파클
        • 초석: 데이터로그
    • 03장: 저장소와 검색

      • 데이터베이스를 강력하게 만드는 데이터 구조
        • 해시 색인
        • SS테이블과 LSM 트리
        • B 트리
        • B 트리와 LSM 트리 비교
        • 기타 색인 구조
      • 트랜잭션 처리나 분석?
        • 데이터 웨어하우징
        • 분석용 스키마: 별 모양 스키마와 눈꽃송이 모양 스키마
      • 칼럼 지향 저장소
        • 칼럼 압축
        • 칼럼 저장소의 순서 정렬
        • 칼럼 지향 저장소에 쓰기
        • 집계: 데이터 큐브와 구체화 뷰
    • 04장: 부호화와 발전

      • 데이터 부호화 형식
        • 언어별 형식
        • JSON과 XML, 이진 변형
        • 스리프트와 프로토콜 버퍼
        • 아브로
        • 스키마의 장점
      • 데이터플로 모드
        • 데이터베이스를 통한 데이터플로
        • 서비스를 통한 데이터플로: REST와 RPC
        • 메시지 전달 데이터플로
  • [Part 2] 분산 데이터

    • 고부하로 확장

      • 비공유 아키텍처
      • 복제 대 파티셔닝
    • 05장: 복제

      • 리더와 팔로워
        • 동기식 대 비동기식 복제
        • 새로운 팔로워 설정
        • 노드 중단 처리
        • 복제 로그 구현
      • 복제 지연 문제
        • 자신이 쓴 내용 읽기
        • 단조 읽기
        • 일관된 순서로 읽기
        • 복제 지연을 위한 해결책
      • 다중 리더 복제
        • 다중 리더 복제의 사용 사례
        • 쓰기 충돌 다루기
        • 다중 리더 복제 토폴로지
      • 리더 없는 복제
        • 노드가 다운됐을 때 데이터베이스에 쓰기
        • 정족수 일관성의 한계
        • 느슨한 정족수와 암시된 핸드오프
        • 동시 쓰기 감지
    • 06장: 파티셔닝

      • 파티셔닝과 복제
      • 키-값 데이터 파티셔닝
        • 키 범위 기준 파티셔닝
        • 키의 해시값 기준 파티셔닝
        • 쏠린 작업부하와 핫스팟 완화
      • 파티셔닝과 보조 색인
        • 문서 기준 보조 색인 파티셔닝
        • 용어 기준 보조 색인 파티셔닝
      • 파티션 재균형화
        • 재균형화 전략
        • 운영: 자동 재균형화와 수동 재균형화
      • 요청 라우팅
        • 병렬 질의 실행
    • 07장: 트랜잭션

      • 애매모호한 트랜잭션의 개념
        • ACID의 의미
        • 단일 객체 연산과 다중 객체 연산
      • 완화된 격리 수준
        • 커밋 후 읽기
        • 스냅숏 격리와 반복 읽기
        • 갱신 손실 방지
        • 쓰기 스큐와 팬텀
      • 직렬성
        • 실제적인 직렬 실행
        • 2단계 잠금(2PL)
        • 직렬성 스냅숏 격리(SSI)
    • 08장: 분산 시스템의 골칫거리

      • 결함과 부분 장애
        • 클라우드 컴퓨팅과 슈퍼컴퓨팅
      • 신뢰성 없는 네트워크
        • 현실의 네트워크 결함
        • 결함 감지
        • 타임아웃과 기약 없는 지연
        • 동기 네트워크 대 비동기 네트워크
      • 신뢰성 없는 시계
        • 단조 시계 대 일 기준 시계
        • 시계 동기화와 정확도
        • 동기화된 시계에 의존하기
        • 프로세스 중단
      • 지식, 진실, 그리고 거짓말
        • 진실은 다수결로 결정된다
        • 비잔틴 결함
        • 시스템 모델과 현실
    • 09장: 일관성과 합의

      • 일관성 보장
      • 선형성
        • 시스템에 선형성을 부여하는 것은 무엇인가?
        • 선형성에 기대기
        • 선형성 시스템 구현하기
        • 선형성의 비용
      • 순서화 보장
        • 순서화와 인과성
        • 일련번호 순서화
        • 전체 순서 브로드캐스트
      • 분산 트랜잭션과 합의
        • 원자적 커밋과 2단계 커밋(2PC)
        • 현실의 분산 트랜잭션
        • 내결함성을 지닌 합의
        • 멤버십과 코디네이션 서비스
  • [Part 3] 파생

    • 10장: 일괄 처리

      • 유닉스 도구로 일괄 처리하기
        • 단순 로그 분석
        • 유닉스 철학
      • 맵리듀스와 분산 파일 시스템
        • 맵리듀스 작업 실행하기
        • 리듀스 사이드 조인과 그룹화
        • 맵 사이드 조인
        • 일괄 처리 워크플로의 출력
        • 하둡과 분산 데이터베이스의 비교
      • 맵리듀스를 넘어
        • 중간 상태 구체화
        • 그래프와 반복 처리
        • 고수준 API와 언어
    • 11장: 스트림 처리

      • 이벤트 스트림 전송
        • 메시징 시스템
        • 파티셔닝된 로그
      • 데이터베이스와 스트림
        • 시스템 동기화 유지하기
        • 변경 데이터 캡처
        • 이벤트 소싱
        • 상태와 스트림과 불변성
      • 스트림 처리
        • 스트림 처리의 사용
        • 시간에 관한 추론
        • 스트림 조인
        • 내결함성
    • 12장: 데이터 시스템의 미래

      • 데이터 통합
        • 파생 데이터에 특화된 도구의 결합
        • 일괄 처리와 스트림 처리
      • 데이터베이스 언번들링
        • 데이터 저장소 기술 구성하기
        • 데이터플로 주변 애플리케이션 설계
        • 파생 상태 관찰하기
      • 정확성을 목표로
        • 데이터베이스에 관한 종단 간 논증
        • 제약 조건 강제하기
        • 적시성과 무결성
        • 믿어라. 하지만 확인하라.
      • 옳은 일 하기
        • 예측 분석
        • 사생활과 추적

대규모 시스템 설계 기초 2

1을 생각하고 사신 분들이 생각보다 두껍다는 평들을 해주셨다.

1도 재밌게 읽었기 때문에 2도 기대가 된다.
영어 원문 서적도 샀는데 타이밍이 안좋게도 바로 2편도 번역서가 나와버렸다.
3도 조만간에 원서가 나온다는 소문이 있더라.

목차

  • 1장 근접성 서비스
  • 2장 주변 친구
  • 3장 구글 맵
  • 4장 분산 메시지 큐
  • 5장 지표 모니터링 및 경보 시스템
  • 6장 광고 클릭 이벤트 집계
  • 7장 호텔 예약 시스템
  • 8장 분산 이메일 서비스
  • 9장 S3와 유사한 객체 저장소
  • 10장 실시간 게임 순위표
  • 11장 결제 시스템
  • 12장 전자 지갑
  • 13장 증권 거래소

세부 목차

이 책은 아래와 같은 구조를 가지고 진행한다.

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