logo
logo
x
바코드검색
BOOKPRICE.co.kr
책, 도서 가격비교 사이트
바코드검색

인기 검색어

실시간 검색어

검색가능 서점

도서목록 제공

실무에 바로 쓰는 Go 언어 핸즈온 가이드

실무에 바로 쓰는 Go 언어 핸즈온 가이드

(Go 언어의 개념, 기능, 패턴부터 커맨드 라인, HTTP, gRPC 애플리케이션 개발까지)

아미트 사하 (지은이), 김찬빈 (옮긴이)
제이펍
35,000원

일반도서

검색중
서점 할인가 할인률 배송비 혜택/추가 실질최저가 구매하기
31,500원 -10% 0원
1,750원
29,750원 >
31,500원 -10% 0원
카드할인 10%
3,150원
28,350원 >
yes24 로딩중
교보문고 로딩중
11st 로딩중
영풍문고 로딩중
쿠팡 로딩중
쿠팡로켓 로딩중
G마켓 로딩중
notice_icon 검색 결과 내에 다른 책이 포함되어 있을 수 있습니다.

중고도서

검색중
서점 유형 등록개수 최저가 구매하기
알라딘 판매자 배송 22개 16,600원 >
로딩중

eBook

검색중
서점 정가 할인가 마일리지 실질최저가 구매하기
aladin 24,500원 -10% 1220원 20,830원 >

책 이미지

실무에 바로 쓰는 Go 언어 핸즈온 가이드
eBook 미리보기

책 정보

· 제목 : 실무에 바로 쓰는 Go 언어 핸즈온 가이드 (Go 언어의 개념, 기능, 패턴부터 커맨드 라인, HTTP, gRPC 애플리케이션 개발까지)
· 분류 : 국내도서 > 컴퓨터/모바일 > 프로그래밍 개발/방법론 > 네트워크 프로그래밍
· ISBN : 9791192469676
· 쪽수 : 456쪽
· 출판일 : 2022-12-26

책 소개

업무에 Go 언어를 사용하고 있는 고퍼라면 마주칠 수 있는 문제들을 깔끔하게 풀어주는 책이다. 우선 프로그래밍 언어를 활용하여 다양한 범주의 애플리케이션을 개발하기 위한 개념과 패턴을 소개하고, 실서비스 가능한 커맨드 라인 애플리케이션, HTTP 애플리케이션, gRPC 애플리케이션에 초점을 맞춘다.

목차

지은이·옮긴이 소개 x
기술 감수자 소개 xi
옮긴이 머리말 xii
베타리더 후기 xiii
감사의 글 xv
이 책에 대하여 xvi
시작하기 xix

CHAPTER 1 커맨드 라인 애플리케이션 작성 1
1.1 첫 애플리케이션 1
1.2 유닛 테스트 작성 10
1.3 Flag 패키지 사용 17
__1.3.1 플래그 파싱 로직 테스트 23
1.4 사용자 인터페이스 개선 26
__1.4.1 중복된 오류 메시지 제거 26
__1.4.2 사용법 메시지 사용자 정의 28
__1.4.3 위치 인수를 통해 이름 받기 29
1.5 유닛 테스트 업데이트 32
1.6 요약 37

CHAPTER 2 고급 커맨드 라인 애플리케이션 38
2.1 서브커맨드 구현 38
__2.1.1 서브커맨드 주도 애플리케이션 아키텍처 43
__2.1.2 메인 패키지 테스트 49
__2.1.3 Cmd 패키지 테스트 52
2.2 강건한 애플리케이션 작성 54
__2.2.1 데드라인을 사용한 사용자 입력 55
__2.2.2 사용자 시그널 처리 59
2.3 요약 64

CHAPTER 3 HTTP 클라이언트 작성 65
3.1 데이터 다운로드 65
__3.1.1 데이터 다운로더 테스트 67
3.2 수신 데이터 역직렬화 69
3.3 데이터 송신 75
3.4 바이너리 데이터 취급 82
3.5 요약 91

CHAPTER 4 고급 HTTP 클라이언트 92
4.1 커스텀 HTTP 클라이언트 사용 92
__4.1.1 과부화 상태의 서버에서 다운로드 92
__4.1.2 타임아웃 동작 테스트 97
__4.1.3 리다이렉트 동작 설정 100
4.2 사용자 요청 커스터마이징 103
4.3 클라이언트 미들웨어 구현 105
__4.3.1 RoundTripper 인터페이스 이해 106
__4.3.2 로깅 미들웨어 107
__4.3.3 모든 요청에 헤더 추가 110
4.4 커넥션 풀링 113
__4.4.1 커넥션 풀 설정 116
4.5 요약 118

CHAPTER 5 HTTP 서버 작성 119
5.1 첫 HTTP 서버 119
5.2 요청 핸들러 설정 122
__5.2.1 핸들러 함수 123
5.3 서버 테스트 126
5.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 132
5.5 Request 객체에 메타데이터 부착 133
5.6 스트리밍 요청 처리 137
5.7 응답 데이터 스트리밍 143
5.8 요약 150

CHAPTER 6 고급 HTTP 서버 애플리케이션 151
6.1 Handler 타입 151
6.2 핸들러 함수 간에 데이터 공유 153
6.3 서버 미들웨어 작성 158
__6.3.1 커스텀 HTTP 핸들러 기법 158
__6.3.2 HandlerFunc 기법 159
__6.3.3 미들웨어 체이닝 162
6.4 복잡한 서버 애플리케이션의 테스트 작성 167
__6.4.1 코드 정리 167
__6.4.2 핸들러 함수 테스트 173
__6.4.3 미들웨어 테스트 176
__6.4.4 초기 서버 시작 테스트 178
6.5 요약 181

CHAPTER 7 실서비스 가능한 HTTP 서버 182
7.1 요청 핸들링 중단 182
__7.1.1 요청 처리 중단 전략 186
__7.1.2 클라이언트 연결 끊김 처리 191
7.2 서버단 타임아웃 195
__7.2.1 모든 핸들러 함수에 타임아웃 구현 195
__7.2.2 서버 타임아웃 구현 196
__7.2.3 우아한 종료 구현 203
7.3 TLS를 활용한 보안 통신 207
__7.3.1 TLS와 HTTP/2 구성 208
__7.3.2 TLS 서버 테스트 212
7.4 요약 216

CHAPTER 8 gRPC를 사용한 RPC 애플리케이션 개발 217
8.1 gRPC와 프로토콜 버퍼 217
8.2 첫 서비스 작성 221
__8.2.1 서버 작성 223
__8.2.2 클라이언트 작성 229
__8.2.3 서버 테스트 234
__8.2.4 클라이언트 테스트 238
8.3 프로토콜 버퍼 메시지 살펴보기 241
__8.3.1 마샬링과 언마샬링 241
__8.3.2 상위 호환성 및 하위 호환성 247
8.4 여러 개의 서비스 249
8.5 에러 핸들링 256
8.6 요약 259

CHAPTER 9 고급 gRPC 애플리케이션 260
9.1 스트리밍 커뮤니케이션 260
__9.1.1 서버 사이드 스트리밍 261
__9.1.2 클라이언트 사이드 스트리밍 269
__9.1.3 양방향 스트리밍 272
9.2 임의의 데이터 송수신 281
9.3 인터셉터를 활용한 미들웨어 구현 292
__9.3.1 클라이언트 사이드 인터셉터 294
__9.3.2 서버 사이드 인터셉터 301
__9.3.3 스트림 래핑 307 / 9.3.4 인터셉터 체이닝 309
9.4 요약 311

CHAPTER 10 실서비스 가능한 gRPC 애플리케이션 312
10.1 TLS를 활용한 보안 통신 312
10.2 서버의 강건성 315
__10.2.1 헬스 체크 구현 316
__10.2.2 런타임 오류 처리 324
__10.2.3 요청 처리 중단 328
10.3 강건한 클라이언트 338
__10.3.1 연결 구성 개선 338
__10.3.2 일시적인 장애 상황 대응 340
__10.3.3 메서드 호출에 타임아웃 설정 346
10.4 연결 관리 348
10.5 요약 351

CHAPTER 11 데이터 저장소 활용 352
11.1 오브젝트 저장소 활용 353
__11.1.1 패키지 서버 접근 및 활용 354
__11.1.2 패키지 업로드 테스트 365
__11.1.3 기반 드라이버 타입 접근 368
11.2 관계형 데이터베이스 활용 370
__11.2.1 패키지 서버와 통합 372
__11.2.2 데이터 스토리지 테스트 383
__11.2.3 데이터 타입 형 변환 388
__11.2.4 데이터베이스 트랜잭션 이용 392
11.3 요약 394

APPENDIX A 애플리케이션을 관측 가능하게 만들기 395
A.1 로그, 메트릭, 그리고 트레이스 395
A.2 텔레메트리 데이터 내보내기 399
__A.2.1 커맨드 라인 애플리케이션 399
__A.2.2 HTTP 애플리케이션 408
__A.2.3 gRPC 애플리케이션 413
A.3 요약 415

APPENDIX B 애플리케이션 배포하기 415
B.1 환경설정 정보 관리 415
B.2 애플리케이션 배포 418
B.3 서버 애플리케이션 배포 421
B.4 요약 422

찾아보기 423

저자소개

아미트 사하 (지은이)    정보 더보기
호주 시드니에 위치한 아틀라시안의 소프트웨어 엔지니어다. 저서로는 《파이썬으로 풀어보는 수학》(에이콘출판사, 2016)와 《Write Your First Program》(PHI Learning, 2013)이 있다. 작성한 글들은 기술 잡지, 학회, 연구 저널 등에 등재되었다.
펼치기
김찬빈 (옮긴이)    정보 더보기
숭실대학교에서 정보통신공학 학사와 석사를 취득하였다. Go 언어의 매력에 빠져 2017년부터 시스템 엔지니어로 근무하며 다양한 시스템 도구와 대규모 트래픽 서비스를 Go 언어로 구현하고 운영하였다. 또한, 기존에 작성된 시스템 중 개선이 필요한 부분을 Go 언어로 포팅하여 비약적인 성능 향상을 이루기도 했다. 평소 동료 개발자들에게 Go 언어의 매력을 전하는 한편, 백발의 개발자를 꿈꾸며 개발과 삽질을 즐기는 중이다. 옮긴 책으로 《Go 언어를 활용한 네트워크 프로그래밍》(제이펍, 2022)이 있다.
펼치기

책속에서



위와 같이 flag 패키지는 커맨드 라인 애플리케이션의 인자를 처리하기 위한 표준 동작의 타입과 메서드를 구현합니다. 애플리케이션 실행 시에 -h를 지정해주면 그 외의 모든 인수를 무시하고 애플리케이션 사용법을 출력합니다. / 애플리케이션의 옵션은 보통 필수적인 옵션과 부가적인 옵션이 공존합니다. / 위치 인수는 필수적인 옵션 뒤에 위치한다는 사실을 주의 깊게 봐주세요. flag 패키지는 위치 인수를 파싱하는 순간 -, --으로 시작하는 옵션을 처리하지 않습니다.


이 함수는 SIGINT 시그널과 SIGTERM 시그널을 처리할 수 있는 기본적인 방법을 구현합니다. 먼저 os 패키지에 정의된 Signal 구조체 타입의 처리 수용력이 1인 채널을 생성합니다. 그리고 signal 패키지의 Notify() 함수를 호출하여 syscall.SIGINT 시그널과 syscall.SIGTERM 시그널에 수신 채널을 설정합니다. 이후에는 해당 시그널을 대기하기 위하여 고루틴을 생성합니다. 시그널을 수신하면 cancelFunc() 함수를 호출하게 되는데, 이 함수는 위에서 생성된 ctx 콘텍스트를 취소하는 함수입니다. 해당 함수를 호출하게 되면 os.execCommandContext() 함수의 구현체가 내부에서 이를 인지하고 커맨드를 강제로 중단합니다.


이 포스팅은 쿠팡 파트너스 활동의 일환으로,
이에 따른 일정액의 수수료를 제공받습니다.
이 포스팅은 제휴마케팅이 포함된 광고로 커미션을 지급 받습니다.
도서 DB 제공 : 알라딘 서점(www.aladin.co.kr)
최근 본 책
9791192469881