
000 | 00000cam c2200205 c 4500 | |
001 | 000045963607 | |
005 | 20190805155022 | |
007 | ta | |
008 | 181206s2018 ulkad 000c kor | |
020 | ▼a 9791161751900 ▼g 94000 | |
040 | ▼a 211009 ▼c 211009 ▼d 211009 | |
041 | 1 | ▼a kor ▼h eng |
082 | 0 4 | ▼a 005.133 ▼2 23 |
085 | ▼a 005.133 ▼2 DDCK | |
090 | ▼a 005.133 ▼b G573 2018z15 | |
100 | 1 | ▼a Nic Jackson |
245 | 1 0 | ▼a Go 언어를 활용한 마이크로서비스 개발 : ▼b 매끄럽고 견고하면서도 효율적인 마이크로서비스 구현 / ▼d 닉 잭슨 지음 ; ▼e 이상식 옮김 |
246 | 3 9 | ▼a Building microservices with Go : ▼b build seamless, efficient, and robust microservices with Go |
260 | ▼a 서울 : ▼b 에이콘, ▼c 2018 | |
300 | ▼a 458 p. : ▼b 삽화, 도표 ; ▼c 24 cm | |
490 | 1 0 | ▼a acorn+Packt technical book 시리즈 |
504 | ▼a 색인수록 | |
546 | ▼a 영어로 된 원저작을 한국어로 번역 | |
700 | 1 | ▼a 이상식, ▼e 역 |
830 | 0 | ▼a Acorn+Packt technical book 시리즈 |
900 | 1 0 | ▼a 잭슨, 닉, ▼e 저 |
Holdings Information
No. | Location | Call Number | Accession No. | Availability | Due Date | Make a Reservation | Service |
---|---|---|---|---|---|---|---|
No. 1 | Location Sejong Academic Information Center/Science & Technology/ | Call Number 005.133 G573 2018z15 | Accession No. 151343373 | Availability Available | Due Date | Make a Reservation | Service |
Contents information
Book Introduction
마이크로서비스의 아키텍처를 소개한다. API 디자인·컨테이너화(Docker)·테스트·공통 아키텍처 패턴 등 마이크로서비스의 구축에 필수적인 내용부터 모니터링·보안·배포 등 서비스 운용과 관련된 고려 사항까지, 마이크로서비스의 설계와 개발 전반에 대해 다룬다. 마이크로서비스를 매끄럽고 견고하면서도 효율적으로 구현할 수 있도록 지원하는 Go의 언어적인 특성과 프레임워크를 비롯한 Go의 스택을 소개한다.
★ 이 책에서 다루는 내용 ★
- 마이크로서비스 계획 및 마이크로서비스 아키텍처 설계
- RESTful API와 데이터베이스를 사용한 마이크로서비스 작성
마이크로서비스 설계에 사용하는 일반적인 용어와 패턴 이해
- 마이크로서비스의 수평적 규모확장에 사용하는 도구와 자동화 방법
- 개발 주기를 획기적으로 개선해줄 Docker 및 Docker Compose를 사용한 컨테이너화 사용법
- 모니터링, 로깅, 서비스 탐색, 자동화를 통한 서비스 확장으로 안전하게 시스템을 관리하는 법
- Go 언어를 사용한 마이크로서비스 테스트 및 API 통합 테스트
★ 이 책의 대상 독자 ★
처음으로 마이크로서비스 아키텍처를 사용해 프로젝트에 적용할 만한 기술을 찾고 있는 개발자
★ 이 책의 구성 ★
1장, '마이크로 서비스 소개'에서는 Go 언어가 마이크로서비스 구축에 적합한 이유를 살펴보고, 기본적인 마이크로서비스를 작성하는 데 필요한 모든 구성 요소를 갖춘 표준 라이브러리를 살펴본다. 먼저 표준 요소를 살펴보면 나중에 설명하는 프레임워크가 얼마나 유용한지 더 잘 알 수 있다.
2장, '좋은 API 디자인하기'에서는 좋은 API의 조건을 살펴본다. REST와 RPC의 차이점을 설명하면서 REST와 RPC을 소개한다. 또한 API 작성 및 버전 관리의 우수 사례를 검토한다.
3장, 'Docker 소개'에서는 Docker 이미지로 애플리케이션을 래핑하는 방법과 개발 절차의 일부로 Docker 및 Docker Compose를 사용하는 방법을 설명한다. 애플리케이션에 필요한 작고 가벼운 이미지를 만드는 방법과 함께 Docker를 사용하고 Dockerfiles를 작성하는 좋은 관행도 알아본다.
4장, '테스트'에서는 마이크로서비스가 최고의 품질을 보장할 수 있도록 하는 다양한 기술을 소개한다. 단위 테스트, 행위 테스트 및 성능 테스트를 살펴보고 주요 테스트 프레임워크에 대한 실질적인 조언과 지식을 제공한다.
5장, '공통 패턴'에서는 마이크로서비스 아키텍처에서 자주 사용되는 표준 패턴 중 일부를 소개한다. 부하 분산, 회로 차단, 서비스 탐색 및 자동 조종 패턴을 자세히 살펴보고 이를 Go 언어에 맞게 구현하면 어떻게 되는지 살펴본다.
6장, '마이크로서비스 프레임워크'에서는 마이크로서비스에 필요한 많은 공통 기능을 구현하는 프레임워크를 살펴본다. 사용 예시를 통해 프레임워크들을 비교하고 대조해 본다.
7장, '로깅 및 모니터링'에서는 서비스가 올바르게 작동하는지 확인하기 위한 필수 기술을 알아보고, 정상 동작하지 않는 경우를 성공적으로 진단하고 디버깅하기 위한 모든 정보를 수집할 수 있도록 한다. 간단한 측정치 및 타이밍 정보를 위해 StatsD를 사용하는 방법, 로그 파일 정보를 처리하는 방법, 더 상세한 데이터를 기록하기 위한 접근 방법 및 서비스의 전체적인 개요를 제공하는 NewRelic과 같은 플랫폼을 알아본다.
8장, '보안'에서는 마이크로서비스의 인증, 권한 부여 및 보안을 살펴본다. JWT에 대해 알아보고, 요청을 확인하고 보안을 유지하기 위한 미들웨어의 구현 방법을 알아본다. 더 넓은 관점에서 TLS 암호화를 구현하는 이유, 서비스 간 비신뢰의 원칙을 적용하는 이유에 대해서도 설명한다.
9장, '이벤트 중심 아키텍처'에서는 이벤트를 사용해 마이크로서비스가 공동 작업을 수행할 수 있도록 하는 일반적인 패턴을 설명한다. 가장 일반적인 이벤트 패턴 중 두 가지를 배우고, Go에서 이를 구현할 수 있는 방법을 살펴본다. 또한 도메인 주도 디자인의 도입과 유비쿼터스 언어의 사용이 소프트웨어 개발 프로세스에 어떻게 도움이 되는지 알아본다.
10장, '지속적인 딜리버리'에서는 지속적인 딜리버리의 개념을 설명한다. 그 다음 이 책의 앞부분에서 작성한 간단한 애플리케이션 중 하나에 대한 지속적인 딜리버리 설정을 자세히 알아본다.
Information Provided By: :

Author Introduction
닉 잭슨(지은이)
HashiCorp.com에서 Developer Advocate로 근무하면서 개발자의 플랫폼 사용을 지원하는 업무를 수행 중이다. 20년 이상 소프트웨어를 개발하고 소프트웨어 개발팀을 이끈 경력이 있다. 모바일 애플리케이션과 마이크로서비스 아키텍처의 열렬한 팬이며, 코드를 효율적으로 재사용하고 개발 절차를 개선할 수 있는 방법을 끊임없이 찾고 있다. 여가 시간에는 코딩 도장(Coder Dojo, https://coderdojo.com/)에서 코딩 관행, 절차, 기법들에 대해 발표하거나 홍보를 하며 Women Who Go 및 GoBride 그룹을 가르치고 멘토링한다.
이상식(옮긴이)
성균관대학교 컴퓨터공학과를 졸업한 후 롯데캐피탈, 금융결제원을 거쳐 현재 금융보안원에서 일하고 있다. 현재 모의 해킹 업무를 수행하고 있지만 보안 외에도 파이썬 프로그래밍, 시스템 트레이딩 등 다양한 분야에 관심이 많다. 에이콘출판사에서 출간한 『iOS Application Security』(2017)를 공역했다.

Table of Contents
1장. 마이크로서비스 소개
__net/http로 간단한 웹 서버 만들기
__JSON 읽기 및 쓰기
____Go 구조체를 JSON으로 마샬링하기
____JSON을 Go 구조체로 언마샬링하기
__net/http를 사용한 라우팅
____경로
____편리한 핸들러
____FileServer
____NotFoundHandler
____RedirectHandler
____StripPrefix
____TimeoutHandler
____정적 파일 핸들러
____핸들러 만들기
__컨텍스트
____Background
____WithCancel
____WithDeadline
____WithTimeout
____WithValue
____컨텍스트 사용하기
__Go 표준 라이브러리의 RPC
____간단한 RPC 예제
____HTTP를 통한 RPC
____HTTP를 통한 JSON-RPC
__요약
2장. 좋은 API 디자인하기
__RESTful API
____URI
____URI 형식
____REST 서비스를 위한 URI 경로 설계
____HTTP 동사
____URI query design
____응답 코드
____HTTP 헤더
____자바스크립트에서 API에 접근하기
__RPC API
____RPC API 디자인
____Filtering
__API 버전 관리
____시맨틱 버전 관리
____REST API의 버전 관리 형식
____RPC API 버전 관리 형식
__객체 타입 표준화
____날짜
__API 문서화
____REST 기반 API
____RPC 기반 API
__요약
3장. Docker 소개
__Docker 컨테이너 소개
__Docker 설치
__Docker 볼륨
____유니온 파일 시스템
____볼륨 마운트
__Docker 포트
__이름을 지정해 시작한 컨테이너 제거하기
__Docker 네트워킹
____브리지 네트워킹
____호스트 네트워킹
____네트워크 단절
____오버레이 네트워크
____사용자 정의 네트워크 드라이버
____사용자 정의 브리지 네트워크 만들기
__Dockerfiles 작성
____Docker용 애플리케이션 코드 빌드하기
____Dockerfiles로 이미지 빌드하기
____컨테이너에서 데몬 실행하기
__Docker Compose
____리눅스에 Docker Compose 설치하기
____서비스 시작
____compose 파일의 위치 지정
____프로젝트 이름 지정
__요약
4장. 테스트
__테스트 피라미드
____단위 테스트
____의존성 주입과 모의 객체 만들기
____코드 커버리지
____Docker Compose로 테스트하기
__벤치마킹 및 프로파일링
____벤치마크
____프로파일링
__요약
5장. 공통 패턴
__실패에 대비한 설계
__패턴
____이벤트 처리
____타임 아웃
____백 오프
____회로 차단
____상태 점검
____쓰로틀링
____서비스 탐색
____부하 분산
____캐싱
__요약
6장. 마이크로서비스 프레임워크
__좋은 마이크로서비스 프레임워크의 조건
__Micro
____설정
____코드 생성
____도구 지원(CI/CD, 크로스 플랫폼)
____유지보수 가능성
____형식(REST/RPC)
____패턴
____언어 독립성
____다른 프레임워크와의 인터페이스 기능
____효율성
____품질
____오픈 소스
____보안
____지원
____확장성
____Micro에 대해 배운 것
__Kite
____설정
____코드 생성
____도구 지원
____유지보수 가능성
____형식
____패턴
____언어 독립성
____효율성
____품질
____오픈 소스
____보안
____지원
____확장성
____Kite 종합
__gRPC
____설정
____코드 생성
____도구 지원
____유지보수 가능성
____형식
____패턴
____언어 독립성
____효율성
____품질
____오픈 소스
____보안
____지원
____확장성
____gRPC에 대한 정리
__요약
7장. 로깅 및 모니터링
__로깅 모범 사례
__측정지표
____측정 지표로 가장 잘 표현되는 데이터 타입
____명명 규칙
____저장소 및 조회
____Grafana
__로깅
____상호 연관 ID를 사용한 분산 트레이스
____Elasticsearch, Logstash 및 Kibana(ELK)
____Kibana
__예외
____패닉 및 복구
__요약
8장. 보안
__암호화 및 서명
____대칭 키 암호화
____공개 키 암호화
____X.509 디지털 인증서
____TLS / SSL
__외부에 대한 보안
____2계층 또는 3계층 방화벽
____웹 애플리케이션 방화벽
____API 게이트웨이
____DDoS 방지
__애플리케이션 보안
____예방
____탐지
____대응
____복구
____권한 혼동
____공격자가 방화벽을 우회 할 수 있는 방법
__시나리오
____입력 유효성 검사
____TLS
____데이터 저장소 보안
____OWASP
____인증 및 권한 부여
____암호 해싱
____JWT
____보안 메시지
____공유 암호
____대용량 메시지의 비대칭 암호화
__유지 보수
____컨테이너 패치
____소프트웨어 업데이트
____애플리케이션 코드 패치
____로깅
__요약
9장. 이벤트 주도 아키텍처
__동기식과 비동기식 처리의 차이점
____동기식 처리
____비동기식 처리
__비동기 메시지의 유형
____풀/큐 메시징
____푸시 메시징
__명령과 조회의 역할 분리(CQRS)
__도메인 주도 설계
____DDD의 정의
____기술적 부채
____DDD의 세부 구조
__소프트웨어
____Kafka
____NATS.io
____AWS SNS/SQS
____Google Cloud Pub/Sub
__요약
10장. 지속적인 딜리버리
__지속적인 딜리버리의 개념
____수동 배포
____지속적인 딜리버리의 이점
____지속적인 딜리버리의 여러 관점
____지속적인 딜리버리 프로세스
____개요
__컨테이너 오케스트레이션의 정의
____컨테이너 오케스트레이션의 옵션
__불변 인프라의 정의
__Terraform
____공급자
____Terraform 구성 엔트리 포인트
____VPC 모듈
____출력 변수
____인프라 구축
__예제 애플리케이션
____지속적인 딜리버리 작업 흐름
__요약
Information Provided By: :
