Top

Go 프로그래밍 쿡북 2/e [다양한 Golang 애플리케이션을 만드는 83가지 레시피]

  • 원서명Go Programming Cookbook, 2nd Edition: Over 85 recipes to build modular, readable, and testable Golang applications across various domains (ISBN 9781789800982)
  • 지은이애런 토레스(Aaron Torres)
  • 옮긴이장세윤
  • ISBN : 9791161756158
  • 35,000원
  • 2022년 03월 21일 펴냄
  • 페이퍼백 | 496쪽 | 188*235mm
  • 시리즈 : 프로그래밍 언어

책 소개

소스 코드 파일은 여기에서 내려 받으실 수 있습니다.

요약

Go 언어로 개발할 때 필요한 가이드라인을 제공한다. 파일 입출력, 커맨드라인 도구, 데이터 변환 및 합성, 에러 처리, 네트워크 프로그래밍, 데이터 베이스, 웹 클라이언트 API, 마이크로서비스 애플리케이션 제작 방법, 코드 테스트 방법, 병렬 처리, 분산 시스템, 리액티브 프로그래밍, 서버리스 프로그래밍에 이르기까지 총망라해 설명한다. 여기에 실제 개발에 활용할 수 있는 모듈화된 예제를 제공해서 애플리케이션 개발 과정에서 예제 코드를 참고하기에 편리하다. Go 언어가 제공하는 기능에 대한 전반적인 내용을 공부하고 싶은 독자와 애플리케이션 개발 과정에서 특정 기능에 대한 예제 코드를 참고하고 싶은 독자에게 훌륭한 참고서가 될 것이다.

이 책에서 다루는 내용

◆ 필요에 따른 수정을 통한 서드 파티 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 성능 향상을 다룬다.

저자/역자 소개

지은이의 말

많은 개발자가 이 책을 Go 개발 패턴을 빠르게 찾을 수 있는 유용한 참고 자료로 사용하길 바란다. 다른 내용들과 함께 활용할 수 있어 오랫동안 볼 수 있는 유용한 참고서가 될 것이다. 여러분의 애플리케이션에 참고 자료로 사용하거나 애플리케이션 기반으로 사용할 수 있는 간단한 코드가 포함돼 있는데, 모두 테스트를 거쳐 동작하는 코드다. 책에서는 기본적인 내용부터 고급 주제에 이르기까지 다양한 내용을 다룬다.

지은이 소개

애런 토레스(Aaron Torres)

뉴멕시코광업기술대학(New Mexico Institute of Mining and Technology)에서 컴퓨터공학 석사 학위를 받았다. 고성능 컴퓨팅과 대규모 웹 및 마이크로서비스 애플리케이션에서의 분산 시스템을 연구하고 있으며, 현재 지속적 배포(continuous delivery)와 자동화 테스트에 중점을 두고 Go 모범 사례를 개선하고자 노력하는 Go 개발자 팀을 이끌고 있다.
다수의 논문을 발표했으며, 저장 및 입출력 분야에서 여러 특허를 보유하고 있다. 자신의 지식과 아이디어를 공유하는 데 열정적이며 Go 언어와 백앤드 시스템 및 개발을 위한 오픈소스의 열렬한 팬이기도 하다.

옮긴이의 말

이 책은 Go 언어가 지원하는 다양한 기능을 모듈화해 설명한다. 파일 입출력, 명령줄 도구, 데이터 변환 및 합성, 에러 처리, 네트워크 프로그래밍, 데이터베이스, 웹 클라이언트 API, 마이크로서비스 애플리케이션 제작 방법, 코드 테스트 방법, 병렬 처리, 분산 시스템, 반응형 프로그래밍, 서버리스 프로그래밍 등 다양한 기능을 설명한다. 또한 테스트 가능하며 모듈화된 예제 코드를 제공하기 때문에 애플리케이션 개발 과정에서 특정 기능에 대한 내용을 쉽게 참고할 수 있도록 구성돼 있다.

옮긴이 소개

장세윤

유니티 한국 지사에서 필드 엔지니어로 근무하면서 기술 지원, 유니티 엔진 기술 홍보, 기술 문서 번역 업무를 진행했다. 프리랜서가 된 이후 엔씨소프트, 넥슨, 네오플, 골프존 등의 다양한 회사와 게임 교육 학원에서 유니티 엔진 및 언리얼 엔진 교육을 진행했으며, 현재는 프리랜서 강사, 개발자, 기술 서적 번역가로 활동하고 있다.

목차

목차
  • 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 사용하기
      • 예제 구현

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안

정오표

정오표

[일괄 변경]
github.com/PackPublishing/Go-Programming-Cookbook-Second-Edition/chapter
->
github.com/PackPublishing/Go-Programming-Cookbook-Second-Edition/tree/master/chapter