현학적 표현 보다, 일상생활에 비유한 예시들을 곁들여
분산 컴퓨팅을 최대한 풀어서 해설한 책
《핵심 이론부터 프로그래밍 실습까지 분산 컴퓨팅》은 눈에 보이지는 않지만 현대 IT의 기반이 되는 분산 컴퓨팅 기술에 대해서 완전 실무적인 접근보다는 핵심 이론의 이해를 통해서 분산 컴퓨팅 체계를 설계하고 필요한 도구들을 잘 취사선택할 수 있는 능력을 배양하는 것을 학습 목표로 한다.
특히, 컴퓨터공학 또는 컴퓨터과학 전공 학부생 또는 대학원생들 대상 강의에서 이 책을 활용하는 것을 염두에 두고 집필되었으며, 백엔드, 클라우드 컴퓨팅, DevOps 등의 분야의 전문가로서의 커리어 기반을 다지면서도, 이론적 지식의 무장을 통한 차별성과 경쟁력까지 갖추길 원하는 사람들에게 도움을 줄 것이다.
Step1 간단한 예시를 통한 분산 컴퓨팅 기법 이해
Step2 예시와 함께 이해를 돕는 생각해 보는 분산 컴퓨팅 문제 구성
Step3 핵심 요약을 통한 분산 컴퓨팅의 각 문법 복습
1장 | 분산 컴퓨팅이란 무엇인가?
1.1 두 장군 이야기
게임으로 풀어보는 두 장군 간의 합의 문제
1.2 분산 컴퓨팅의 정의
분산 컴퓨팅의 주체
비동기적인 통신 환경
2장 | 중계자와 2단계 커밋 프로토콜
2.1 계좌 이체 문제
분산 프로세스 간 올바른 거래의 어려움
2.2 안전성과 라이브니스
안정성과 라이브니스 동시 충족 문제
확약과 합의의 어려움
2.3 2단계 커밋 프로토콜
스트로우맨 프로토콜
원자적 커밋 프로토콜
안정성 보장을 위한 조치
라이브니스 보장을 위한 조치
2단계 커밋 프로토콜 수행 예시
3장 | 시간 동기화 문제와 논리적 시계
3.1 이중화된 데이터베이스 문제
분산된 데이터베이스의 병행 갱신
3.2 시간 동기화 기법
크리스티안 알고리즘
버클리 알고리즘
네트워크 시간 프로토콜
3.3 논리적 시계
램포트 시계
이벤트의 전체 순서
3.4 램포트 시계를 활용한 비일관성 문제 해결
데이터베이스 복제 알고리즘
분산 데이터베이스 병행 갱신 문제 해결
4장 | CAP과 FLP 정리
4.1 복제 시 발생하는 네트워크 장애
비일관성의 문제
가용성의 문제
궁극적 또는 강한 일관성
일관성과 가용성 동시 충족 딜레마
4.2 합의
합의 조건
4.3 FLP 정리
분산 장치들 간의 동일값 결정 문제
장애 발생 시 결정론적 합의 알고리즘 존재 여부
4.4 무결한 프로세스 간의 합의
정족수 충족 합의
직장인 회식 여부 합의 예시
5장 | Paxos
5.1 전설
Paxos 섬의 고대 유물
5.2 장애 유형
난이도 순 장애 유형
5.3 Paxos 알고리즘
Paxos의 안전성과 라이브니스
Paxos 참여 프로세스 역할
Paxos 3단계 수행 과정
5.4 Paxos 역으로 파헤치기
Paxos 특성 분석
5.5 Paxos로 단절된 두뇌 문제 해결
2PC 프로토콜과 TC 장애
두뇌 단절 문제
Paxos에 의한 리더 선정
6장 | 암복호화와 디지털 서명
6.1 고전적 암호
시저 암호
6.2 RSA 알고리즘
암호화
복호화
공개키와 비밀키
6.3 디지털 서명
위변조 방지
인증 기관의 필요성
7장 | 비잔틴 장애와 합의
7.1 비잔틴 장애 문제
합의 과정 교란
7.2 비잔틴 장애 내성 합의 알고리즘
백업 서버 복제 문제
디지털 서명 활용
사전 준비 단계와 준비 단계
확약 단계
PBFT 알고리즘
8장 | RAFT
8.1 로그 복제의 문제
프라이머리 서버 선정 문제
8.2 리더 선정 방법
RAFT 참여자 역할
주기적 하트비트
임기의 개념
선거 과정
RAFT의 안전성과 라이브니스
8.3 로그 관리
로그 구조
리더 지시 실패 예시
안전한 리더 선정
로그 정정 방법
9장 | 블록체인
9.1 이중 지불 사기꾼 잡기 게임
게임 규칙
게임 수행 예시
이중 지불 문제
9.2 블록체인 기반 비트코인
비트코인 구조
비트코인 양도 과정
비트코인 트랜잭션 검증 과정
9.3 블록체인과 가상화폐의 한계
블록체인 응용
저장 공간 활용 한계
탈중앙화 검증 방식의 한계
검증 속도의 문제
10장 | 벡터 시계와 스냅샷 찍기
10.1 단체 메시징 애플리케이션 문제
메시지들의 인과관계 파악 문제
램포트 시계의 한계
10.2 벡터 시계
벡터 시각 갱신
벡터 시각에 따른 이벤트 인과관계
벡터 시계를 활용한 안전한 메시지 열람 방법
10.3 전역 스냅샷
전역 스냅샷의 필요성
올바르지 않은 전역 스냅샷 예시
마커 기반 전역 스냅샷 찍는법
정확한 순서 관계 기록의 보장
11장 | 성능 모델링과 병렬 처리
11.1 큐잉 네트워크 모델
서비스센터 모델
서비스센터 성능 지표
성능 지표 간의 관계
11.2 성능 법칙
가용률의 법칙
리틀의 법칙
강제 플로우의 법칙
11.3 맵리듀스 기반 병렬 처리
웹페이지 검색의 문제
맵리듀스 작동 원리
하둡 생태계
12장 | 분산 데이터베이스
12.1 장애 시 확장성 관리 문제의 고민
단순 해싱의 문제점
데이터 완전 재배치 문제
12.2 일관적 해싱
해시 링
서버별 해시값 담당 범위 배정법
데이터 레코드 배치 방법
일관된 해시의 장점
12.3 분산 해시 테이블
중앙 디렉토리 서비스 관리 문제
Chord 알고리즘
12.4 가상 노드 기법
노드 간 불균형 문제 해결
DHT의 활용
13장 | Publish/Subscribe
13.1 Publish/Subscribe 패러다임
Publisher
Subscriber
시공간의 분리
13.2 Publish/Subscribe의 작동 원리
관심사 매칭
콘텐츠 기반 라우팅
13.3 Publish/Subscribe의 응용
Service Choreography
ESB
14장 | 보안 관제
14.1 목적에 따른 사이버 공격 유형
서비스 장애 공격
기밀 정보 탈취 및 위변조
14.2 공격 패턴 정의
스노트 문법
스노트 규칙 예시
스노트 운영 모드
스노트의 문제점과 한계
ATT&CK 기반 행위분석
킬체인
14.3 데이터 기반 공격 패턴 분석과 탐지 체계
SIEM
연관 분석
인과관계 분석
시계열 분석
그래프 분석
평판 분석
문맥 분석
15장 | 기밀 보호
15.1 영지식 증명
직관적 영지식 증명
Fiat-Shamir 프로토콜
Schnorr 프로토콜
Fiat-Shamir 휴리스틱
15.2 다자간 연산
누가 더 부자인가?
안전 회로 평가
15.3 동형암호
직관적 예시
Paillier 암호화
15.4 기밀 보호 Pub/Sub
콘텐츠 기반 Pub/Sub의 딜레마
재암호화 동형암호의 활용
15.5 분산학습
인공신경망 개념
연합학습
분할학습
16장 | Golang RPC와 DevOps
16.1 Golang 기초
Go의 특성
Go 기본 문법
16.2 RPC로 메시지 보내기
RPC 서버
RPC 클라이언트
16.3 암호화 메시지 디지털 서명
복호화 서버
디지털 서명 클라이언트
16.4 분산 시스템 구동 환경
온프레미스
클라우드
모바일 단말
16.5 DevOps
폭포수 모델
애자일 모델
CI/CD
도커 컨테이너
젠킨스
쿠버네티스
DevOps 정리
도판 목록
찾아보기
독자의견 남기기