Go 언어를 활용한 분산 서비스 개발 (Go 언어로 만들고 쿠버네티스로 배포하는 나만의 분산 서비스)

Go 언어를 활용한 분산 서비스 개발 (Go 언어로 만들고 쿠버네티스로 배포하는 나만의 분산 서비스)

$28.32
Description
분산 서비스 밑바닥부터 구축하고 나의 Go 능력은 하늘을 뚫고
Go 기본은 뗐고 스킬을 한 차원 높이고 싶다면, Go가 가장 빛나는 분야인 분산 서비스 구축에 도전해보자. 이 책은 gRPC 분산 서비스를 설계, 개발, 배포하는 방법을 자세히 살펴본다. 스토리지 처리의 기본 요소에서 시작해 클라이언트 및 서버 네트워킹을 숙련하고, 서버 인스턴스 배포, 구축, 테스트까지 나아간다. 차근차근 개념을 익히고 점진적으로 구현함으로써, 혼자 만들기 쉽지 않은 분산 서비스 프로젝트를 완수할 수 있다.
저자

트래비스제프리

(TravisJeffery)
2001년부터소프트웨어를개발하고있다.모카(Mocha),타임콥(Timecop)등의오픈소스프로젝트에참여했고,세그먼트(Segment),콘플루언트(Confluent)등의스타트업을창립했다

목차

옮긴이머리말ix
베타리더후기xi
추천사xiii
감사의글xv
이책에대하여xvii

PARTI시작

CHAPTER1프로젝트시작3
1.1분산시스템에HTTP의JSON서비스적용하기4
1.2프로젝트환경설정하기5
1.3커밋로그프로토타입만들기6
1.4HTTP의JSON만들기7
1.5서버실행하기10
1.6API테스트하기11
1.7마치며12

CHAPTER2프로토콜버퍼와구조체13
2.1프로토콜버퍼를쓰는이유15
__2.1.1일관된스키마15
__2.1.2버전관리제거15
__2.1.3줄어드는보일러플레이트코드16
__2.1.4확장성16
__2.1.5언어불가지론16
__2.1.6성능16
2.2프로토콜버퍼컴파일러설치하기16
2.3프로토콜버퍼로도메인자료형정의하기18
2.4프로토콜버퍼컴파일하기19
2.5생성한코드를이용하여작업하기21
2.6마치며22

CHAPTER3로그패키지작성23
3.1로그는강력한도구23
3.2로그의작동원리25
3.3로그만들기26
__3.3.1스토어만들기26
__3.3.2인덱스만들기32
__3.3.3세그먼트만들기38
__3.3.4로그코딩하기44
3.4마치며54

PART2네트워크

CHAPTER4gRPC요청처리57
4.1gRPC에관하여58
4.2서비스를만들때의목표58
4.3gRPC서비스정의하기60
4.4gRPC플러그인으로컴파일하기62
4.5gRPC서버구현하기62
__4.5.1gRPC의에러처리65
__4.5.2인터페이스를이용한의존관계역전70
4.6서버등록하기71
4.7gRPC서버와클라이언트테스트하기71
4.8마치며76

CHAPTER5서비스보안78
5.1서비스보안의세단계79
__5.1.1주고받는데이터의암호화79
__5.1.2클라이언트인증80
__5.1.3클라이언트권한81
5.2TLS로서버인증하기81
__5.2.1CFSSL로나만의CA작동하기81
5.3TLS상호인증으로클라이언트인증하기90
5.4ACL로권한부여하기92
5.5마치며104

CHAPTER6시스템관측105
6.1세종류의원격측정데이터105
__6.1.1메트릭106
__6.1.2구조화로그107
__6.1.3트레이스108
6.2서비스를관측가능하게만들기109
6.3마치며116

PART3분산

CHAPTER7서버간서비스디스커버리119
7.1서비스디스커버리를사용하는이유119
7.2서비스디스커버리넣어주기120
7.3서프를이용한서비스디스커버리122
7.4디스커버드서비스의요청과로그복제130
7.5디스커버리와종단간서비스의테스트142
7.6마치며146

CHAPTER8합의를통한서비스간조율148
8.1래프트알아보기148
__8.1.1리더선출149
__8.1.2로그복제150
8.2서비스에래프트구현하기151
__8.2.1래프트설정153
__8.2.2로그API157
__8.2.3유한상태머신159
__8.2.4스트림계층165
__8.2.5디스커버리통합167
__8.2.6분산로그테스트170
8.3하나의포트에서여러서비스를실행하는다중화173
8.4마치며180

CHAPTER9클라이언트측서버디스커버리와로드밸런싱181
9.1세가지로드밸런싱전략181
9.2gRPC클라이언트측로드밸런싱182
9.3서버를찾을수있게만들기184
9.4서버정보가져오기188
9.5피커로요청경로를정하고밸런스잡기195
9.6디스커버리와밸런싱종단간테스트200
9.7마치며202

출판사 서평

더이상Stop은없다Go스킬레벨업GoGo
Go언어로만들고쿠버네티스로배포하는나만의분산서비스

Go의강력한동시성기능덕분에도커,쿠버네티스,이스티오,Ectd,프로메테우스등의클라우드네이티브도구가개발될수있었다.엔지니어링스킬을향상하고자하는고퍼들을위해,이책에서는Go가가장빛나는분야인분산서비스를처음부터끝까지만들어볼수있다.

1부는프로젝트의준비단계로,1장에서는JSON서버를만들며앞으로만들프로젝트의감을잡고,2장은프로토콜버퍼(protobuf)를살펴본다.3장은프로젝트에서계속사용할커밋로그패키지를만들어본다.2부에서본격적인네트워크서비스구축에들어간다.4장은gRPC서비스및서버구현을다룬다.5장은서비스의보안(TLS)을,6장은관측가능성측면(로그,메트릭,트레이스)을살펴보고구현한다.

3부는여기까지만든서비스를분산화하여가용성,복원성,확장성을높인다.7장은서프를이용한서버측서비스디스커버리,8장은래프트를이용한합의를통한서비스간조율,9장은클라이언트측서버디스커버리및로드밸런싱을다룬다.4부는대망의배포다.10장은쿠버네티스와헬름을이용한로컬배포,11장은GKE로인터넷에배포하는방법을살펴본다.

스토리지처리의기본요소에서시작해클라이언트및서버네트워킹을숙련하고,서버인스턴스배포,구축,테스트까지분산서비스의모든과정을익힐수있다.웹에서돌아가는분산서비스하나를만들고배포한다는것,Go개발스킬을향상하는데이보다나은선택은없다.

주요내용
● 자신만의분산서비스를만들고오픈소스프로젝트에기여
● gRPC를사용하여네트워크화된보안클라이언트및서버구축
● 메트릭,로그,트레이스로계측되는관측가능한서비스를통해시스템디버깅
● 자체인증기관(CA)을만들어TLS로내부웹서비스인증
● 서비스디스커버리로클러스터상노드추가/제거자동처리
● 래프트(Raft)합의알고리즘에의한상태머신으로분산시스템조정
● 애플리케이션과라이브러리를모듈식으로구성하기
● 응용프로그램을구성하고실행할CLI작성
● 분산시스템을로컬에서실행하고쿠버네티스를사용해클라우드에배포
● 애플리케이션을테스트하고벤치마킹하기