데이터 과학/데이터 엔지니어링

마틴 클레프만, 데이터 중심 애플리케이션 설계 - 신뢰할 수 있고 확장 가능하며 유지보수하기 쉬운 시스템을 지탱하는 핵심 아이디어, 위키북스

booksworld 2025. 4. 15. 01:00

 

#광고 - 링크로 구매 시 글쓴이에게 소정의 수수료가 제공됩니다.

 

 

"데이터 중심 애플리케이션 설계"는 현대 소프트웨어 개발에서 데이터의 중요성을 강조하는 필독서입니다. 저자 마틴 클레프만은 데이터 시스템의 설계와 구현에 대한 깊이 있는 통찰을 제공합니다. 이 책은 데이터베이스, NoSQL 데이터스토어, 스트림 처리 등 다양한 기술의 장단점을 분석하여, 개발자들이 상황에 맞는 최적의 선택을 할 수 있도록 돕습니다.

책은 크게 세 부분으로 나뉘어 있으며, 첫 번째 부분에서는 데이터 시스템의 기초를 설명합니다. 신뢰성, 확장성, 유지보수성 등의 개념을 통해 기본적인 데이터 시스템의 설계 원칙을 이해할 수 있습니다. 두 번째 부분에서는 분산 데이터 시스템의 복잡한 문제를 다루며, 복제와 파티셔닝에 대한 깊이 있는 논의를 통해 분산 시스템의 설계 시 고려해야 할 요소들을 명확하게 제시합니다. 마지막으로, 일괄 처리와 스트림 처리에 대한 내용을 통해 현대 데이터 처리 기술의 발전 방향을 살펴볼 수 있습니다.

이 책은 단순한 이론서가 아니라, 실무에서의 응용을 강조합니다. 소프트웨어 엔지니어와 아키텍트가 실전에 이 개념을 어떻게 적용하는지를 구체적으로 설명하며, 독자들이 데이터 중심의 애플리케이션 설계에서 직면할 수 있는 다양한 문제를 해결할 수 있는 능력을 배양하도록 돕습니다.

또한, 이 책은 정보에 기반한 의사결정을 가능하게 하며, 다양한 도구의 강점과 약점을 파악하는 데 도움을 줍니다. 데이터베이스와 빅데이터 시대에 필수적인 지식을 제공하는 이 책은 모든 소프트웨어 개발자와 데이터 엔지니어에게 유용한 자원이 될 것입니다. 32400원의 가격에 608쪽의 풍부한 내용을 담고 있는 이 책은 데이터 중심 애플리케이션 설계의 필수 교과서로 추천할 만합니다.

 

 

 

목차


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

용어집

 

 

 

- 교보문고: https://bitl.bz/mIiEo6

- Yes24: https://bitl.bz/RkQJgk

- 쿠팡: https://bitl.bz/7phzGr