책소개
Go 언어 고렙이 되고 싶은 모든 고퍼를 위한 책 Go 언어에 입문하고 재미를 알기 시작했는데 실무에 적용하기가 어렵다면 이 책이 안성맞춤이다. Go 언어로 소프트웨어 애플리케이션을 개발하며 실무에 바로 쓰이는 꿀팁을 배워보자. 커맨드 라인 도구, 웹 애플리케이션, gRPC 애플리케이션을 만들 수 있는 지식을 딱 필요한 만큼 배울 수 있다. 실전에서 발생할 만한 문제를 손으로 직접 해결해나가며 Go 레벨을 상승시키자.
목차
지은이·옮긴이 소개 x기술 감수자 소개 xi옮긴이 머리말 xii베타리더 후기 xiii감사의 글 xv이 책에 대하여 xvi시작하기 xixCHAPTER 1 커맨드 라인 애플리케이션 작성 11.1 첫 애플리케이션 11.2 유닛 테스트 작성 101.3 Flag 패키지 사용 17__1.3.1 플래그 파싱 로직 테스트 231.4 사용자 인터페이스 개선 26__1.4.1 중복된 오류 메시지 제거 26 __1.4.2 사용법 메시지 사용자 정의 28__1.4.3 위치 인수를 통해 이름 받기 291.5 유닛 테스트 업데이트 321.6 요약 37CHAPTER 2 고급 커맨드 라인 애플리케이션 382.1 서브커맨드 구현 38__2.1.1 서브커맨드 주도 애플리케이션 아키텍처 43 __2.1.2 메인 패키지 테스트 49__2.1.3 Cmd 패키지 테스트 522.2 강건한 애플리케이션 작성 54__2.2.1 데드라인을 사용한 사용자 입력 55 __2.2.2 사용자 시그널 처리 592.3 요약 64CHAPTER 3 HTTP 클라이언트 작성 653.1 데이터 다운로드 65__3.1.1 데이터 다운로더 테스트 673.2 수신 데이터 역직렬화 693.3 데이터 송신 753.4 바이너리 데이터 취급 823.5 요약 91CHAPTER 4 고급 HTTP 클라이언트 924.1 커스텀 HTTP 클라이언트 사용 92__4.1.1 과부화 상태의 서버에서 다운로드 92 __4.1.2 타임아웃 동작 테스트 97__4.1.3 리다이렉트 동작 설정 1004.2 사용자 요청 커스터마이징 1034.3 클라이언트 미들웨어 구현 105__4.3.1 RoundTripper 인터페이스 이해 106 __4.3.2 로깅 미들웨어 107__4.3.3 모든 요청에 헤더 추가 1104.4 커넥션 풀링 113__4.4.1 커넥션 풀 설정 1164.5 요약 118CHAPTER 5 HTTP 서버 작성 1195.1 첫 HTTP 서버 1195.2 요청 핸들러 설정 122__5.2.1 핸들러 함수 1235.3 서버 테스트 1265.4 Request 구조체 129__5.4.1 메서드 130 __5.4.2 URL 130 __5.4.3 Proto, ProtoMajor, ProtoMinor 131__5.4.4 Header 131 __5.4.5 Host 131 __5.4.6 Body 131__5.4.7 Form, PostForm 131 __5.4.8 MultipartForm 1325.5 Request 객체에 메타데이터 부착 1335.6 스트리밍 요청 처리 1375.7 응답 데이터 스트리밍 1435.8 요약 150CHAPTER 6 고급 HTTP 서버 애플리케이션 1516.1 Handler 타입 1516.2 핸들러 함수 간에 데이터 공유 1536.3 서버 미들웨어 작성 158__6.3.1 커스텀 HTTP 핸들러 기법 158 __6.3.2 HandlerFunc 기법 159__6.3.3 미들웨어 체이닝 1626.4 복잡한 서버 애플리케이션의 테스트 작성 167__6.4.1 코드 정리 167 __6.4.2 핸들러 함수 테스트 173__6.4.3 미들웨어 테스트 176 __6.4.4 초기 서버 시작 테스트 1786.5 요약 181CHAPTER 7 실서비스 가능한 HTTP 서버 1827.1 요청 핸들링 중단 182__7.1.1 요청 처리 중단 전략 186 __7.1.2 클라이언트 연결 끊김 처리 1917.2 서버단 타임아웃 195__7.2.1 모든 핸들러 함수에 타임아웃 구현 195 __7.2.2 서버 타임아웃 구현 196__7.2.3 우아한 종료 구현 2037.3 TLS를 활용한 보안 통신 207__7.3.1 TLS와 HTTP/2 구성 208 __7.3.2 TLS 서버 테스트 2127.4 요약 216CHAPTER 8 gRPC를 사용한 RPC 애플리케이션 개발 2178.1 gRPC와 프로토콜 버퍼 2178.2 첫 서비스 작성 221__8.2.1 서버 작성 223 __8.2.2 클라이언트 작성 229__8.2.3 서버 테스트 234 __8.2.4 클라이언트 테스트 2388.3 프로토콜 버퍼 메시지 살펴보기 241__8.3.1 마샬링과 언마샬링 241 __8.3.2 상위 호환성 및 하위 호환성 2478.4 여러 개의 서비스 2498.5 에러 핸들링 2568.6 요약 259CHAPTER 9 고급 gRPC 애플리케이션 2609.1 스트리밍 커뮤니케이션 260__9.1.1 서버 사이드 스트리밍 261__9.1.2 클라이언트 사이드 스트리밍 269__9.1.3 양방향 스트리밍 2729.2 임의의 데이터 송수신 2819.3 인터셉터를 활용한 미들웨어 구현 292__9.3.1 클라이언트 사이드 인터셉터 294 __9.3.2 서버 사이드 인터셉터 301__9.3.3 스트림 래핑 307 / 9.3.4 인터셉터 체이닝 3099.4 요약 311CHAPTER 10 실서비스 가능한 gRPC 애플리케이션 31210.1 TLS를 활용한 보안 통신 31210.2 서버의 강건성 315__10.2.1 헬스 체크 구현 316 __10.2.2 런타임 오류 처리 324__10.2.3 요청 처리 중단 32810.3 강건한 클라이언트 338__10.3.1 연결 구성 개선 338 __10.3.2 일시적인 장애 상황 대응 340__10.3.3 메서드 호출에 타임아웃 설정 34610.4 연결 관리 34810.5 요약 351CHAPTER 11 데이터 저장소 활용 35211.1 오브젝트 저장소 활용 353__11.1.1 패키지 서버 접근 및 활용 354 __11.1.2 패키지 업로드 테스트 365__11.1.3 기반 드라이버 타입 접근 36811.2 관계형 데이터베이스 활용 370__11.2.1 패키지 서버와 통합 372 __11.2.2 데이터 스토리지 테스트 383__11.2.3 데이터 타입 형 변환 388 __11.2.4 데이터베이스 트랜잭션 이용 39211.3 요약 394APPENDIX A 애플리케이션을 관측 가능하게 만들기 395A.1 로그, 메트릭, 그리고 트레이스 395A.2 텔레메트리 데이터 내보내기 399__A.2.1 커맨드 라인 애플리케이션 399__A.2.2 HTTP 애플리케이션 408__A.2.3 gRPC 애플리케이션 413A.3 요약 415APPENDIX B 애플리케이션 배포하기 415B.1 환경설정 정보 관리 415B.2 애플리케이션 배포 418B.3 서버 애플리케이션 배포 421B.4 요약 422찾아보기 423