본문 바로가기
Infomation/책리뷰

[Info] Go언어로 배우는 웹 애플리케이션 개발 책 리뷰

by 선인장 🌵 2024. 2. 16.
728x90
728x90

Go언어로 배우는 웹 애플리케이션 개발 책 리뷰

제이펍(Jpub) 출판사에서 나온 "Go언어로 배우는 웹 애플리케이션 개발"이라는 책을 소개해보고자 한다.

해당 책은 2022년 동일한 저자가 출판한 "詳解Go言語Webアプリケーション開発"라는 책을 기반으로 번역되었다.

[Info] Go언어로 배우는 웹 애플리케이션 개발 책 리뷰

제이펍(Jpub) 출판사로부터 책을 무상으로 제공받아 읽어 보고 정리한 리뷰 내용이다.

 

Go 언어로 배우는 웹 애플리케이션 개발

베테랑 고퍼가 알려주는 Go 언어 핸즈온 가이드 Go 언어로 REST API 웹 애플리케이션을 개발할 때 반드시 알아야 할 지식을 알려준다. 전반부에는 웹 애플리케이션을 개발하기 전에 알아야 할 Go 언

jpub.tistory.com

[Info] Go언어로 배우는 웹 애플리케이션 개발 책 리뷰

1. 목차

항상 책을 처음 볼 때는 무조건 목차부터 살펴본다.

그 이유는 전반적으로 해당 책에서 어떤 내용에 대해서 전달하려고 하는지 알기 쉽고 어떤 방향으로 진행되는지 알 수 있기 때문이다.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

해당 목차를 살펴보면 책 제목에 나와있듯이 Go를 이용하여 웹 애플리케이션을 제작하기 위해 처음부터 순차적으로 따라가면서 할 수 있도록 되어 있다. 

Go를 이용해서 웹 애플리케이션을 제작하기 위해서 자세히 배우고 싶은 사람들에게는 각 CHAPTER 별로 상황에 맞도록 작성되어 읽어보면서 예제를 따라 한다면 쉽게 이해하고 배울 수 있다고 생각한다.

다만, Go 언어를 처음 하는 사람보다는 약간의 Go를 이용해 다뤄본 사람이 보는 편이 이해하기 쉬울 것이다.

2. 내용 요약

해당 책은 웹 애플리케이션을 제작하기 위해서 각 CHAPTER 별로 나눠 명확하게 설명을 하고 있다. 

CHAPTER1 ~ 12까지는 그래도 전반적인 Go 언어에 대해서 설명 및 웹 애플리케이션을 제작하는 기초적인 부분에 대해서 배울 수 있다. 

CHAPTER13 ~ 20까지는 정말 CHAPTER 마다 웹 애플리케이션을 제작할 때 진행해야 하는 부분에 대해서 테스트 코드 및 작가가 진행하면서 문제 되는 부분등 실무에서 경험한 부분까지 배울 수 있다. 

책에는 테스트 코드 등 설명도 자세히 되어 있고 에러가 나는 부분에 대해서 원인 및 설명도 되어 있어서 이해하는데 좋다.

[Info] Go언어로 배우는 웹 애플리케이션 개발 책 리뷰

3. 정리

개인적으로 Python으로 여러 웹 애플리케이션들을 제작했지만 이 책을 읽어보면서 Go를 이용해서 웹 애플리케이션을 제작을 해보고 구동을 해볼 수 있는 경험을 하게 되어서 매우 좋았다. 

작가가 경험한 내용을 작성해 줌으로써 동일한 실수를 하지 않을 수 있었고 그로 인해 실무에서 Go로 웹 애플리케이션을 제작할 때 고민하는 부분도 느낄 수 있었다.

아직 Go를 이용해서 웹 애플리케이션을 제작해보지 않은 사람이라면 이 책을 읽어보면서 경험을 해보길 바라며, 자세한 책 내용은 구매해서 천천히 한 장 한 장 읽어보고 테스트 코드를 보면서 배우도록 하자.

4. 구매 사이트

728x90
728x90


🌵댓글

 

loading