◈ 이 책에서 다루는 내용 ◈
◆ 서비스 레벨 요구사항과 위험 관리
◆ 운영 가시성을 위한 아키텍처 구축 및 진화
◆ 인프라 엔지니어링 및 관리
◆ 릴리스 프로세스를 원활하게 수행하는 방법
◆ 데이터 저장, 인덱싱, 복제
◆ 데이터 스토어의 특성 식별과 모범 사례
◆ 데이터 스토어 아키텍처의 구성 요소와 데이터 기반의 아키텍처
◈ 이 책의 대상 독자 ◈
데이터 스토어의 설계, 구축, 안정적인 운영에 흥미가 있는 모든 사람을 대상으로 한다. 독자는 데이터베이스의 지식을 넓히려고 하는 소프트웨어 엔지니어 혹은 같은 이유를 가진 시스템 엔지니어일 수도 있다. 스킬 향상을 원하는 데이터베이스 전문가라면 여기서 가치를 발견할 것이고, 이 업계에 새로 들어온 사람이라면 확실한 이해를 줄 수 있을 것이다.
◈ 이 책의 구성 ◈
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의 역할로 전환할 수 있는 다양한 방법을 살펴본다.
◈ 옮긴이의 말 ◈
과거 데이터베이스는 스페셜리스트만의 전유물이었다. 설치는 어려웠고 튜닝은 복잡했으며 쿼리 작성에 조금만 신경을 못 써도 서비스에 영향을 미치게 되는 두려운 존재였다. 데이터베이스는 아주 예쁜 유리병과도 같았고 이를 잘 다루려면 오랜 시간 동안 숙련된 장인의 손길이 필요할 것만 같았다. 하지만 최근 클라우드 컴퓨팅, MSA 아키텍처, 자동화 시스템 등의 기술 발달로 현대의 데이터베이스는 더이상 그들만의 전유물이 아니게 됐다. 필요하면 누구나 쉽게 접근할 수 있게 진입장벽이 낮아졌으며, 또한 어느 정도까지는 서비스도 가능할 정도로 표준화됐다.
이러한 시대의 변화는 자연스럽게 데이터베이스를 바라보는 관점의 변화를 만들었으며 이에 따른 데이터베이스 관리자의 역할도 적지 않게 바뀌었다. 이로 인해 DBRE라는 새로운 관점의 데이터베이스 관리가 필요하게 됐고 그에 맞는 요구 사항들이 생겨나기 시작했다. 그렇다면 DBRE의 개념은 무엇이며 그동안 데이터베이스 관리자의 역할과 어떤 점이 다른지 필연적으로 궁금증이 발생할 것이다.
이 책은 이러한 궁금증에 대한 답을 제시한다. 서비스, 아키텍처, 인프라 등 다양한 관점에서 데이터베이스를 바라보고 데이터베이스 관리자의 역할을 재정의해 어떤 배경지식이 필요한지 설명한다. 특히 데이터베이스 신뢰성이라는 관점으로 데이터베이스 관리를 지향하고 있으며 이를 위해 반복적인 관리 포인트를 줄이고 아키텍처나 퍼포먼스에 집중하고자 프레임워크를 만들고 수행 방안을 전개한다. 현대의 데이터베이스가 누구나 사용 가능하다고 해서 모두가 데이터베이스를 능숙하게 다룰 수 있는 것은 분명 아닐 것이다. 근본적으로 데이터베이스 관리자는 내부 구조, 아키텍처, 동작 원리를 학습해 기본기가 바탕이 돼야 함은 DBRE의 관점에서도 변함이 없다.
항상 새로운 기술이 나타나고 변화함에 따라 이에 맞는 도전 과제들을 수행하기 위해서 우리는 배워야 할 게 너무나 많은 세상을 살고 있다. 많은 데이터베이스 관리자는 DBRE라는 용어를 들어보지만 않았을 뿐 이미 이러한 변화를 피부로 느끼며 현업에서 데이터베이스 신뢰성 향상을 위해 노력하고 있을 것이다.
이 책이 최근 시대의 환경 변화로 인해 데이터베이스 관리자의 역할이 어디까지인지 고민하고 있던 사람에게 조금이나마 도움이 되기를 바란다. 이 책을 통해 다양한 관점에서 데이터베이스를 생각해볼 수 있으며 나아가 우리가 책임지고 있는 데이터베이스의 신뢰성을 좀 더 성숙하게 발전시킬 수 있는 전환점이 될 수 있기를 기대한다.