Go로 구현하는 클라우드 네이티브 애플리케이션 (클라우드와 MSA 기반의 고성능 웹앱 개발하기)

Go로 구현하는 클라우드 네이티브 애플리케이션 (클라우드와 MSA 기반의 고성능 웹앱 개발하기)

$36.19
Description
도커와 쿠버네티스의 개발 언어인 Go를 사용해 AWS상의 여러 핵심 서비스로 구성되는 마이크로서비스 아키텍처(MSA) 기반의 클라우드 네이티브 애플리케이션 개발을 다룬다. 기본적인 Go 언어 문법과 웹 개발 기초 지식이 있는 독자를 대상으로 현대적인 애플리케이션 구현에 필요한 아키텍처, 보안, 배포, 모니터링, 디자인 패턴 등 전반적인 지식을 실제 코드를 통해 학습할 수 있다.
저자

미나안드라오스

(MinaAndrawos)
Go언어를개인적,전문적으로사용해깊은경험을쌓은숙련된엔지니어다.Go언어에대한글과교재를정기적으로저술하고Go의오픈소스프로젝트를공유하며다양한복잡도를가진수많은Go애플리케이션을작성했다.
Go이외에는자바,C#,파이썬,C++기술을보유하고있으며,다양한데이터베이스와소프트웨어아키텍처로작업하고있다.또한소프트웨어개발을위한애자일방법론에도능숙하다.소프트웨어개발외에는스크럼마스터링,기술영업,소프트웨어제품관리에대한실무경험이있다.

목차

1장.현대적인마이크로서비스아키텍처

__왜Go언어인가?
__기본설계목표
__클라우드서비스모델
__클라우드애플리케이션아키텍처패턴
____12요소앱
____마이크로서비스란무엇인가?
____마이크로서비스배포
____REST웹서비스와비동기식메시징
__MyEvents플랫폼
__요약

02장.RestAPI를사용한마이크로서비스구축

__배경
____마이크로서비스란?
______마이크로서비스의내부
__RESTful웹API
____Gorilla웹툴킷
__RestfulAPI구현
____지속성계층
____몽고DB
____몽고DB와Go언어
__RESTfulAPI핸들러함수구현
__요약

03장.마이크로서비스보안

__HTTPS
____대칭암호화방식
______HTTPS에서대칭키알고리듬
____비대칭암호화방식
______HTTP에서비대칭암호화방식
__Go에서의안전한웹서비스
____인증서얻기
______OpenSSL
______generate_cert.go
____Go에서HTTPS서버구축
__요약

04장.메시지큐를사용한비동기마이크로서비스아키텍처

__발행/구독패턴
__예약서비스소개
__이벤트콜라보레이션
__RabbitMQ로발행/구독구현
____고급메시지큐잉프로토콜
____도커로하는RabbitMQ빠른시작
____고급RabbitMQ설정
____Go로RabbitMQ연결
____AMQP메시지발행과구독
____이벤트배출자작성
____이벤트구독자작성
____예약서비스작성
__이벤트소싱
__아파치카프카로발행/구독과이벤트소싱구현
____도커로카프카빨리시작
____아파치카프카의기본원칙
____Go로카프카에연결
____카프카로메시지발행
____카프카에서메시지소비
__요약

05장.리액트로프론트엔드구축

__리액트시작
____Node.js와타입스크립트설정
____리액트프로젝트초기화
__리액트기본원칙
____MyEvents프론트엔드시동걸기
____이벤트리스트구현
______자신의클라이언트가져오기
__이벤트리스트구성요소구축
____백엔드서비스에서CORS활성화
____이벤트리스트테스트
____라우팅과내비게이션추가
____예약프로세스구현
__요약

06장.컨테이너로애플리케이션배포

__컨테이너란?
__도커소개
____간단한컨테이너실행
____자신만의이미지작성
____컨테이너들의네트워킹
__볼륨으로작업
____컨테이너작성
______백엔드서비스들을위한컨테이너작성
____더작은이미지들을위한정적컴파일기능사용
____프론트엔드용컨테이너작성
__도커컴포즈로애플리케이션배포
__이미지발행
__애플리케이션을클라우드에배포
__쿠버네티스소개
____MiniKube로로컬쿠버네티스설정
____쿠버네티스의핵심개념
____서비스
____지속볼륨
____MyEvents를쿠버네티스로배포
______RabbitMQ브로커생성
________몽고DB컨테이너생성
________쿠버네티스에서이미지사용가능하게만들기
________MyEvents구성요소배포
________HTTP인그레스구성
__요약

07장.AWSI:기초,Go를위한AWSSDK와EC2

__AWS기초
____AWS콘솔
____AWS커맨드라인인터페이스(CLI)
____AWS리전과존
____AWS태그
____AWS일래스틱빈스톡
__AWS서비스
____GO를위한AWSSDK
______AWS리전구성
______AWSSDK인증구성
________IAM사용자생성
________IAM역할생성
____Go를위한AWSSDK의기초
______세션
______서비스클라이언트
______네이티브데이터타입
______공유구성
______페이지매기기메서드
______대기
______에러처리
____EC2
______EC2인스턴스생성
______EC2인스턴스생성
________리눅스나맥OS머신에서EC2인스턴스접속
________윈도우에서EC2접속
________보안그룹
__요약

08장.AWSII:S3,SQS,API게이트웨이,다이나모DB

__S3
____S3구성
__SQS
__AWSAPI게이트웨이
__다이나모DB
____다이나모DB구성요소
______속성값데이터타입
____기본키
____보조인덱스
____테이블생성
____Go언어와다이나모DB
__요약

09장.지속적인배포

__프로젝트설정
____버전관리설정
____의존성벤더링
__TravisCI사용
__쿠버네티스에배포
____GitLab사용
______GitLab설정
______GitLabCI설정
__요약

10장.애플리케이션모니터링

__프로메테우스와그라파나설정
____프로메테우스의기본
____프로메테우스초기구성파일생성
______도커로프로메테우스실행
______도커에서그라파나실행
__지표내보내기
____Go애플리케이션에서프로메테우스클라이언트사용
____프로메테우스스크래핑대상구성
____맞춤형지표내보내기
__프로메테우스를쿠버네티스에서실행
__요약

11장.마이그레이션

__모놀리식애플리케이션이란?
__마이크로서비스란?
__모놀리식애플리케이션을마이크로서비스로마이그레이션
____사람과기술
____모놀리식애플리케이션을여러조각으로자르기
____어떻게코드를깨뜨릴까?
____글루코드
__마이크로서비스디자인패턴
____이타적아키텍처
____4계층연계플랫폼
____도메인주도설계에서경계맥락
______데이터일관성
______데이터일관성을위한이벤트주도아키텍처
______이벤트소싱
______CQRS
__요약

12장.Go가나아갈방향

__마이크로서비스통신
____프로토콜버퍼
____GRPC
__AWS추가사항
____다이나모DB스트림
____AWS에서의오토스케일링
____아마존관계형데이터베이스서비스
__기타클라우드제공자
____마이크로소프트애저
____구글클라우드플랫폼
____오픈스택
__클라우드에서컨테이너실행
__서버리스아키텍처
__요약

출판사 서평

◈이책에서다루는내용◈

◆현대적인소프트웨어애플리케이션아키텍처이해
◆다른서비스와효과적으로통신할수있는안전한마이크로서비스구현
◆카프카,Rabbitmq,AWSSQS와같은메시지큐를활용한이벤트주도아키텍처
◆몽고DB,AWS의다이나모DB와같은현대적인핵심데이터베이스기술이해
◆컨테이너와쿠버네티스활용
◆AWS기초탐구
◆S3,SQS,다이나모DB등아마존클라우드의핵심서비스와연계된Go언어활용
◆타입스크립트를사용한프론트엔드애플리케이션작성
◆현대적인애플리케이션의지속적배포구현

◈이책의대상독자◈

보안성,회복력(탄력성),견고성,확장성을갖춘클라우드네이티브애플리케이션구축을원하는Go개발자를대상으로한다.웹서비스와웹프로그래밍의기초지식은이책을마치는데큰도움이될것이다.

◈이책의구성◈

1장,‘현대적인마이크로서비스아키텍처’에서는클라우드기반애플리케이션의일반적인기능과마이크로서비스아키텍처를설명한다.
2장,‘RESTAPI를사용한마이크로서비스구축’에서는Go언어로현대적인마이크로서비스를만드는방법을설명하는데,중요하고고려해야하는주제를다룬다.
3장,‘마이크로서비스보안’에서는마이크로서비스를안전하게하는방법을보여준다.Go언어로어떻게인증서와HTTPS를다루는지알아본다.
4장,‘메시지큐를사용한비동기마이크로서비스아키텍처’에서는메시지큐를사용해비동기마이크로서비스아키텍처를구현하는방법을보여준다.
5장,‘리액트로프론트엔드구축’에서는자바스크립트세계로잠시떠나마이크로서비스기반프로젝트의웹프론트엔드를리액트프레임워크로어떻게구축하는지보여준다.
6장,‘컨테이너로애플리케이션배포’에서는애플리케이션컨테이너를사용해이식과재현이가능한방식으로Go애플리케이션을배포하는방법을보여준다.
7장,‘AWSI:기초,Go를위한AWSSDK와EC2’는AWS생태계를다루는두개의장중첫번째다.7장에서는AWS의실용적인세부사항을다룬다.
8장,‘AWSII:S3,SQS,API게이트웨이,다이나모DB’에서는AWS생태계를좀더상세하게다룬다.AWS세계에서인기있는서비스들로더깊이들어갈것이다.
9장,‘지속적인배포’에서는Go애플리케이션을위한기본적인지속적인배포파이프라인구현방법을설명한다.이를위해지속적인배포CD,지속적배포의기본원칙을기술하고TravisCI와깃랩같은도구를사용해간단한파이프라인구현방법을설명한다.
10장,‘애플리케이션모니터링’에서는프로메테우스와그라파나를사용해마이크로서비스아키텍처를어떻게모니터링하는지보여준다.
11장,‘마이그레이션’에서는예전부터사용한모놀리식애플리케이션을클라우드에준비된현대적인마이크로서비스애플리케이션으로마이그레이션할때고려해야하는실용적인요소와접근방식을다룬다.
12장,‘Go가나아갈방향’에서는전통적인방식의대안적통신프로토콜,AWS외기타클라우드제공자및차세대빅트렌드로자리잡을새로운아키텍처패러다임과같은탐구할가치가있는현대적인클라우드관련기술을다룬다.

◈옮긴이의말◈

처음클라우드컴퓨팅이란단어를접한건2008년말국내신문기사에서이단어가최초로언급되기시작할때다.당시에는AWS만이공용클라우드서비스를제공하던시기로,클라우드의개념자체가미리준비된공유형의IT자원을필요시신속히제공받고사용한만큼의비용만내는구독형태로,기존에는없던서비스형인프라를말했다.
즉,인프라가중심인클라우드개념으로앱은손대지않고기존구성그대로클라우드에이전하면자원을탄력적으로사용할수있어IT비용이절감된다고인식됐다.하지만클라우드로기존앱을그대로이전만하면IT비용이확줄어들까?
안타깝게도기업내부의IT자원제약하에서실행되던전통적인모놀리식앱이무제한의클라우드환경에서할당된자원을점유하며추가자원을사용하는구조로인해실제예상한만큼의비용절감효과를얻기는힘들다.
결국기존앱은이책의제목과같이그자체를현대화해오픈소스기술기반으로클라우드네이티브(최대한활용)하게탄력적으로바뀌어야한다.
현대적인앱은컨테이너기반의자원격리기술을사용해기존VM방식에비해훨씬탄력적으로사용한다.전통적인모놀리식앱과는다르게마이크로서비스아키텍처를적용해기능별서비스단위로컨테이너화해운영함으로써특정비즈니스로직을담고있는코드의수정이필요할때신속한반영과배포(CI/CD)가가능하다.또한사용자트래픽증가에따라처리에필요한서비스만빠른자동확장이되는구조다.애자일서비스측면과비용측면모두만족시키는온라인비즈니스플랫폼을구축할때의피할수없는선택지로이책이그기반을다지는데많은도움이될것이다.