데이터베이스 신뢰성 엔지니어링 : 탄력적인 데이터베이스 시스템 설계와 관리

데이터베이스 신뢰성 엔지니어링 : 탄력적인 데이터베이스 시스템 설계와 관리

$35.00
Description
과거 DBA의 역할이 DBRE(DataBase Reliability Engineering)라는 새로운 패러다임을 만나게 되면서 그 역할이 어떻게 변해야 하는지 설명한다. 먼저 DBRE의 개념을 소개하고 백업, 복구, 복제, 인덱스, 모니터링과 같은 데이터베이스 관리의 기초 영역에서부터 스토리지, 보안, 데이터 스토어 등 인프라 관점에서 데이터베이스 관리자의 역할을 살펴본다. 그리고 서비스 및 아키텍처 관점에서 서비스 수준 요구 사항, 위험 평가 관리, 배포 관리, 분산 데이터베이스 설계를 알아보고 마지막으로 DBRE 문화를 형성하는 방법과 DBA에서 DBRE의 역할로 전환할 수 있는 다양한 방법을 살펴본다.

저자

레인캠벨,채리티메이저스

저자:레인캠벨
패스틀리(Fastly)의프로덕션엔지니어링시니어디렉터(SeniorDirector)다.또한오바마포아메리카(ObamaforAmerica),액티비전콜오브듀티(ActivisionCallofDuty),어도비에코사인(AdobeEchosign),테크노라티(Technorati),라이브저널(Livejournal),젠데스크(Zendesk)와같은기업의데이터베이스요구사항을처리하는컨설팅회사인팔로미노DB(PalominoDB),블랙버드(Blackbird)의설립자이자CEO였다.18년동안대규모데이터베이스및분산시스템에서실무자로근무했다.

저자:채리티메이저스
Honeycomb.io의CEO이자창립자다.허니콤(Honeycomb)은로그수집기의원시정확도,시계열지표의속도,APM(ApplicationPerformanceMetrics)의유연성을결합해세계최초의진정한차세대분석서비스를제공한다.이전에Parse/Facebook의운영자였으며레디스(Redis),카산드라(Cassandra),MySQL와더불어대규모의몽고DB(MongoDB)를관리했다.또한페이스북의RocksDB팀과긴밀히협력해플러그형스토리지엔진API를사용해서세계최초의Mongo+Rocks를개발하고출시했다.

역자:이설민
엔씨소프트에서대규모트래픽을경험하며게임DBA로실무를시작했고,이후에는인프라기술PM으로서게임인프라아키텍처설계및운영업무를담당했다.신뢰성있는서비스를위한효율적인아키텍처설계및AI기술에관심이많으며현재는현대자동차에서커넥티드카서비스를위한데이터베이스총괄및클라우드기술관련업무를진행하고있다.

목차

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-트리순열
____로그와데이터베이스
__데이터복제
____싱글리더
______복제모델
______복제로그형식
______싱글리더복제사용
______단일리더복제의

출판사 서평

ㆍ이책에서다루는내용

-서비스레벨요구사항과위험관리
-운영가시성을위한아키텍처구축및진화
-인프라엔지니어링및관리
-릴리스프로세스를원활하게수행하는방법
-데이터저장,인덱싱,복제
-데이터스토어의특성식별과모범사례
-데이터스토어아키텍처의구성요소와데이터기반의아키텍처

ㆍ이책의대상독자

데이터스토어의설계,구축,안정적인운영에흥미가있는모든사람을대상으로한다.독자는데이터베이스의지식을넓히려고하는소프트웨어엔지니어혹은같은이유를가진시스템엔지니어일수도있다.스킬향상을원하는데이터베이스전문가라면여기서가치를발견할것이고,이업계에새로들어온사람이라면확실한이해를줄수있을것이다.

ㆍ이책의구성

1장은데이터베이스신뢰성엔지니어링(databasereliabilityengineering)의개념을소개한다.원칙을안내하는것에서출발해운영중심부로넘어가고마지막으로매슬로우의욕구계층(Maslow’shierarchyofneeds)을기반으로DBRE의비전을구축하기위한프레임워크를제시한다.

2장에서는서비스수준요구사항(servicelevelrequirements)을설명한다.이는제품을위한기능요구사항만큼이나중요하다.이장은서비스수준요구사항이무엇이고어떻게그것을정의하는지알아본다.이후에는이러한요구사항을측정하고처리하는방법을살펴본다.

3장에서는위험평가와관리(riskassessmentandmanagement)를알아본다.위험의기초적인측면을설명하고난후시스템및데이터베이스엔지니어링에위험평가를접목시키기위한실전프로세스를살펴본다.또한함정과복잡성도살펴본다.

4장에서는운영가시성(operationalvisibility)을다룬다.지표(metric)와이벤트를이야기하고이를측정하기위한계획을어떻게세우는지,시간이지남에따른반복작업은어떤게있는지알아본다.그리고모니터링시스템의구성요소와이를사용하는클라이언트를파헤친다.

5장과6장에서는인프라의엔지니어링과관리(infrastructureengineeringandmanagement)를자세히살펴본다.데이터스토어를위한호스트구축원칙을설명하고가상화와컨테이너,환경설정관리,자동화와오케스트레이션(orchestration)을살펴본다.이는데이터를저장하고접근하는시스템을구축하고자구동되는모든부분을이해할수있게도와준다.

7장에서는백업과복구(backupandrecovery)를다룬다.DBE를마스터로향하게하는가장중요한부분일것이다.데이터는유실하게되면게임끝이다.서비스수준요구사항에서출발해적절한백업과복구방법을평가하고,어떻게확장하는지그리고어떻게이처럼중요한부분과자주간과하기쉬운운영측면을테스트하는지평가한다.

8장에서는릴리스관리(releasemanagement)를살펴본다.데이터스토어에대한변경사항을어떻게테스트(test),빌드(build),배포(deploy)하는지와데이터접근코드나SQL에대한내용도살펴본다.

9장에서는보안(security)을다룬다.데이터보안은기업의생존에매우중요하다.끊임없이발전하는데이터인프라에서보안을계획하고관리하는방법에대한전략을다룬다.

10장에서는데이터스토리지와인덱스그리고복제(datastorage,indexing,andreplication)를다룬다.관계형데이터가저장되는방법을설명한후이를문자열정렬과로그구조의병합트리(logstructuredmergetree)를비교한다.인덱스의다양성을살펴보고난후데이터복제토폴로지를살펴본다.

11장은데이터스토어의필드가이드(datastorefieldguide)다.여기서는여러분이평가하고운영해야할데이터스토어에서찾을수있는수많은다양한속성을살펴본다.

12장에서는분산데이터베이스에사용되는좀더일반적인설계패턴과연관된파이프라인을살펴본다.먼저데이터베이스생태계(ecosystem)에전통적으로자리잡고있는아키텍처구성요소를살펴보는것부터시작해서이들이가진이점,복합성,일반적인사용법등을살펴본다.

13장에서는여러분조직에서데이터베이스신뢰성엔지니어링의문화를형성하는방법을다룬다.그리고오늘날의조직에서관리자(administrator)에서엔지니어로서DBRE의역할로전환할수있는다양한방법을살펴본다.

ㆍ지은이의말

이책에서는차세대데이터베이스전문가인데이터베이스신뢰성엔지니어(DBRE)를위한프레임워크를보여준다.먼저데이터베이스관리자란직업에어떤선입견이있는지떠올려보자.이불가사의한생명체와협력하고있는소프트웨어또는시스템엔지니어들은다음과같은선입견을갖고있을것이다.

전통적으로데이터베이스관리자(DBA)는데이터베이스(DB)내부를속속들이이해했다.그들은옵티마이저,쿼리엔진,특정시스템의성능기준에맞는튜닝과제작에능했다.이들은데이터베이스를더잘운영하고자다른기술을습득해야한다면그렇게했다.컴퓨터중앙처리장치(CPU)나디스크스핀들(diskspindles)부하를분산시키는방법,CPU친밀도(affinity)를사용하고자DB를설정하는방법,스토리지서브시스템을평가하는방법등을배웠다.

DBA가가시성(visibility)문제에직면했을때그들은핵심지표를식별하기위한그래프를만드는방법을배웠다.아키텍처의한계에직면했을때캐시계층에대해배웠고,개별노드의한계에부딪혔을때샤딩과같은새로운설계패턴의개발을배우며주도했다.이러한과정에서캐시무효화(cacheinvalidation),데이터리밸런싱(datarebalancing),순차DB변경(rollingDBchange)작업등과같은새로운운영기법을정복하고있었다.

하지만오랫동안DBA들은사일로(silo)와스노우플레이크(snowflake)를만드는비즈니스를하고있었다.그들이쓰는도구와하드웨어,언어는달랐다.DBA는SQL,시스템엔지니어는펄(perl),소프트웨어엔지니어는C++,웹개발자는PHP,네트워크엔지니어들은그들만의완벽한어플라이언스를만들고있었다.오직팀의절반정도만어떤식으로든버전관리시스템을사용하고있었고,철저하게서로의영역에관여하거나침범하지않았다.마치다른나라로들어가야하는것처럼보였다.

이런모델이효과적이고지속가능하다는것을증명할수있는시대는얼마남지않았다.이책은데이터베이스엔지니어링시야를통해바라본신뢰성엔지니어링의관점이다.모든사례를다루고있지는않지만여러분의경험에빗대어우리가중요하게여기는것을설명할것이다.이러한프레임워크는다양한데이터스토어,아키텍처,조직등에적용할수있을것이다.

ㆍ옮긴이의말

과거데이터베이스는스페셜리스트만의전유물이었다.설치는어려웠고튜닝은복잡했으며쿼리작성에조금만신경을못써도서비스에영향을미치게되는두려운존재였다.데이터베이스는아주예쁜유리병과도같았고이를잘다루려면오랜시간동안숙련된장인의손길이필요할것만같았다.하지만최근클라우드컴퓨팅,MSA아키텍처,자동화시스템등의기술발달로현대의데이터베이스는더이상그들만의전유물이아니게됐다.필요하면누구나쉽게접근할수있게진입장벽이낮아졌으며,또한어느정도까지는서비스도가능할정도로표준화됐다.

이러한시대의변화는자연스럽게데이터베이스를바라보는관점의변화를만들었으며이에따른데이터베이스관리자의역할도적지않게바뀌었다.이로인해DBRE라는새로운관점의데이터베이스관리가필요하게됐고그에맞는요구사항들이생겨나기시작했다.그렇다면DBRE의개념은무엇이며그동안데이터베이스관리자의역할과어떤점이다른지필연적으로궁금증이발생할것이다.

이책은이러한궁금증에대한답을제시한다.서비스,아키텍처,인프라등다양한관점에서데이터베이스를바라보고데이터베이스관리자의역할을재정의해어떤배경지식이필요한지설명한다.특히데이터베이스신뢰성이라는관점으로데이터베이스관리를지향하고있으며이를위해반복적인관리포인트를줄이고아키텍처나퍼포먼스에집중하고자프레임워크를만들고수행방안을전개한다.현대의데이터베이스가누구나사용가능하다고해서모두가데이터베이스를능숙하게다룰수있는것은분명아닐것이다.근본적으로데이터베이스관리자는내부구조,아키텍처,동작원리를학습해기본기가바탕이돼야함은DBRE의관점에서도변함이없다.

항상새로운기술이나타나고변화함에따라이에맞는도전과제들을수행하기위해서우리는배워야할게너무나많은세상을살고있다.많은데이터베이스관리자는DBRE라는용어를들어보지만않았을뿐이미이러한변화를피부로느끼며현업에서데이터베이스신뢰성향상을위해노력하고있을것이다.

이책이최근시대의환경변화로인해데이터베이스관리자의역할이어디까지인지고민하고있던사람에게조금이나마도움이되기를바란다.이책을통해다양한관점에서데이터베이스를생각해볼수있으며나아가우리가책임지고있는데이터베이스의신뢰성을좀더성숙하게발전시킬수있는전환점이될수있기를기대한다.

추천사

우리는전반적인데이터베이스산업에서전례없는변화와혼란의시기를목격하고있다.기술채택의생명주기는새로운도전과기회와함께머리를어지럽게만드는지점까지가속화됐다.
아키텍처는매우빠르게진화하고있어서지금까지익숙해진업무는더이상필요하지않게됐으며그렇게많이투자했던제반기술은이제거의연관이없다.보안,코드형인프라,클라우드의수용력(예를들어서비스형인프라와데이터베이스)과같은새로운혁신과압박으로인해우리가어떻게구축하고있는지재고할필요성을느끼게한다.
필연적으로기존의관리성작업부하에서벗어나아키텍처,자동화,소프트웨어엔지니어링,지속적인통합및배포,시스템편성기술등을강조하는프로세스로전환했다.그동안우리가보호하고관리해온데이터의가치와중요성은그규모만큼이나(혹은그이상으로)증가했고앞으로도그가치가증가하지않는미래는그려지지않는다.우리는이와같은세상에서무언가의미있고중요한차이를만들어낼수있는운이좋은위치에있다.
한때본인이뛰어난데이터베이스관리자라고의심없이생각했던많은사람은시대의흐름에압박받고있으며심지어뒤처질위험에처해있다.동시에이분야에뛰어든새로운사람들은조직의패러다임을갈망한다.이두가지상황에대한답은동일하다.학습의즐거움,자기계발,긍정적,열정그리고자신감이다.이는피할수없는고난과위험에도어떤업무를맡아그것을끝까지관철시키기위함이다.이책은데이터베이스인프라엔지니어링에대한새로운사고방식을소개하고운영,가이드북,플레이북등우리가수행하고재구성했던모든것을새로운방향으로이끈다는점에서주목할만한성과다.즉,이것이바로데이터베이스신뢰성엔지니어링이다.
-폴밸리(PaulVallee)(파이시안(Pythian)의사장겸CEO)