도서상세
장바구니에 상품을 담았습니다.
바로가기
  1. 도서정가제
  2. 소득공제
일시재고부족
29,000원
26,100원
10%
최대 적립 포인트
1,750 원
  • 구매 적립
    적립금 안내
    • 상품 적립금
    • 상품 적립금은 고객님이 웬디북에서 상품을 구매하실 경우 이에 대한 마일리지 개념으로 구매금액의 일부를 적립해 드리는 제도이며 사용은 예치금과 같이 현금처럼 사용가능하십니다.
    • 멤버십 적립금
    • 멤버십 적립금은 고객님의 멤버십(고객)등급에 따라 도서 구매액의 1 ~ 4%에 해당하는 적립금이 추가로 적립되며 적립금은 다음 주문시 현금처럼 사용이 가능합니다.
    • 다만 적립금은 예치금과는 달리, 현금으로 환불하실 수 없고 적립금의 적립일로 부터 12개월 이내에 사용하시지 않으면 자동으로 소멸됩니다.
  • 상품 적립금
    1,450원
  • 리뷰 적립
  • 최대 리뷰 적립금
    300원
26,100원
· 쿠폰 및 적립금은 결제 시 적용해 주세요
바로구매
장바구니 담기
일시재고부족
이 책을 구입하신 분들이 산 책
상세 이미지 더보기
상세 이미지
목차 더보기
목차
옮긴이 머리말 xiii
베타리더 후기 xiv
감사의 글 xvi
이 책에 대하여 xvii

CHAPTER 1 Go 언어 알아보기
001 프로그래밍 언어의 탄생 배경을 알아야 하는 이유 003
002 망설여질 때는 간단한 것을 선택하기 006

CHAPTER 2 context 패키지
003 context 패키지 개요 009
004 왜 context 패키지를 사용하는가? 011
005 중단 알림 013
006 중단 알림 받기 015
007 context.Context 타입값에 데이터 포함시키기 018
008 context.Context 타입값을 처리할 때 주의점 020
009 context.Context 타입값에 포함되는 정보 022
010 context.Context 타입값의 정보가 서버에 전달되는가? 025
011 기존 코드가 context.Context 타입값을 인수로 받지 않는 경우 026

CHAPTER 3 database/sql 패키지
012 database/sql 패키지의 기본 처리 031
013 sql.Open 함수는 한 번만 사용 033
014 Xxx 메서드와 XxxContext가 존재할 때는 XxxContext 메서드 사용 035
015 *sql.Row 타입값을 반환하는 메서드만 sql.ErrNoRows 발생 036
016 트랜잭션을 사용할 때는 defer 문으로 Rollback 메서드 호출 038
017 database/sql 패키지 대신 많이 사용하는 오픈소스 패키지 041

CHAPTER 4 가시성과 Go
018 public/private과 exported/unexported의 차이 045

CHAPTER 5 Go Modules
019 모듈과 패키지 051
020 Go Modules 053
021 Go Modules 시작 방법 055
022 Go Modules에서 자주 사용하는 명령 058
023 의존 대상 코드에 디버그 코드 추가 059
024 Go Modules를 실현하는 생태계 061
025 프라이빗 모듈을 사용한 개발 062
026 자체 작성 패키지의 버전 관리 064

CHAPTER 6 Go와 객체지향 프로그래밍
027 객체지향에 준하는 프로그래밍 언어의 조건 067
028 Go에서는 서브클래스화 사용 불가 069
029 내장과 상속 071

CHAPTER 7 인터페이스
030 사용자가 최소한의 인터페이스 정의하기 077
031 라이브러리로서의 인터페이스 반환 079
032 인터페이스 사용 시 주의점 081

CHAPTER 8 오류 처리
033 오류 087
034 웹 애플리케이션에서의 panic 사용법 101

CHAPTER 9 익명 함수 및 클로저
035 Go에서 함수를 다루는 방법 105
036 상태를 가진 함수 만들기 107
037 고루틴 이용 시 익명 함수에서 외부 함수의 참조 피하기 109

CHAPTER 10 환경 변수 적용 방법
038 Go에서의 환경 변수 처리 113
039 환경 변수 관련 테스트 116

CHAPTER 11 Go와 의존성 주입
040 의존관계 역전 원칙 121
041 database/sql/driver 패키지와 DIP 122
042 DIP에 준하는 구현 124
043 과도한 추상화(인터페이스 활용) 주의 129

CHAPTER 12 미들웨어 패턴
044 미들웨어를 만드는 법 133
045 복원 미들웨어 135
046 접속 로그 미들웨어 137
047 요청 바디를 로그에 남기는 미들웨어 138
048 상태 코드 및 응답 바디를 저장하는 미들웨어 140
049 context.Context 타입값에 정보를 부여하는 미들웨어 142
050 웹 애플리케이션 자체의 미들웨어 패턴 143

CHAPTER 13 실습 내용에 대해
051 실습 진행 방식 147
052 개발할 웹 애플리케이션 개요 149

CHAPTER 14 HTTP 서버 만들기
053 프로젝트 초기화 155
054 웹 서버 실행하기 159
055 리팩터링과 테스트 코드 161
056 포트 번호를 변경할 수 있도록 만들기 170

CHAPTER 15 개발 환경 정비하기
057 도커를 사용한 실행 환경 177
058 Makefile 추가하기 183
059 깃허브 액션을 사용한 지속적 통합 환경 185

CHAPTER 16 HTTP 서버를 약한 결합 구성으로 변경하기
060 환경 변수로부터 설정 불러오기 193
061 시그널 처리하기 198
062 Server 구조체 정의하기 202
063 라우팅 정의를 분할한 NewMux 정의하기 205
064 run 함수를 다시 리팩터링하기 208

CHAPTER 17 엔드포인트 추가하기
065 entity.Task 타입 정의와 영구 저장 방법의 임시 구현 213
066 헬퍼 함수를 구현하기 216
067 태스크를 등록하는 엔드포인트 구현 220
068 테이블 주도 테스트와 골든 테스트를 조합한 테스트 코드 223
069 태스크 목록을 반환하는 엔드포인트 구현 227
070 HTTP 핸들러를 라우팅으로 설정하기 229
071 동작 검증 231

CHAPTER 18 RDBMS를 사용한 데이터베이스 처리 구현하기
072 MySQL 실행 환경 구축 235
073 RDBMS 처리 구현 242
074 RDBMS 관련 기능을 테스트하기 위한 코드 구현 251

CHAPTER 19 기능별로 HTTP 핸들러 구현 분할하기
075 HTTP 핸들러에서 RDBMS를 사용한 영구 저장 처리하기 261
076 HTTP 핸들러 기능 분할 267
077 go generate 명령을 사용한 목 자동 생성 268
078 목 코드 자동 생성 270
079 사용자 등록 기능 작성 277
080 동작 확인 283

CHAPTER 20 레디스와 JWT를 사용한 인증 및 권한
081 이번 장에서 구현하는 기능 287
082 레디스 준비 288
083 JWT의 서명 준비 297
084 JWT를 사용한 액세스 토큰 작성 299
085 사용자 로그인 엔드포인트 구현 315
086 미들웨어 패턴을 사용한 인증 기능 327
087 요청에 포함된 인증과 권한 정보를 사용한 엔드포인트 보호 329
088 동작 확인 339

찾아보기 347
저자 소개
저자 : 시미즈 요이치로
1986년 일본 사이타마현 가와구치시에서 태어났다. 속도와 정밀도를 다루는 소프트웨어 개발을 동경해 리코 IT 설루션(Ricoh IT Solutions)에서 일했으며, 2017년 SaaS형 클라우드 서비스 회사인 freee 회계를 거쳐 2019년 인터넷 서비스를 제공하는 BASE에서 근무했다. 현재 블록체인 컨설팅 업체인 레이어엑스(LayerX)에서 소프트웨어 엔지니어로 일하고 있다. C, C++, C#, 루비, PHP 등 다양한 언어를 실무에 사용했으며, 그중 Go 언어를 가장 좋아한다.

역자 : 김완섭
약 15년간 일본, 한국, 싱가포르에서 IT 및 GIS/LBS 분야 업무를 담당했다. 일본에서는 일본 정부 기관을 대상으로 한 시스템 통합(SI) 업무를 담당했으며, 야후 재팬으로 직장을 옮겨 야후 맵 개발 담당 시니어 엔지니어로 근무했다. 한국에서는 SK에서 티맵 등 내비게이션 지도 데이터 담당 매니저로 근무했으며, 현재는 싱가포르에서 독일계 회사의 솔루션 아키텍트로 근무하고 있다. 저서로는 《나는 도쿄 롯폰기로 출근한다》(삶과지식, 2014)가 있으며, 역서로는 《21개의 작고 재미난 파이썬 프로젝트》(2021), 《그림으로 공부하는 IT 인프라 구조, 개정판》(이상 제이펍, 2020) 등 40여 종이 있다.
저자 소개 더보기
출판사 서평 더보기
출판사 서평
Go의 인기가 계속 고(Go)공행진하는 이유가 궁금하다면?

구글에서 개발한 오픈소스의 프로그래밍 언어인 Go는 간결하면서도 높은 신뢰성을 자랑한다. 웹 서비스 개발, 웹 앱 개발, 스마트폰 앱 개발, IoT 시스템 개발 등 효율적인 소프트웨어 개발에 특화된 언어이며, 표준 패키지만으로도 고성능 웹 애플리케이션을 개발할 수 있다.

이 책의 저자는 베테랑 고퍼로서 Go 언어의 장점을 십분 활용해 REST API 웹 애플리케이션에 개발에 필요한 필수 지식을 알려준다. 찾기 어려운 Go 언어의 필수 패키지 및 표준 패키지 사용법, 외부 오픈소스를 사용한 코딩 기법, 그리고 Go 언어를 접했을 때 겪을 수 있는 다양한 문제를 함께 고민하면서 코드를 간결하게 작성하는 방법을 소개한다.

총 20장으로 구성된 이 책은 크게 두 개의 파트로 나눌 수 있다. 전반부에서는 개발자를 위한 팁을 다룬다. Go 언어의 개념을 알아보고, context 패키지와 database/sql 패키지를 소개한다. public/private과 exported/unexported의 차이, Go 패키지 관리 툴인 Go Modules과 Go 언어에 반영된 객체지향 요소, 설계의 유연성을 높이고 보수 용이성을 향상시키기 위한 인터페이스 사용법은 물론 예외를 사용하지 않고 이상 사태를 다루는 방법, Go에서의 함수 사용법, 환경 변수 적용 방법, 미들웨어 패턴을 설명한다.

후반부에서는 본격적으로 Go 언어를 활용해 ToDo 웹 애플리케이션을 개발한다. 깃허브 저장소를 만든 후 HTTP 서버 코드를 작성하고 명령줄에서 간단하게 웹서버를 실행해본다. 이어서 HTTP 서버를 약한 결합 구성으로 변경하고, ToDo 웹 애플리케이션의 태스크와 관련된 엔드포인트와 RDBMS를 활용해 데이터베이스 처리를 구현한다. 기능별로 패키지를 분할하도록 HTTP 핸들러의 구조를 리팩터링한 후 마지막으로 인증 및 권한 기능을 새롭게 추가하면서 ToDo 웹 애플리케이션 서버 개발을 마무리한다. 특히 최소한의 코딩만 한 후 테스트나 추가 코드의 문제점은 무엇인지 찾아가면서 점진적으로 기능을 추가하는 후반부 구성을 통해 실무에 적용할 수 있는 API 서버 구축 방법을 배울 수 있을 것이다.

Go 언어의 기초뿐만 아니라 실전에서 활용 가능한 최신 기술을 망라했으며, Go를 좀 더 Go답게 사용하는 방법을 알려주는 이 책을 통해 한 단계 성장하는 고퍼가 되자.

주요 내용
● Go 언어의 설계 이념
● 웹 애플리케이션 개발에 필요한 필수 패키지 및 표준 패키지 사용법
● 외부 오픈소스를 사용한 코딩 기법
● 도커 및 깃허브 액션을 활용한 개발 환경 설정
● 테스트 코드의 단계별 작성
● 실제 업무에 활용할 수 있는 API 서버 구축 방법
리뷰(0)
0 / 5.0
리뷰 작성
•
리뷰를 작성하시면 소정의 적립금을 드립니다.
•
도서의 첫번째 리뷰부터 10번째 리뷰까지는 기본 적립금의 2배를 적립해 드리며, 이후 리뷰부터는 기본 적립금이 적립됩니다.
리뷰 혜택 및 유의사항
배송방법

배송은 CJ대한통운(전화 : 1588-1255)을 이용해서 보내드리고 있습니다.

3만원 이상 구매시 무료배송 가능하며, 3만원 미만의 경우 2500원의 배송비가 발생합니다.

배송기간

15시 이전에 입금확인된 주문까지는 당일날 발송하며, 일반적인 경우 다음날 책을 받아보실 수 있습니다.

주말 또는 공휴일이 있거나 시기적으로 배송이 많은 기간인 경우는 지역에 따라 1~2일이 더 소요될 수 있습니다.

주문 후, 5일이 경과해도 책이 도착하지 않는 경우에는 웬디북 고객센터(전화 : 1800-9785)로 전화를 주시거나 고객센터 > 1:1 문의를 통해 문의글을 남겨주시면 확인 후 신속히 조치하도록 하겠습니다.

묶음배송

묶음배송 원하시는 모든 주문서의 상태가 "입금대기" 또는 "결제완료" 상태일 경우에만 처리가 가능하며, 고객센터 > 1:1 문의에서 신청 할 수 있습니다.

반품안내

변심반품의 경우 도서주문일로부터 15일이내에 반품접수가 가능하며, 반품 배송비는 고객님 부담입니다.

부분 반품의 경우, 3만원 이상 주문으로 무료배송 받았으나 일부 상품 반품으로 주문금액이 3만원이 안될 경우, 이전 주문의 배송비를 포함한 왕복 배송비를 부담하셔야 합니다.

반품절차는 고객센터의 반품교환신청 페이지에서 신청을 해주시면 웬디북 고객센터에서 지정택배사에 회수요청을 하고, 방문한 택배기사님을 통해 반품도서를 보내주시면 됩니다.

운송 중 책이 손상되지 않도록 포장을 해주신 후, 포장 겉면에 “반품도서”라고 기재해주시기 바랍니다. 회수된 상품은 요청해주신 환불방법에 따라 적립 또는 환불 진행해드립니다.

(특히 팝업북 등은 조그만 충격에도 책이 손상될 수 있으므로 주의해 주시기 바랍니다.)

• 반품이 불가한 경우
  • 1. 고객에게 책임 있는 사유로 상품(띠지 또는 더스트커버 포함)이 멸실 또는 훼손된 경우
  • 2. CD 나 소프트웨어 포함, 포장이 되어 있는 모든 상품의 포장 개봉
  • 3. 만화책 및 단시간 내에 완독이 가능한 잡지
  • 4. 상품과 함께 발송된 추가사은품이 분실되거나 훼손된 경우
  • 5. 고객의 사용 또는 일부 소비에 의하여 상품의 가치가 현저히 감소한 경우
  • 6. 명시된 반품가능 기한이 지난 경우
  • 7. 세트상품중 일부 반품
교환안내

파본도서 혹은 오배송으로인한 교환은 도서주문일로부터 15일 이내에 신청하셔야 하며 이 경우 배송비는 웬디북에서 부담합니다.

(단, 팝업북과 CD가 세트인 책은 책의 특성상 7일 이내에 해주셔야 합니다.)

교환절차는 고객센터의 반품교환신청 페이지에서 신청을 해주시면 웬디북에서 새 책을 보내드리고 새 책을 받으실 때 교환도서와 맞교환 하시면 됩니다.

교환은 동일도서에 한하며, 다른 도서로 교환은 불가합니다.

운송도중 책이 손상되지 않도록 포장을 해주신 후, 포장 겉면에 “반품도서”라고 기재해주시기 바랍니다.

(특히 팝업북 등은 조그만 충격에도 책이 손상될 수 있으므로 주의해 주시기 바랍니다.)

• 교환이 불가한 경우
  • 1. 고객에게 책임 있는 사유로 상품이 멸실 또는 훼손된 경우
  • 2. 포장 상품의 포장을 해체한 경우
  • 3. 고객의 사용 또는 일부 소비에 의하여 상품의 가치가 현저히 감소한 경우
  • 4. 물품 수령 후, 15일이 경과한 경우
  • 5. 동일상품으로 교환하신 후, 다시 교환하시고자 할 경우 (이 경우에는 환불처리 해드립니다.)
신고하기
신고사유 선택
도서 입고 알림 신청
입고알림 신청하셨습니다.
입고시 {{tel}}로 문자 발송됩니다

바로 확인 하시겠습니까?
예

휴대폰 번호, 이메일 주소는

마이 페이지 > 회원정보수정에서 확인해 주세요.

관심 시리즈 신간 알림 신청
시리즈명:{{ series_name }}
관심 시리즈 신간 입고 알림 신청하셨습니다.
입고시 {{ tel }}로 문자 발송 또는
앱푸시, 이메일 등으로 알려드리겠습니다.

바로 확인 하시겠습니까?
예

휴대폰 번호, 이메일 주소는

마이 페이지 > 회원정보수정에서 확인해 주세요.

입고 알림 수신 방법 변경은

마이 페이지 > 알림 > 알림 설정에서 확인해 주세요.

푸시 알림이 오지 않을 시,

스마트폰 설정 > 알림 > 웬디북 앱 설정을 확인해 주세요

관심 작가 신간 알림 신청
작가명:{{ series_name }}
관심 작가 신간 입고 알림 신청하셨습니다.
입고시 {{ tel }}로 문자 발송 또는
앱푸시, 이메일 등으로 알려드리겠습니다.

바로 확인 하시겠습니까?
예

휴대폰 번호, 이메일 주소는

마이 페이지 > 회원정보수정에서 확인해 주세요.

입고 알림 수신 방법 변경은

마이 페이지 > 알림 > 알림 설정에서 확인해 주세요.

푸시 알림이 오지 않을 시,

스마트폰 설정 > 알림 > 웬디북 앱 설정을 확인해 주세요

{{title}}
{{content}}
{{title}}
{{content}}