데이터베이스 신뢰성 엔지니어링 [탄력적인 데이터베이스 시스템 설계와 관리]
- 원서명Database Reliability Engineering: Designing and Operating Resilient Database Systems (ISBN 9781491925942)
- 지은이레인 캠벨(Laine Campbell), 채리티 메이저스(Charity Majors)
- 옮긴이이설민
- ISBN : 9791161757261
- 35,000원
- 2023년 02월 28일 펴냄
- 페이퍼백 | 428쪽 | 188*235mm
- 시리즈 : 소프트웨어 아키텍처
책 소개
요약
과거 DBA의 역할이 DBRE(DataBase Reliability Engineering)라는 새로운 패러다임을 만나게 되면서 그 역할이 어떻게 변해야 하는지 설명한다. 먼저 DBRE의 개념을 소개하고 백업, 복구, 복제, 인덱스, 모니터링과 같은 데이터베이스 관리의 기초 영역에서부터 스토리지, 보안, 데이터 스토어 등 인프라 관점에서 데이터베이스 관리자의 역할을 살펴본다. 그리고 서비스 및 아키텍처 관점에서 서비스 수준 요구 사항, 위험 평가 관리, 배포 관리, 분산 데이터베이스 설계를 알아보고 마지막으로 DBRE 문화를 형성하는 방법과 DBA에서 DBRE의 역할로 전환할 수 있는 다양한 방법을 살펴본다.
추천의 글
우리는 전반적인 데이터베이스 산업에서 전례 없는 변화와 혼란의 시기를 목격하고 있다. 기술 채택의 생명주기는 새로운 도전과 기회와 함께 머리를 어지럽게 만드는 지점까지 가속화됐다.
아키텍처는 매우 빠르게 진화하고 있어서 지금까지 익숙해진 업무는 더 이상 필요하지 않게 됐으며 그렇게 많이 투자했던 제반 기술은 이제 거의 연관이 없다. 보안, 코드형 인프라, 클라우드의 수용력(예를 들어 서비스형 인프라와 데이터베이스)과 같은 새로운 혁신과 압박으로 인해 우리가 어떻게 구축하고 있는지 재고할 필요성을 느끼게 한다.
필연적으로 기존의 관리성 작업 부하에서 벗어나 아키텍처, 자동화, 소프트웨어 엔지니어링, 지속적인 통합 및 배포, 시스템 편성 기술 등을 강조하는 프로세스로 전환했다. 그동안 우리가 보호하고 관리해 온 데이터의 가치와 중요성은 그 규모만큼이나(혹은 그 이상으로) 증가했고 앞으로도 그 가치가 증가하지 않는 미래는 그려지지 않는다. 우리는 이와 같은 세상에서 무언가 의미 있고 중요한 차이를 만들어낼 수 있는 운이 좋은 위치에 있다.
한때 본인이 뛰어난 데이터베이스 관리자라고 의심 없이 생각했던 많은 사람은 시대의 흐름에 압박 받고 있으며 심지어 뒤처질 위험에 처해 있다. 동시에 이 분야에 뛰어든 새로운 사람들은 조직의 패러다임을 갈망한다. 이 두 가지 상황에 대한 답은 동일하다. 학습의 즐거움, 자기 계발, 긍정적, 열정 그리고 자신감이다. 이는 피할 수 없는 고난과 위험에도 어떤 업무를 맡아 그것을 끝까지 관철시키기 위함이다. 이 책은 데이터베이스 인프라 엔지니어링에 대한 새로운 사고방식을 소개하고 운영, 가이드북, 플레이북 등 우리가 수행하고 재구성했던 모든 것을 새로운 방향으로 이끈다는 점에서 주목할 만한 성과다. 즉, 이것이 바로 데이터베이스 신뢰성 엔지니어링이다.
— 폴 밸리(Paul Vallee)/
파이시안(Pythian)의 사장 겸 CEO
이 책에서 다루는 내용
◆ 서비스 레벨 요구사항과 위험 관리
◆ 운영 가시성을 위한 아키텍처 구축 및 진화
◆ 인프라 엔지니어링 및 관리
◆ 릴리스 프로세스를 원활하게 수행하는 방법
◆ 데이터 저장, 인덱싱, 복제
◆ 데이터 스토어의 특성 식별과 모범 사례
◆ 데이터 스토어 아키텍처의 구성 요소와 데이터 기반의 아키텍처
이 책의 대상 독자
데이터 스토어의 설계, 구축, 안정적인 운영에 흥미가 있는 모든 사람을 대상으로 한다. 독자는 데이터베이스의 지식을 넓히려고 하는 소프트웨어 엔지니어 혹은 같은 이유를 가진 시스템 엔지니어일 수도 있다. 스킬 향상을 원하는 데이터베이스 전문가라면 여기서 가치를 발견할 것이고, 이 업계에 새로 들어온 사람이라면 확실한 이해를 줄 수 있을 것이다.
이 책의 구성
1장은 데이터베이스 신뢰성 엔지니어링(database reliability engineering)의 개념을 소개한다. 원칙을 안내하는 것에서 출발해 운영 중심부로 넘어가고 마지막으로 매슬로우의 욕구 계층(Maslow’s hierarchy of needs)을 기반으로 DBRE의 비전을 구축하기 위한 프레임워크를 제시한다.
2장에서는 서비스 수준 요구 사항(service level requirements)을 설명한다. 이는 제품을 위한 기능 요구 사항만큼이나 중요하다. 이 장은 서비스 수준 요구 사항이 무엇이고 어떻게 그것을 정의하는지 알아본다. 이후에는 이러한 요구 사항을 측정하고 처리하는 방법을 살펴본다.
3장에서는 위험 평가와 관리(risk assessment and management)를 알아본다. 위험의 기초적인 측면을 설명하고 난 후 시스템 및 데이터베이스 엔지니어링에 위험 평가를 접목시키기 위한 실전 프로세스를 살펴본다. 또한 함정과 복잡성도 살펴본다.
4장에서는 운영 가시성(operational visibility)을 다룬다. 지표(metric)와 이벤트를 이야기하고 이를 측정하기 위한 계획을 어떻게 세우는지, 시간이 지남에 따른 반복 작업은 어떤 게 있는지 알아본다. 그리고 모니터링 시스템의 구성 요소와 이를 사용하는 클라이언트를 파헤친다.
5장과 6장에서는 인프라의 엔지니어링과 관리(infrastructure engineering and management)를 자세히 살펴본다. 데이터 스토어를 위한 호스트 구축 원칙을 설명하고 가상화와 컨테이너, 환경설정 관리, 자동화와 오케스트레이션(orchestration)을 살펴본다. 이는 데이터를 저장하고 접근하는 시스템을 구축하고자 구동되는 모든 부분을 이해할 수 있게 도와준다.
7장에서는 백업과 복구(backup and recovery)를 다룬다. DBE를 마스터로 향하게 하는 가장 중요한 부분일 것이다. 데이터는 유실하게 되면 게임 끝이다. 서비스 수준 요구 사항에서 출발해 적절한 백업과 복구 방법을 평가하고, 어떻게 확장하는지 그리고 어떻게 이처럼 중요한 부분과 자주 간과하기 쉬운 운영 측면을 테스트하는지 평가한다.
8장에서는 릴리스 관리(release management)를 살펴본다. 데이터 스토어에 대한 변경 사항을 어떻게 테스트(test), 빌드(build), 배포(deploy)하는지와 데이터 접근 코드나 SQL에 대한 내용도 살펴본다.
9장에서는 보안(security)을 다룬다. 데이터 보안은 기업의 생존에 매우 중요하다. 끊임없이 발전하는 데이터 인프라에서 보안을 계획하고 관리하는 방법에 대한 전략을 다룬다.
10장에서는 데이터 스토리지와 인덱스 그리고 복제(data storage, indexing, and replication)를 다룬다. 관계형 데이터가 저장되는 방법을 설명한 후 이를 문자열 정렬과 로그 구조의 병합 트리(log structured merge tree)를 비교한다. 인덱스의 다양성을 살펴보고 난 후 데이터 복제 토폴로지를 살펴본다.
11장은 데이터 스토어의 필드 가이드(datastore field guide)다. 여기서는 여러분이 평가하고 운영해야 할 데이터 스토어에서 찾을 수 있는 수많은 다양한 속성을 살펴본다.
12장에서는 분산 데이터베이스에 사용되는 좀 더 일반적인 설계 패턴과 연관된 파이프라인을 살펴본다. 먼저 데이터베이스 생태계(ecosystem)에 전통적으로 자리 잡고 있는 아키텍처 구성 요소를 살펴보는 것부터 시작해서 이들이 가진 이점, 복합성, 일반적인 사용법 등을 살펴본다.
13장에서는 여러분 조직에서 데이터베이스 신뢰성 엔지니어링의 문화를 형성하는 방법을 다룬다. 그리고 오늘날의 조직에서 관리자(administrator)에서 엔지니어로서 DBRE의 역할로 전환할 수 있는 다양한 방법을 살펴본다.
목차
목차
- 01장. 데이터베이스 신뢰성 엔지니어링 소개
- DBRE의 원칙
- 데이터 보호
- 확장을 위한 셀프 서비스
- 잡일 제거
- 데이터베이스는 더 이상 특별한 스노우플레이크가 아니다
- 소프트웨어와 운영 사이의 장벽 제거
- 운영 핵심 개요
- 욕구 단계
- 생존과 안전
- 사랑과 소속
- 존중
- 자아실현
- 정리
- DBRE의 원칙
- 02장. 서비스 수준 관리
- 서비스 수준 목표가 필요한 이유
- 서비스 수준 지표(SLI)
- 대기시간
- 가용성
- 처리량
- 내구성
- 비용과 효율성
- 서비스 목표 정의
- 대기시간 지표
- 가용성 지표
- 가용성에서의 회복 탄력성(resiliency)과 강건성(robustness)
- 다운타임을 허용하는 설계
- 처리량 지표
- 비용 효과적인 지표
- 고려 사항
- SLO 관점의 모니터링과 리포팅
- 가용성 모니터링
- 대기시간 모니터링
- 처리량 모니터링
- 비용과 효율성 모니터링
- 정리
- 03장. 위험 관리
- 위험 고려 사항
- 알 수 없는 요인과 복잡성
- 리소스 가용성
- 인적 요인
- 그룹 요인
- 해야 할 것
- 하지 말아야 할 것
- 작업 프로세스: 부트스트래핑
- 서비스 위험 평가
- 아키텍처 인벤토리
- 우선순위 지정
- 심각한 영향(즉각적인 SLO 위반)
- 중대한 영향(SLO 위반에 임박)
- 보통의 영향
- 사소한 영향
- 통제와 의사결정
- 식별
- 평가
- 완화와 제어
- 구현
- 지속적인 반복
- 정리
- 위험 고려 사항
- 04장. 운영 가시성
- 운영 가시성의 새로운 규칙
- BI 시스템처럼 OpViz 시스템 처리
- 표준에 따른 분산 임시 환경의 트렌드
- 주요 지표의 고해상도 저장
- 간소화 아키텍처 유지
- OpViz 프레임워크
- 데이터 입력
- 텔레메트리(telemetry)/지표
- 이벤트
- 로그
- 데이터 출력
- 모니터링 부트스트래핑
- 데이터가 안전한가?
- 서비스가 실행 중인가?
- 소비자가 불편을 겪고 있는가?
- 애플리케이션 계측
- 분산 추적
- 이벤트와 로그
- 서버와 인스턴스 계측
- 이벤트와 로그
- 데이터 스토어 계측
- 데이터 스토어 커넥션 계층
- 활용도
- 포화도
- 오류
- 내부 데이터베이스 가시성
- 처리량과 대기시간 지표
- 커밋, 리두, 저널링
- 복제 상태
- 메모리 구조
- 잠금과 동시성
- 데이터베이스 객체
- 데이터베이스 쿼리
- 데이터베이스 어썰트와 이벤트
- 정리
- 운영 가시성의 새로운 규칙
- 05장. 인프라 엔지니어링
- 호스트
- 물리 서버
- 시스템과 커널 운영
- 사용자 리소스 제한
- I/O 스케줄러
- 메모리 할당과 파편화
- 스와핑
- 불균일 메모리 접근
- 네트워크
- 스토리지
- 스토리지 용량
- 스토리지 처리량
- 스토리지 대기시간
- 스토리지 가용성
- 내구성
- 스토리지 전용 네트워크
- 물리 서버의 장점
- 물리 서버의 단점
- 가상화
- 하이퍼바이저
- 동시성
- 스토리지
- 활용 사례
- 컨테이너
- 서비스형 데이터베이스
- 서비스형 데이터베이스의 과제
- DBRE와 DBaaS
- 정리
- 호스트
- 06장. 인프라 관리
- 버전 관리
- 환경설정 정의
- 환경설정에서의 구축
- 환경설정 유지 보수
- 환경설정 정의 시행
- 설정 동기화
- 컴포넌트 재배포
- 인프라 정의와 오케스트레이션
- 모놀리식 인프라 정의
- 수직 분할
- 계층 분할(수평적 정의)
- 테스트와 컴플라이언스 승인
- 서비스 카탈로그
- 종합 시나리오
- 개발 환경
- 정리
- 07장. 백업과 복구
- 핵심 개념
- 물리적과 논리적
- 온라인과 오프라인
- 전체, 증분, 차등
- 복구할 때 고려 사항
- 복구 시나리오
- 계획된 복구 시나리오
- 새로운 프로덕션(production) 노드와 클러스터
- 다른 환경 구축
- 데이터 스토어 다운스트림용 ETL과 파이프라인 프로세스
- 운영 작업 테스트
- 계획되지 않은 시나리오
- 사용자 오류
- 애플리케이션 오류
- 인프라 서비스 오류
- 운영체제 및 하드웨어 오류
- 하드웨어 장애
- 데이터 센터 장애
- 시나리오 범위
- 시나리오 영향도
- 계획된 복구 시나리오
- 복구 전략 구조
- 블록 쌓기 1: 탐지
- 사용자 오류
- 애플리케이션 오류
- 인프라 서비스
- 운영체제와 하드웨어 오류
- 하드웨어와 데이터 센터 장애
- 블록 쌓기 2: 스토리지 계층화
- 온라인, 고성능 스토리지
- 온라인, 저성능 스토리지
- 오프라인 스토리지
- 객체 스토리지
- 블록 쌓기 3: 다양한 도구 상자
- 전체 물리 백업
- 증분 물리 백업
- 전체 및 증분 논리 백업
- 객체 스토어
- 블록 쌓기 4: 테스트
- 블록 쌓기 1: 탐지
- 복구 전략 정의
- 온라인, 전체 및 증분 백업과 빠른 스토리지
- 사용 사례
- 검출
- 계층형 스토리지
- 도구 상자
- 테스트
- 온라인, 전체 및 증분 백업과 느린 스토리지
- 사용 사례
- 검출
- 계층형 스토리지
- 도구 상자
- 테스트
- 오프라인 스토리지
- 사용 사례
- 검출
- 계층 스토리지
- 도구 상자
- 테스트
- 객체 스토리지
- 사용 사례
- 검출
- 테스트
- 정리
- 핵심 개념
- 08장. 릴리스 관리
- 교육과 협업
- 대외 활동
- 대화 조성
- 도메인 특화 지식
- 아키텍처
- 데이터 모델
- 모범 사례와 표준
- 도구
- 협업
- 통합
- 전제 조건
- 버전 관리 시스템
- 데이터베이스 구축 자동화
- 테스트 데이터
- 데이터베이스 마이그레이션과 패키징
- CI 서버와 테스트 프레임워크
- 전제 조건
- 테스트
- 테스트 친화적인 개발 예제
- 추상화와 캡슐화
- 효율화
- 사후 커밋 테스트
- 사전 빌드
- 빌드
- 사후 빌드
- 전체 데이터 세트 테스트
- 다운스트림 테스트
- 운영 테스트
- 테스트 친화적인 개발 예제
- 배포
- 마이그레이션과 버전 관리
- 영향도 분석
- 객체 잠금
- 리소스 포화점
- 데이터 무결성 이슈
- 복제 지연
- 마이그레이션 패턴
- 패턴: 잠금을 발생시키는 작업
- 패턴: 높은 리소스를 발생시키는 작업
- 패턴: 롤링 마이그레이션
- 마이그레이션 테스트
- 롤백 테스트
- 수동과 자동화
- 정리
- 교육과 협업
- 09장. 보안
- 보안의 목적
- 침입자로부터 데이터 보호
- 의도적 피해에서 보호
- 사고에 의한 피해에서 보호
- 노출에서의 데이터 보호
- 컴플라이언스와 감사 표준
- 함수형 데이터베이스 보안
- 교육과 협업
- 셀프 서비스
- 통합과 테스트
- 운영 가시성
- 애플리케이션 계층 계측
- 데이터베이스 계층 측정
- OS 계층 측정
- 취약점과 악용
- STRIDE
- DREAD
- 기본 예방책
- 서비스 거부
- 완화
- 리소스 관리와 부하 차단
- 데이터베이스 액세스와 작업 부하의 지속적인 개선
- 로깅과 모니터링
- SQL 인젝션
- 완화
- 프리페어드 스테이트먼트
- 입력 유효성 검사
- 피해 감소
- 모니터링
- 네트워크와 인증 프로토콜
- 데이터 암호화
- 재무 데이터
- 개인 건강 데이터
- 사생활 개인 데이터
- 군사 및 정부 데이터
- 기밀/민감한 비즈니스 데이터
- 전송 데이터
- 암호 스위트의 해부
- 네트워크 내부 통신
- 네트워크 외부 통신
- 안전한 데이터 연결 설정
- 데이터베이스 데이터
- 애플리케이션 수준의 보안
- 데이터베이스 플러그인 암호화
- 투명한 데이터베이스 암호화
- 쿼리 성능 고려 사항
- 파일 시스템 데이터
- 파일 시스템에서의 데이터 암호화
- 파일 시스템 암호화
- 장비 수준의 암호화
- 정리
- 보안의 목적
- 10장. 데이터 스토리지, 인덱싱, 복제
- 데이터 구조 스토리지
- 데이터베이스 행 스토리지
- B-트리 구조
- 문자로 정렬된 테이블과 구조화된 로그 머지 트리
- 블룸 필터
- 구현
- 인덱싱
- 해시 인덱스
- 비트맵 인덱스
- B-트리 순열
- 로그와 데이터베이스
- 데이터베이스 행 스토리지
- 데이터 복제
- 싱글 리더
- 복제 모델
- 복제 로그 형식
- 싱글 리더 복제 사용
- 단일 리더 복제의 도전 과제
- 단일 리더 복제 모니터링
- 멀티리더 복제
- 멀티리더 사용 사례
- 기존의 다방면 복제의 충돌 해결 방안
- 싱글 리더
- 정리
- 데이터 구조 스토리지
- 11장. 데이터 스토어 필드 가이드
- 데이터 스토어의 개념적 속성
- 데이터 모델
- 관계형 모델
- 키-값 모델
- 문서 모델
- 내비게이션 모델
- 트랜잭션
- ACID
- 원자성
- 일관성
- 격리성
- 내구성
- BASE
- 데이터 모델
- 데이터 스토어의 내부 속성
- 스토리지
- 유비쿼터스 CAP 정리
- 일관성
- 가용성
- 파티션 허용
- 일관성과 대기시간의 트레이드오프
- 가용성
- 정리
- 데이터 스토어의 개념적 속성
- 12장. 데이터 아키텍처 표본
- 아키텍처 구성 요소
- 프론트엔드 데이터 스토어
- 데이터 접근 계층
- 데이터베이스 프록시
- 가용성
- 데이터 무결성
- 확장성
- 대기시간
- 이벤트와 메시지 시스템
- 가용성
- 데이터 무결성
- 확장성
- 대기시간
- 캐시와 메모리 스토어
- 가용성
- 데이터 무결성
- 확장성
- 대기시간
- 데이터 아키텍처
- 람다와 카파
- 람다 아키텍처
- 카파 아키텍처
- 이벤트 소싱
- CQRS
- 람다와 카파
- 정리
- 아키텍처 구성 요소
- 13장. DBRE 사례 만들기
- 데이터베이스 신뢰성 문화
- 장벽 파괴
- 아키텍처 프로세스
- 데이터베이스 개발
- 프로덕션 마이그레이션
- 인프라 설계와 배포
- 데이터 기반 의사결정
- 데이터 무결성과 회복성
- 장벽 파괴
- 정리
- 데이터베이스 신뢰성 문화
도서 오류 신고
정오표
정오표
[ p.112: 박스, 아래에서 2행]
사용자의 댜기시간에
->
사용자의 대기시간에