상세정보
미리보기
Go 언어로 배우는 웹 애플리케이션 개발 : 개발 환경 설정부터 테스트, 도커 컨테이너, CI/CD, API 서버 구축까지
- 저자
- 시미즈 요이치로 저/김완섭 역
- 출판사
- 제이펍
- 출판일
- 2024-03-15
- 등록일
- 2024-04-30
- 파일포맷
- PDF
- 파일크기
- 5MB
- 공급사
- YES24
- 지원기기
-
PC
PHONE
TABLET
웹뷰어
프로그램 수동설치
뷰어프로그램 설치 안내
책소개
베테랑 고퍼가 알려주는 Go 언어 핸즈온 가이드Go 언어로 REST API 웹 애플리케이션을 개발할 때 반드시 알아야 할 지식을 알려준다. 전반부에는 웹 애플리케이션을 개발하기 전에 알아야 할 Go 언어 개념과 표준 패키지 기능을 소개하고, 후반부에는 본격적으로 Go 언어를 활용해 ToDo 애플리케이션을 만들면서 환경 설정, 도커 컨테이너 작성, CI/CD 설정, 테스트 작성을 다룬다. 테스트 코드를 단계별로 작성 및 수정하는 과정을 반복하면서 실제 업무에 적용할 수 있는 API 서버 구축 방법을 배울 수 있다. 베테랑 고퍼가 사용하는 디자인 패턴과 표준 패키지, 외부 오픈소스를 사용한 코딩 기법까지 Go 언어 애플리케이션 개발에 필요한 모든 것을 익힐 수 있다.
저자소개
1986년 일본 사이타마현 가와구치시에서 태어났다. 속도와 정밀도를 다루는 소프트웨어 개발을 동경해 리코 IT 설루션(Ricoh IT Solutions)에서 일했으며, 2017년 SaaS형 클라우드 서비스 회사인 freee 회계(freee?計)를 거쳐 2019년 인터넷 서비스를 제공하는 BASE에서 근무했다. 현재 블록체인 컨설팅 업체인 레이어엑스(LayerX)에서 소프트웨어 엔지니어로 일하고 있다. C, C++, C#, 루비, PHP 등 다양한 언어를 실무에 사용했으며, 그중 Go 언어를 가장 좋아한다.
목차
옮긴이 머리말 xiii베타리더 후기 xiv감사의 글 xvi이 책에 대하여 xviiCHAPTER 1 Go 언어 알아보기001 프로그래밍 언어의 탄생 배경을 알아야 하는 이유 003002 망설여질 때는 간단한 것을 선택하기 006CHAPTER 2 context 패키지003 context 패키지 개요 009004 왜 context 패키지를 사용하는가? 011005 중단 알림 013006 중단 알림 받기 015007 context.Context 타입값에 데이터 포함시키기 018008 context.Context 타입값을 처리할 때 주의점 020009 context.Context 타입값에 포함되는 정보 022010 context.Context 타입값의 정보가 서버에 전달되는가? 025011 기존 코드가 context.Context 타입값을 인수로 받지 않는 경우 026CHAPTER 3 database/sql 패키지012 database/sql 패키지의 기본 처리 031013 sql.Open 함수는 한 번만 사용 033014 Xxx 메서드와 XxxContext가 존재할 때는 XxxContext 메서드 사용 035015 *sql.Row 타입값을 반환하는 메서드만 sql.ErrNoRows 발생 036016 트랜잭션을 사용할 때는 defer 문으로 Rollback 메서드 호출 038017 database/sql 패키지 대신 많이 사용하는 오픈소스 패키지 041CHAPTER 4 가시성과 Go018 public/private과 exported/unexported의 차이 045CHAPTER 5 Go Modules019 모듈과 패키지 051020 Go Modules 053021 Go Modules 시작 방법 055022 Go Modules에서 자주 사용하는 명령 058023 의존 대상 코드에 디버그 코드 추가 059024 Go Modules를 실현하는 생태계 061025 프라이빗 모듈을 사용한 개발 062026 자체 작성 패키지의 버전 관리 064CHAPTER 6 Go와 객체지향 프로그래밍027 객체지향에 준하는 프로그래밍 언어의 조건 067028 Go에서는 서브클래스화 사용 불가 069029 내장과 상속 071CHAPTER 7 인터페이스030 사용자가 최소한의 인터페이스 정의하기 077031 라이브러리로서의 인터페이스 반환 079032 인터페이스 사용 시 주의점 081CHAPTER 8 오류 처리033 오류 087034 웹 애플리케이션에서의 panic 사용법 101CHAPTER 9 익명 함수 및 클로저035 Go에서 함수를 다루는 방법 105036 상태를 가진 함수 만들기 107037 고루틴 이용 시 익명 함수에서 외부 함수의 참조 피하기 109CHAPTER 10 환경 변수 적용 방법038 Go에서의 환경 변수 처리 113039 환경 변수 관련 테스트 116CHAPTER 11 Go와 의존성 주입040 의존관계 역전 원칙 121041 database/sql/driver 패키지와 DIP 122042 DIP에 준하는 구현 124043 과도한 추상화(인터페이스 활용) 주의 129CHAPTER 12 미들웨어 패턴044 미들웨어를 만드는 법 133045 복원 미들웨어 135046 접속 로그 미들웨어 137047 요청 바디를 로그에 남기는 미들웨어 138048 상태 코드 및 응답 바디를 저장하는 미들웨어 140049 context.Context 타입값에 정보를 부여하는 미들웨어 142050 웹 애플리케이션 자체의 미들웨어 패턴 143CHAPTER 13 실습 내용에 대해051 실습 진행 방식 147052 개발할 웹 애플리케이션 개요 149CHAPTER 14 HTTP 서버 만들기053 프로젝트 초기화 155054 웹 서버 실행하기 159055 리팩터링과 테스트 코드 161056 포트 번호를 변경할 수 있도록 만들기 170CHAPTER 15 개발 환경 정비하기057 도커를 사용한 실행 환경 177058 Makefile 추가하기 183059 깃허브 액션을 사용한 지속적 통합 환경 185CHAPTER 16 HTTP 서버를 약한 결합 구성으로 변경하기060 환경 변수로부터 설정 불러오기 193061 시그널 처리하기 198062 Server 구조체 정의하기 202063 라우팅 정의를 분할한 NewMux 정의하기 205064 run 함수를 다시 리팩터링하기 208CHAPTER 17 엔드포인트 추가하기065 entity.Task 타입 정의와 영구 저장 방법의 임시 구현 213066 헬퍼 함수를 구현하기 216067 태스크를 등록하는 엔드포인트 구현 220068 테이블 주도 테스트와 골든 테스트를 조합한 테스트 코드 223069 태스크 목록을 반환하는 엔드포인트 구현 227070 HTTP 핸들러를 라우팅으로 설정하기 229071 동작 검증 231CHAPTER 18 RDBMS를 사용한 데이터베이스 처리 구현하기072 MySQL 실행 환경 구축 235073 RDBMS 처리 구현 242074 RDBMS 관련 기능을 테스트하기 위한 코드 구현 251CHAPTER 19 기능별로 HTTP 핸들러 구현 분할하기075 HTTP 핸들러에서 RDBMS를 사용한 영구 저장 처리하기 261076 HTTP 핸들러 기능 분할 267077 go generate 명령을 사용한 목 자동 생성 268078 목 코드 자동 생성 270079 사용자 등록 기능 작성 277080 동작 확인 283CHAPTER 20 레디스와 JWT를 사용한 인증 및 권한081 이번 장에서 구현하는 기능 287082 레디스 준비 288083 JWT의 서명 준비 297084 JWT를 사용한 액세스 토큰 작성 299085 사용자 로그인 엔드포인트 구현 315086 미들웨어 패턴을 사용한 인증 기능 327087 요청에 포함된 인증과 권한 정보를 사용한 엔드포인트 보호 329088 동작 확인 339찾아보기 347