장바구니 담기 close

장바구니에 상품을 담았습니다.

Go 프로그래밍 쿡북 2/e

Go 프로그래밍 쿡북 2/e

  • 애런토레스
  • |
  • 에이콘출판
  • |
  • 2022-02-28 출간
  • |
  • 508페이지
  • |
  • 188 X 235 X 47 mm
  • |
  • ISBN 9791161756158
판매가

35,000원

즉시할인가

31,500

배송비

무료배송

(제주/도서산간 배송 추가비용:3,000원)

수량
+ -
총주문금액
31,500

※ 스프링제본 상품은 반품/교환/환불이 불가능하므로 신중하게 선택하여 주시기 바랍니다.

출판사서평




◈ 이 책에서 다루는 내용 ◈

◆ 필요에 따른 수정을 통한 서드 파티 Go 프로젝트 활용 방법
◆ 최신 모범 사례를 사용한 Go 코드 작성 방법
◆ 새로운 Go 모듈 시스템을 활용한 의존성 관리
◆ 백엔드 시스템 또는 데브옵스(DevOps)를 처리할 때 발생하는 일반적인 문제 해결 방법
◆ Go 표준 라이브러리 및 사용 방법
◆ Go 애플리케이션의 테스트, 프로파일링, 세부 튜닝


◈ 이 책의 대상 독자 ◈

웹 개발자, 프로그래머, 기업 제품 개발자를 대상으로 하며 Go 언어에 대한 기본 지식이 있다고 가정한다. 백엔드 애플리케이션 개발 경험이 있다면 일부 기법의 동기를 이해하는 데 도움이 되지만 경험이 없더라도 충분히 내용을 이해할 수 있다.
이 책은 이미 익숙히 알고 있던 내용을 상기시키거나 예제, 참고 자료가 필요한 Go 개발자를 위한 훌륭한 참고 자료를 제공한다. 오픈소스 저장소를 통해 이런 예제들을 팀과 빠르게 공유할 수 있다. Go 프로그래밍에 대한 일반적인 문제나 일반적이지 않은 문제의 빠른 해답을 찾고 있다면 도움이 될 것이다.


◈ 이 책의 구성 ◈

1장, ‘I/O와 파일 시스템’에서는 일반적인 Go의 I/O 인터페이스에 대한 내용을 다루며 파일 시스템 관련 작업을 살펴보며 임시 파일, 템플릿, CSV 파일을 설명한다.
2장, ‘명령줄 도구’에서는 명령줄을 통해 사용자 입력을 받는 내용을 다루며 TOML, YAML, JSON과 같은 일반적인 데이터 타입 처리를 살펴본다.
3장, ‘데이터 변환 및 구성’에서는 Go 인터페이스와 데이터 타입 간의 형 변환과 변환 방법을 설명하며, 인코딩 전략과 Go를 위한 기능적 디자인 패턴도 보여준다.
4장, ‘Go의 오류 처리’에서는 Go에서 오류를 처리하기 위한 전략을 보여준다. 오류 전달, 처리, 로그를 기록하는 방법을 살펴본다.
5장, ‘네트워크 프로그래밍’에서는 UDP, TCP/IP와 같은 다양한 네트워킹 기본 요소의 사용법을 보여준다. 또한 원시 이메일 메시지와 기본적인 원격 프로시저 호출(RPC)을 사용해 DNS(Domain Name System)에 대한 내용을 살펴본다.
6장, ‘데이터베이스와 저장소의 모든 것’에서는 MySQL과 같은 데이터 저장 시스템을 사용하기 위한 다양한 저장 라이브러리를 다룬다. 인터페이스를 사용해 애플리케이션 로직으로부터 라이브러리를 분리하는 방법을 보여준다.
7장, ‘웹 클라이언트 및 API’에서는 Go HTTP 클라이언트 인터페이스, REST 클라이언트, OAuth2 클라이언트의 구현 및 확장을 살펴보고 gRPC를 구현한다.
8장, ‘Go의 애플리케이션용 마이크로서비스’ 상태(state)를 핸들러(handler)로 전달하고, 사용자 입력과 미들웨어의 유효성 검사를 위한 웹 핸들러를 살펴본다.
9장, ‘Go 코드 테스트하기’에서는 모의 테스트(mocking), 테스트 커버리지(test coverage), 퍼징(fuzzing), 동작 테스트(behavior testing), 유용한 테스트 도구에 초점을 맞추고 관련 내용을 살펴본다.
10장, ‘병렬 처리와 동시성’에서는 채널(channel)과 비동기 작업, 원자(atomic) 값, Go 컨텍스트 객체, 채널 상태 관리에 대해 참고할 수 있는 내용을 제공한다.
11장, ‘분산 시스템’에서는 서비스 검색, 도커(Docker) 컨테이너화, 측정 및 모니터링, 컨테이너 오케스트레이션(orchestration)을 구현한다. 또한 11장에서는 대부분 Go 애플리케이션의 배포와 제품화 과정을 다룬다.
12장, ‘반응형 프로그래밍과 데이터 스트림’에서는 반응형 애플리케이션(reactive programming)과 데이터 흐름(dataflow) 애플리케이션, 카프카(Kafka)와 분산 메시지 큐, GraphQL 서버를 살펴본다.
13장, ‘서버리스 프로그래밍’에서는 서버를 유지하지 않고 Go 애플리케이션을 배포하는 방법을 다룬다. 여기에는 구글 앱 엔진(Google App Engine), 파이어베이스(Firebase), 람다(Lambda)와 서버리스(serverless) 환경에서 로깅(logging)을 사용하는 방법이 포함된다.
14장, ‘성능 향상, 팁 그리고 유용한 기법’에서는 벤치마킹, 병목현상 확인하기, 최적화, Go 애플리케이션을 위한 HTTP 성능 향상을 다룬다.


목차


01장. I/O와 파일 시스템
__기술적 요구 사항
__일반적인 I/O 인터페이스 사용하기
____예제 구현
____예제 분석
__bytes와 strings 패키지 사용하기
____예제 구현
____예제 분석
__디렉터리와 파일을 활용한 작업
____예제 구현
____예제 분석
__CSV 포맷을 활용한 작업
____예제 구현
____예제 분석
__임시 파일을 활용한 작업
____예제 구현
____예제 분석
__text/template과 html/template을 활용한 작업
____예제 구현
____예제 분석


02장. 명령줄 도구
__기술적 요구 사항
__명령줄 플래그 사용하기
____예제 구현
____예제 분석
__명령줄 매개변수 사용하기
____예제 구현
____예제 분석
__환경 변수 읽기 및 설정하기
____예제 구현
____예제 분석
__TOML, YAML, JSON을 사용한 환경 설정
____예제 구현
____예제 분석
__유닉스 파이프를 활용한 작업
____예제 구현
____예제 분석
__신호 잡기 및 처리
____예제 구현
____예제 분석
__ANSI 컬러 애플리케이션
____예제 구현
____예제 분석


03장. 데이터 변환 및 구성
__기술적 요구 사항
__데이터 타입 변환 및 인터페이스 형 변환
____예제 구현
____예제 분석
__math와 math/big을 활용한 숫자 데이터 타입 작업
____예제 구현
____예제 분석
__통화 변환과 float64에 대한 고려
____예제 구현
____예제 분석
__인코딩과 디코딩에 포인터와 SQL NullType 사용하기
____예제 구현
____예제 분석
__Go 데이터의 인코딩 및 디코딩
____예제 구현
____예제 분석
__Go의 구조체 태그와 기본적인 리플렉션
____예제 구현
____예제 분석
__클로저를 사용해 컬렉션 구현하기
____예제 구현
____예제 분석


04장, Go의 오류 처리
__기술적 요구 사항
__오류 처리 및 Error 인터페이스
____예제 구현
____예제 분석
__pkg/errors 패키지 사용하기 및 오류 래핑
____예제 구현
____예제 분석
__log 패키지 사용하기와 오류의 로그 기록 시기 이해하기
____예제 구현
____예제 분석
__apex와 logrus 패키지를 활용한 구조화된 로깅
____예제 구현
____예제 분석
__context 패키지를 활용한 로깅
____예제 구현
____예제 분석
__패키지 수준의 전역 변수 사용하기
____예제 구현
____예제 분석
__장기간 실행되는 프로세스에 대한 패닉 해결하기
____예제 구현
____예제 분석


05장. 네트워크 프로그래밍
__기술적 요구 사항
__TCP/IP 에코 서버 및 클라이언트 작성하기
____예제 구현
____예제 분석
__UDP 서버 및 클라이언트 작성하기
____예제 구현
____예제 분석
__도메인 이름 확인 작업하기
____예제 구현
____예제 분석
__웹소켓으로 작업하기
____예제 구현
____예제 분석
__net/rpc를 활용해 원격 메소드(함수) 호출하기
____예제 구현
____예제 분석
__net/mail을 활용해 이메일 파싱하기
____예제 구현
____예제 분석


06장. 데이터베이스와 저장소의 모든 것
__MySQL과 함께 database/sql 패키지 사용하기
__준비
____예제 구현
____예제 분석
__데이터베이스 트랜잭션 인터페이스 실행하기
____준비
____예제 구현
____예제 분석
__SQL에 대한 커넥션 풀링, 속도 제한 및 타임아웃
____준비
____예제 구현
____예제 분석
__Redis를 활용한 작업
____준비
____예제 구현
____예제 분석
__MongoDB를 활용한 NoSQL 사용하기
____준비
____예제 구현
____예제 분석
__데이터 이식성을 고려한 저장소 인터페이스 생성하기
____준비
____예제 구현
____예제 분석


07장. 웹 클라이언트 및 API
__기술 요구 사항
__http.Client 객체의 초기화, 저장, 전달하기
____예제 구현
____예제 분석
__REST API용 클라이언트 작성하기
____예제 구현
____예제 분석
__병렬 및 비동기 클라이언트 요청 실행하기
____예제 구현
____예제 분석
__OAuth2 클라이언트 활용
____준비
____예제 구현
____예제 분석
__OAuth2 토큰 저장소 인터페이스 구현하기
____준비
____예제 구현
____예제 분석
__추가된 기능 및 함수 구성으로 클라이언트 래핑하기
____예제 구현
____예제 분석
__GRPC 클라이언트 이해하기
____준비
____예제 구현
____예제 분석
__RPC를 위한 twitchtv/twirp 사용하기
____준비
____예제 구현
____예제 분석


08장. Go의 애플리케이션용 마이크로서비스
__기술적 요구 사항
__웹 핸들러, 요청, ResponseWriter 인스턴스를 활용한 작업
____예제 구현
____예제 분석
__상태 저장 핸들러에 구조체와 클로저 활용하기
____예제 구현
____예제 분석
__Go 구조체와 사용자 입력에 대한 입력 검증
____예제 구현
____예제 분석
__렌더링 및 내용 협상
____예제 구현
____예제 분석
__미들웨어 구현 및 사용하기
____예제 구현
____예제 분석
__리버스 프록시 애플리케이션 제작하기
____예제 구현
____예제 분석
__JSON API로 GRPC 내보내기
____준비
____예제 구현
____예제 분석


09장. Go 코드 테스트하기
__기술적 요구 사항
__표준 라이브러리를 사용한 모의 테스트
____예제 구현
____예제 분석
__모의 인터페이스를 테스트하기 위한 Mockgen 패키지 사용하기
__준비
____예제 구현
____예제 분석
__테이블 기반 테스트를 사용해 적용 범위 향상시키기
____예제 구현
____예제 분석
__서드파티 테스트 도구 사용하기
____준비
____예제 구현
____예제 분석
__Go를 사용한 동작 테스트
____준비
____예제 구현
____예제 분석


10장. 병렬 처리와 동시성
__기술적 요구 사항
__채널 및 select 구문 사용하기
____예제 구현
____예제 분석
__sync.WaitGroup을 활용한 비동기 작업 수행하기
____예제 구현
____예제 분석
__원자적 연산 및 뮤텍스 사용하기
____예제 구현
____예제 분석
__context 패키지 사용하기
____예제 구현
____예제 분석
__채널에 대한 상태 관리 실행하기
____예제 구현
____예제 분석
__워커 풀 디자인 패턴 사용하기
____예제 구현
____예제 분석
__워커를 사용해 파이프라인 생성하기
____예제 구현
____예제 분석


11장. 분산 시스템
__기술적 요구 사항
__Consul을 활용한 서비스 검색 사용하기
____예제 구현
____예제 분석
__Raft를 활용한 기본적인 컨센서스 구현하기
____예제 구현
____예제 분석
__도커를 활용한 컨테이너화 사용하기
____준비
____예제 구현
____예제 분석
__오케스트레이션 및 배포 전략
____예제 구현
____예제 분석
__모니터링 애플리케이션
____예제 구현
____예제 분석
__지표 수집
____준비
____예제 구현
____예제 분석


12장. 반응형 프로그래밍과 데이터 스트림
__기술적 요구 사항
__데이터 흐름 프로그래밍에 Goflow 사용하기
____예제 구현
____예제 분석
__카프카와 Sarama 사용하기
____준비
____예제 구현
____예제 분석
__카프카를 활용한 비동기 producer 사용하기
____준비
____예제 구현
____예제 분석
__카프카를 Goflow에 연결하기
____준비
____예제 구현
____예제 분석
__Go로 GraphQL 서버 작성하기
____예제 구현
____예제 분석


13장. 서버리스 프로그래밍
__Apex를 활용해 람다에서 Go 프로그래밍하기
____준비
____예제 구현
____예제 분석
__Apex 서버리스 로깅 및 자료 수집
____준비
____예제 구현
____예제 분석
__Go와 구글 앱 엔진
____준비
____예제 구현
____예제 분석
__firebase.google.com/go 패키지를 활용한 파이어베이스 작업
____준비
____예제 구현
____예제 분석


14장. 성능 향상, 팁 그리고 유용한 기법
__기술적 요구 사항
__pprof 도구 사용하기
____예제 구현
____예제 분석
__벤치마킹 및 병목 현상 찾기
____예제 구현
____예제 분석
__메모리 할당과 힙 관리
____예제 구현
____예제 분석
__fasthttprouter와 fasthttp 사용하기
____예제 구현
____예제 분석

교환 및 환불안내

도서교환 및 환불
  • ㆍ배송기간은 평일 기준 1~3일 정도 소요됩니다.(스프링 분철은 1일 정도 시간이 더 소요됩니다.)
  • ㆍ상품불량 및 오배송등의 이유로 반품하실 경우, 반품배송비는 무료입니다.
  • ㆍ고객님의 변심에 의한 반품,환불,교환시 택배비는 본인 부담입니다.
  • ㆍ상담원과의 상담없이 교환 및 반품으로 반송된 물품은 책임지지 않습니다.
  • ㆍ이미 발송된 상품의 취소 및 반품, 교환요청시 배송비가 발생할 수 있습니다.
  • ㆍ반품신청시 반송된 상품의 수령후 환불처리됩니다.(카드사 사정에 따라 카드취소는 시일이 3~5일이 소요될 수 있습니다.)
  • ㆍ주문하신 상품의 반품,교환은 상품수령일로 부터 7일이내에 신청하실 수 있습니다.
  • ㆍ상품이 훼손된 경우 반품 및 교환,환불이 불가능합니다.
  • ㆍ반품/교환시 고객님 귀책사유로 인해 수거가 지연될 경우에는 반품이 제한될 수 있습니다.
  • ㆍ스프링제본 상품은 교환 및 환불이 불가능 합니다.
  • ㆍ군부대(사서함) 및 해외배송은 불가능합니다.
  • ㆍ오후 3시 이후 상담원과 통화되지 않은 취소건에 대해서는 고객 반품비용이 발생할 수 있습니다.
반품안내
  • 마이페이지 > 나의상담 > 1 : 1 문의하기 게시판 또는 고객센터 : 070-4821-5101
교환/반품주소
  • 부산광역시 부산진구 중앙대로 856 303호 / (주)스터디채널 / 전화 : 070-4821-5101
  • 택배안내 : CJ대한통운(1588-1255)
  • 고객님 변심으로 인한 교환 또는 반품시 왕복 배송비 5,000원을 부담하셔야 하며, 제품 불량 또는 오 배송시에는 전액을 당사에서부담 합니다.