이미 소장하고 있다면 판매해 보세요.
|
01장. 데이터베이스 신뢰성 엔지니어링 소개
__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: 테스트 __복구 전략 정의 __온라인, 전체 및 증분 백업과 빠른 스토리지 ____사용 사례 ____검출 ____계층형 스토리지 ____도구 상자 ____테스트 __온라인, 전체 및 증분 백업과 느린 스토리지 ____사용 사례 ____검출 ____계층형 스토리지 ____도구 상자 ____테스트 __오프라인 스토리지 ____사용 사례 ____검출 ____계층 스토리지 ____도구 상자 ____테스트 __객체 스토리지 ____사용 사례 ____검출 ____테스트 __정리 08장. 릴리스 관리 __교육과 협업 ____대외 활동 ____대화 조성 ____도메인 특화 지식 ______아키텍처 ______데이터 모델 ______모범 사례와 표준 ______도구 ____협업 __통합 ____전제 조건 ______버전 관리 시스템 ______데이터베이스 구축 자동화 ______테스트 데이터 ______데이터베이스 마이그레이션과 패키징 ______CI 서버와 테스트 프레임워크 __테스트 ____테스트 친화적인 개발 예제 ______추상화와 캡슐화 ______효율화 ____사후 커밋 테스트 ______사전 빌드 ______빌드 ______사후 빌드 ____전체 데이터 세트 테스트 ____다운스트림 테스트 ____운영 테스트 __배포 ____마이그레이션과 버전 관리 ____영향도 분석 ______객체 잠금 ______리소스 포화점 ______데이터 무결성 이슈 ______복제 지연 ____마이그레이션 패턴 ______패턴: 잠금을 발생시키는 작업 ______패턴: 높은 리소스를 발생시키는 작업 ______패턴: 롤링 마이그레이션 ______마이그레이션 테스트 ______롤백 테스트 ____수동과 자동화 __정리 09장. 보안 __보안의 목적 ____침입자로부터 데이터 보호 ____의도적 피해에서 보호 ____사고에 의한 피해에서 보호 ____노출에서의 데이터 보호 ____컴플라이언스와 감사 표준 __함수형 데이터베이스 보안 ____교육과 협업 ____셀프 서비스 ____통합과 테스트 ____운영 가시성 ______애플리케이션 계층 계측 ______데이터베이스 계층 측정 ______OS 계층 측정 __취약점과 악용 ____STRIDE ____DREAD ____기본 예방책 ____서비스 거부 ______완화 ______리소스 관리와 부하 차단 ______데이터베이스 액세스와 작업 부하의 지속적인 개선 ______로깅과 모니터링 ____SQL 인젝션 ______완화 ______프리페어드 스테이트먼트 ______입력 유효성 검사 ______피해 감소 ______모니터링 __네트워크와 인증 프로토콜 __데이터 암호화 ____재무 데이터 ____개인 건강 데이터 ____사생활 개인 데이터 ____군사 및 정부 데이터 ____기밀/민감한 비즈니스 데이터 ____전송 데이터 ______암호 스위트의 해부 ______네트워크 내부 통신 ______네트워크 외부 통신 ______안전한 데이터 연결 설정 ____데이터베이스 데이터 ______애플리케이션 수준의 보안 ______데이터베이스 플러그인 암호화 ______투명한 데이터베이스 암호화 ______쿼리 성능 고려 사항 ____파일 시스템 데이터 ______파일 시스템에서의 데이터 암호화 ______파일 시스템 암호화 ______장비 수준의 암호화 __정리 10장. 데이터 스토리지, 인덱싱, 복제 __데이터 구조 스토리지 ____데이터베이스 행 스토리지 ______B-트리 구조 ____문자로 정렬된 테이블과 구조화된 로그 머지 트리 ______블룸 필터 ______구현 ____인덱싱 ______해시 인덱스 ______비트맵 인덱스 ______B-트리 순열 ____로그와 데이터베이스 __데이터 복제 ____싱글 리더 ______복제 모델 ______복제 로그 형식 ______싱글 리더 복제 사용 ______단일 리더 복제의 도전 과제 ______단일 리더 복제 모니터링 ____멀티리더 복제 ______멀티리더 사용 사례 ______기존의 다방면 복제의 충돌 해결 방안 __정리 11장. 데이터 스토어 필드 가이드 __데이터 스토어의 개념적 속성 ____데이터 모델 ______관계형 모델 ______키-값 모델 ______문서 모델 ______내비게이션 모델 ____트랜잭션 ______ACID ______원자성 ______일관성 ______격리성 ______내구성 ____BASE __데이터 스토어의 내부 속성 ____스토리지 ____유비쿼터스 CAP 정리 ______일관성 ______가용성 ______파티션 허용 ____일관성과 대기시간의 트레이드오프 ____가용성 __정리 12장. 데이터 아키텍처 표본 __아키텍처 구성 요소 ____프론트엔드 데이터 스토어 ____데이터 접근 계층 ____데이터베이스 프록시 ______가용성 ______데이터 무결성 ______확장성 ______대기시간 ____이벤트와 메시지 시스템 ______가용성 ______데이터 무결성 ______확장성 ______대기시간 ____캐시와 메모리 스토어 ______가용성 ______데이터 무결성 ______확장성 ______대기시간 __데이터 아키텍처 ____람다와 카파 ______람다 아키텍처 ______카파 아키텍처 ____이벤트 소싱 ____CQRS __정리 13장. DBRE 사례 만들기 __데이터베이스 신뢰성 문화 ____장벽 파괴 ______아키텍처 프로세스 ______데이터베이스 개발 ______프로덕션 마이그레이션 ______인프라 설계와 배포 ____데이터 기반 의사결정 ____데이터 무결성과 회복성 __정리 |
Laine Campbell
Charity Majors
채리티 메이저스의 다른 상품
|
ㆍ 이 책에서 다루는 내용
- 서비스 레벨 요구사항과 위험 관리 - 운영 가시성을 위한 아키텍처 구축 및 진화 - 인프라 엔지니어링 및 관리 - 릴리스 프로세스를 원활하게 수행하는 방법 - 데이터 저장, 인덱싱, 복제 - 데이터 스토어의 특성 식별과 모범 사례 - 데이터 스토어 아키텍처의 구성 요소와 데이터 기반의 아키텍처 ㆍ 이 책의 대상 독자 데이터 스토어의 설계, 구축, 안정적인 운영에 흥미가 있는 모든 사람을 대상으로 한다. 독자는 데이터베이스의 지식을 넓히려고 하는 소프트웨어 엔지니어 혹은 같은 이유를 가진 시스템 엔지니어일 수도 있다. 스킬 향상을 원하는 데이터베이스 전문가라면 여기서 가치를 발견할 것이고, 이 업계에 새로 들어온 사람이라면 확실한 이해를 줄 수 있을 것이다. ㆍ 이 책의 구성 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의 역할로 전환할 수 있는 다양한 방법을 살펴본다. ㆍ 지은이의 말 이 책에서는 차세대 데이터베이스 전문가인 데이터베이스 신뢰성 엔지니어(DBRE)를 위한 프레임워크를 보여준다. 먼저 데이터베이스 관리자란 직업에 어떤 선입견이 있는지 떠올려보자. 이 불가사의한 생명체와 협력하고 있는 소프트웨어 또는 시스템 엔지니어들은 다음과 같은 선입견을 갖고 있을 것이다. 전통적으로 데이터베이스 관리자(DBA)는 데이터베이스(DB) 내부를 속속들이 이해했다. 그들은 옵티마이저, 쿼리 엔진, 특정 시스템의 성능 기준에 맞는 튜닝과 제작에 능했다. 이들은 데이터베이스를 더 잘 운영하고자 다른 기술을 습득해야 한다면 그렇게 했다. 컴퓨터 중앙처리장치(CPU)나 디스크 스핀들(disk spindles) 부하를 분산시키는 방법, CPU 친밀도(affinity)를 사용하고자 DB를 설정하는 방법, 스토리지 서브시스템을 평가하는 방법 등을 배웠다. DBA가 가시성(visibility) 문제에 직면했을 때 그들은 핵심 지표를 식별하기 위한 그래프를 만드는 방법을 배웠다. 아키텍처의 한계에 직면했을 때 캐시 계층에 대해 배웠고, 개별 노드의 한계에 부딪혔을 때 샤딩과 같은 새로운 설계 패턴의 개발을 배우며 주도했다. 이러한 과정에서 캐시 무효화(cache invalidation), 데이터 리밸런싱(data rebalancing), 순차 DB 변경(rolling DB change) 작업 등과 같은 새로운 운영 기법을 정복하고 있었다. 하지만 오랫동안 DBA들은 사일로(silo)와 스노우플레이크(snowflake)를 만드는 비즈니스를 하고 있었다. 그들이 쓰는 도구와 하드웨어, 언어는 달랐다. DBA는 SQL, 시스템 엔지니어는 펄(perl), 소프트웨어 엔지니어는 C++, 웹 개발자는 PHP, 네트워크 엔지니어들은 그들만의 완벽한 어플라이언스를 만들고 있었다. 오직 팀의 절반 정도만 어떤 식으로든 버전 관리 시스템을 사용하고 있었고, 철저하게 서로의 영역에 관여하거나 침범하지 않았다. 마치 다른 나라로 들어가야 하는 것처럼 보였다. 이런 모델이 효과적이고 지속 가능하다는 것을 증명할 수 있는 시대는 얼마 남지 않았다. 이 책은 데이터베이스 엔지니어링 시야를 통해 바라본 신뢰성 엔지니어링의 관점이다. 모든 사례를 다루고 있지는 않지만 여러분의 경험에 빗대어 우리가 중요하게 여기는 것을 설명할 것이다. 이러한 프레임워크는 다양한 데이터 스토어, 아키텍처, 조직 등에 적용할 수 있을 것이다. ㆍ 옮긴이의 말 과거 데이터베이스는 스페셜리스트만의 전유물이었다. 설치는 어려웠고 튜닝은 복잡했으며 쿼리 작성에 조금만 신경을 못 써도 서비스에 영향을 미치게 되는 두려운 존재였다. 데이터베이스는 아주 예쁜 유리병과도 같았고 이를 잘 다루려면 오랜 시간 동안 숙련된 장인의 손길이 필요할 것만 같았다. 하지만 최근 클라우드 컴퓨팅, MSA 아키텍처, 자동화 시스템 등의 기술 발달로 현대의 데이터베이스는 더이상 그들만의 전유물이 아니게 됐다. 필요하면 누구나 쉽게 접근할 수 있게 진입장벽이 낮아졌으며, 또한 어느 정도까지는 서비스도 가능할 정도로 표준화됐다. 이러한 시대의 변화는 자연스럽게 데이터베이스를 바라보는 관점의 변화를 만들었으며 이에 따른 데이터베이스 관리자의 역할도 적지 않게 바뀌었다. 이로 인해 DBRE라는 새로운 관점의 데이터베이스 관리가 필요하게 됐고 그에 맞는 요구 사항들이 생겨나기 시작했다. 그렇다면 DBRE의 개념은 무엇이며 그동안 데이터베이스 관리자의 역할과 어떤 점이 다른지 필연적으로 궁금증이 발생할 것이다. 이 책은 이러한 궁금증에 대한 답을 제시한다. 서비스, 아키텍처, 인프라 등 다양한 관점에서 데이터베이스를 바라보고 데이터베이스 관리자의 역할을 재정의해 어떤 배경지식이 필요한지 설명한다. 특히 데이터베이스 신뢰성이라는 관점으로 데이터베이스 관리를 지향하고 있으며 이를 위해 반복적인 관리 포인트를 줄이고 아키텍처나 퍼포먼스에 집중하고자 프레임워크를 만들고 수행 방안을 전개한다. 현대의 데이터베이스가 누구나 사용 가능하다고 해서 모두가 데이터베이스를 능숙하게 다룰 수 있는 것은 분명 아닐 것이다. 근본적으로 데이터베이스 관리자는 내부 구조, 아키텍처, 동작 원리를 학습해 기본기가 바탕이 돼야 함은 DBRE의 관점에서도 변함이 없다. 항상 새로운 기술이 나타나고 변화함에 따라 이에 맞는 도전 과제들을 수행하기 위해서 우리는 배워야 할 게 너무나 많은 세상을 살고 있다. 많은 데이터베이스 관리자는 DBRE라는 용어를 들어보지만 않았을 뿐 이미 이러한 변화를 피부로 느끼며 현업에서 데이터베이스 신뢰성 향상을 위해 노력하고 있을 것이다. 이 책이 최근 시대의 환경 변화로 인해 데이터베이스 관리자의 역할이 어디까지인지 고민하고 있던 사람에게 조금이나마 도움이 되기를 바란다. 이 책을 통해 다양한 관점에서 데이터베이스를 생각해볼 수 있으며 나아가 우리가 책임지고 있는 데이터베이스의 신뢰성을 좀 더 성숙하게 발전시킬 수 있는 전환점이 될 수 있기를 기대한다. |
|
우리는 전반적인 데이터베이스 산업에서 전례 없는 변화와 혼란의 시기를 목격하고 있다. 기술 채택의 생명주기는 새로운 도전과 기회와 함께 머리를 어지럽게 만드는 지점까지 가속화됐다.
아키텍처는 매우 빠르게 진화하고 있어서 지금까지 익숙해진 업무는 더 이상 필요하지 않게 됐으며 그렇게 많이 투자했던 제반 기술은 이제 거의 연관이 없다. 보안, 코드형 인프라, 클라우드의 수용력(예를 들어 서비스형 인프라와 데이터베이스)과 같은 새로운 혁신과 압박으로 인해 우리가 어떻게 구축하고 있는지 재고할 필요성을 느끼게 한다. 필연적으로 기존의 관리성 작업 부하에서 벗어나 아키텍처, 자동화, 소프트웨어 엔지니어링, 지속적인 통합 및 배포, 시스템 편성 기술 등을 강조하는 프로세스로 전환했다. 그동안 우리가 보호하고 관리해 온 데이터의 가치와 중요성은 그 규모만큼이나(혹은 그 이상으로) 증가했고 앞으로도 그 가치가 증가하지 않는 미래는 그려지지 않는다. 우리는 이와 같은 세상에서 무언가 의미 있고 중요한 차이를 만들어낼 수 있는 운이 좋은 위치에 있다. 한때 본인이 뛰어난 데이터베이스 관리자라고 의심 없이 생각했던 많은 사람은 시대의 흐름에 압박 받고 있으며 심지어 뒤처질 위험에 처해 있다. 동시에 이 분야에 뛰어든 새로운 사람들은 조직의 패러다임을 갈망한다. 이 두 가지 상황에 대한 답은 동일하다. 학습의 즐거움, 자기 계발, 긍정적, 열정 그리고 자신감이다. 이는 피할 수 없는 고난과 위험에도 어떤 업무를 맡아 그것을 끝까지 관철시키기 위함이다. 이 책은 데이터베이스 인프라 엔지니어링에 대한 새로운 사고방식을 소개하고 운영, 가이드북, 플레이북 등 우리가 수행하고 재구성했던 모든 것을 새로운 방향으로 이끈다는 점에서 주목할 만한 성과다. 즉, 이것이 바로 데이터베이스 신뢰성 엔지니어링이다. - 폴 밸리(Paul Vallee) (파이시안(Pythian)의 사장 겸 CEO) |