Top

Go 풀스택 웹 개발 [Go와 리액트, Gin, GopherJS를 사용한 풀스택 웹 프로그래밍]

  • 원서명Hands-On Full Stack Development with Go: Build full stack web applications with Go, React, Gin, and GopherJS (ISBN 9781789130751)
  • 지은이미나 안드라오스(Mina Andrawos)
  • 옮긴이이우현
  • ISBN : 9791161754000
  • 30,000원
  • 2020년 03월 26일 펴냄
  • 페이퍼백 | 392쪽 | 188*235mm
  • 시리즈 : acorn+PACKT, 프로그래밍 언어

책 소개

소스 파일은 아래 깃허브 페이지에서 내려 받으실 수 있습니다.
(https://github.com/AcornPublishing/fullstack-go)

본문에 쓰인 컬러 이미지는 여기에서 내려 받으세요.
요약

Go 언어와 리액트를 사용한 풀스택 개발을 소개한다. 간단한 웹 서비스의 프론트엔드와 백엔드를 처음부터 순차적으로 구현한다. Go 언어의 기본 개념과 문법을 설명하고 고루틴과 채널 등의 동시성 프로그래밍 개념도 소개한다. 리액트 프레임워크를 사용해 프론트엔드를 개발하고 백엔드는 Go 기반의 Gin 프레임워크를 사용해 RESTful API 서버를 구축한다. 나아가 유닛 테스트와 벤치마킹을 통해 작성한 코드를 검증하는 방법을 소개한다. 프로그래밍의 기본 개념을 이해하고 개발 경험이 있는 초, 중급 개발자를 대상으로 한다.

이 책에서 다루는 내용

■ 실제 애플리케이션 구현을 통한 Go 프로그래밍 이해
■ 리액트 프레임워크 기반의 애플리케이션 프론트엔드 구현
■ GopherJS 프레임워크와 동형 Go 웹 개발
■ Gin 프레임워크 기반의 RESTful 웹 API 개발
■ ORM 레이어와 보안 통신, 스트라이프 API 등의 유용한 백엔드 기술
■ Go 언어 기반의 웹 API 테스트와 벤치마킹

이 책의 대상 독자

Go 언어 기반의 풀스택 웹 애플리케이션 개발을 처음 시작하는 개발자를 위한 책이다.

이 책의 구성

1장, ‘풀스택 Go’에서는 이 책에서 다루는 주제를 살펴보고, 개발할 애플리케이션의 구조도 알아본다. 이 책에서 무엇을 배울지 전반적으로 소개한다.
2장, ‘Go 언어의 구성 요소’에서는 Go 언어 기반의 애플리케이션을 만드는 데 반드시 필요한 기본 개념을 설명한다. Go 언어의 변수 선언문과 조건문, 루프, 함수 등을 살펴본다. 자료 구조를 정의하고 메서드에서 사용하는 방법도 설명한다. 나아가 프로그램의 행위를 정의하는 인터페이스를 작성하는 방법도 알아본다.
3장, ‘Go 동시성 프로그래밍’에서는 Go 언어의 동시성을 설명한다. Go 언어가 지원하는 고루틴과 채널, select문 등을 알아보고 효율적인 동시성 프로그램 개발에 반드시 필요한 잠금과 대기 그룹(wait group)의 개념도 배운다.
4장, ‘리액트와 프론트엔드 개발’에서는 인기 있는 React.js 프레임워크의 구성 요소를 설명한다. 리액트 프레임워크의 핵심 요소인 리액트 컴포넌트를 살펴본다. 나아가 컴포넌트로 데이터를 전달하는 방법과 상태를 제어하는 방법, 리액트 개발 툴을 사용하는 방법을 배운다.
5장, ‘GoMusic 프론트엔드 개발’에서는 앞에서 학습한 내용을 바탕으로 GoMusic 애플리케이션의 프론트엔드를 구현한다. GoMusic에 필요한 리액트 컴포넌트를 만들고 개발 툴을 사용해 프론트엔드를 수정한다. 프론트엔드의 대부분을 구현한다.
6장, ‘Gin 프레임워크 기반 Go RESTful 웹 API’에서는 Gin 프레임워크와 RESTful 웹 API를 소개한다. Gin 프레임워크의 개념과 구성 요소를 알아보고 이를 사용해 웹 API를 작성한다. HTTP 요청 라우팅과 그룹핑의 개념도 알아본다.
7장, ‘Gin과 리액트 기반 고급 웹 애플리케이션’에서는 Gin 프레임워크와 웹 API의 심도 있는 주제를 설명한다. 미들웨어 사용과 사용자 인증, 로깅, 모델 바인딩 검증 등의 중요하고 실용적인 주제를 다룬다. ORM의 개념과 Go ORM을 사용해 웹 API 백엔드와 MySQL을 연결하는 방법을 학습한다. 앞에서 작성한 리액트 프론트엔드의 구현을 마무리하고 Go 백엔드와 연결하는 방법을 다룬다. 나아가 리액트 애플리케이션을 빌드하고 배포하는 방법을 알아본다.
8장, ‘웹 API 테스트와 벤치마킹’에서는 Go 애플리케이션을 테스트하고 벤치마킹하는 방법을 설명한다. 유닛 테스트를 작성할 때 사용하는 testing 패키지가 제공하는 타입과 메서드를 살펴본다. 이를 기반으로 앞서 작성한 코드를 벤치마킹하고 성능을 측정한다.
9장, ‘GopherJS와 동형 Go 프로그래밍 소개’에서는 프론트엔드를 Go 언어로 작성할 수 있도록 Go 코드를 자바스크립트 코드로 트랜스파일하는 GopherJS 오픈소스 프로젝트를 소개한다. 자바스크립트 대신 Go 언어로 프론트엔드를 구현해야 한다면 GopherJS를 권한다. GopherJS의 개념과 몇 가지 예제와 사용 사례를 살펴보고 GopherJS를 사용해 간단한 리액트 애플리케이션을 구현한다.
10장, ‘클라우드 네이티브 애플리케이션과 리액트 네이티브 프레임워크’에서는 이 책 이후에 나아갈 학습 방향을 제시한다. 클라우드 네이티브 아키텍처와 컨테이너의 개념과 리액트 네이티브를 사용한 모바일 앱 개발을 소개한다.

저자/역자 소개

지은이의 말

웹 애플리케이션 개발에서 Go 언어 사용이 급격히 늘고 있다. 높은 성능과 쉬운 개발을 자랑하는 Go 언어 기반의 확장성 높은 고성능 웹 서비스와 애플리케이션을 개발할 수 있는 다양한 오픈소스 프레임워크가 있다.
이 책은 Go 언어 기반의 풀스택 프로그래밍의 여러 측면을 소개하는 안내서로 온라인 악기 쇼핑몰 웹 사이트를 단계적으로 개발한다. 이해하기 쉬운 설명과 다양한 예제로 구성했으며, Go 언어의 기본 개념뿐만 아니라 동시성의 설명을 시작으로 Go 프로그래밍을 소개한다. 리액트 프레임워크를 사용해 애플리케이션의 프론트엔드를 개발하고 웹 API 개발에 유용한 Gin 프레임워크를 기반으로 RESTful 웹 API를 구현한다. ORM(Object-Relational Mapping)을 사용한 데이터베이스 연결과 웹 서비스 라우팅 정의, 보안 통신, 스트라이프 API를 사용한 신용카드 결제 처리 등의 중요한 소프트웨어 백엔드 기술도 살펴본다. 나아가 운영 환경에서 애플리케이션을 효율적으로 벤치마킹하는 방법을 알아보고, GopherJS를 사용해 동형 Go 프로그래밍을 실습한다. 이 책을 읽고 나면 Go 언어 기반의 풀스택 웹 애플리케이션 개발에 익숙해질 것이다.

지은이 소개

미나 안드라오스(Mina Andrawos)

개인 프로젝트와 실무를 통해 Go 프로그래밍에 많은 경험을 쌓은 엔지니어다. Go 언어 관련 글과 튜토리얼을 주기적으로 집필하고, Go 언어 기반 오픈소스 프로젝트에 참여한다. 다양한 Go 프로그램을 개발했으며 자바와 C#, C++, 파이썬에도 능숙하다. 소프트웨어 개발 외에도 스크럼 마스터링과 세일즈 엔지니어링, 소프트웨어 제품 관리 등의 분야에서 실무 경험을 쌓았다.

옮긴이의 말

풀스택 개발이란 쉽게 말해 프론트엔드와 백엔드를 넘나드는 개발을 일컫는다. 풀스택 개발자는 시스템 설계와 구축은 물론 실제 사용자까지 서비스와 관련된 모든 부분과 사람을 상대하는 직업이다. 특히 다양한 프레임워크가 끊임없이 쏟아져 나오고 개발 트렌드가 빠르게 변화하는 웹 프로그래밍 분야에서 풀스택 개발자는 막중한 책임과 임무를 지닌 직책이다. 안정되고 검증된 기존 기술을 고집하는 개발자가 있는 반면 트렌드에 따라 새로운 기술을 끊임없이 시도하는 개발자가 있다. 좋고 나쁨을 따질 수 없는 개발자의 성향이자 소속된 집단의 개발 철학과 방향성에 따라 다르다고 생각한다. 굳이 나누자면 이 책은 후자에 속하는 개발자에게 적합하다.
이 책은 Go 언어와 리액트 기반의 풀스택 웹 프로그래밍 가이드다. Go 언어는 2009년에 구글이 공개한 언어이고, 리액트는 2013년에 페이스북이 공개한 자바스크립트 기반의 프론트엔드 라이브러리다. 비교적 최신 기술로 구분되는 이 두 기술을 사용해 백엔드와 프론트엔드 영역을 명확히 구분해서 웹 서비스를 개발하는 방법을 소개한다. Go 언어와 리액트를 사용하지만 모든 프로그래밍 언어에서 공통적인 프로그래밍 개념을 설명하고 웹 서비스를 처음부터 함께 구현한다. 예제 코드를 직접 작성해보면 풀스택 개발의 의미와 단계를 직접 파악할 수 있을 것이다. 이미 숙련된 풀스택 개발자라면 기본 개념을 되새기고 새로운 기술을 접하는 기회가 될 것이고, 풀스택 개발을 공부 중인 독자라면 웹 서비스를 직접 완성해보는 값진 경험이 될 것이다. 다만 다른 프로그래밍 이론서와 Go 언어 입문서를 먼저 정독한 후 이 책을 볼 것을 권장한다. 각 주제와 예제 코드를 자세히 설명하기보다는 개념을 이해한다고 가정하고 키워드와 방향을 제시하기 때문이다. 따라서 이 책에서 끝나지 않고 각 주제를 더 깊이 있게 공부하기를 권한다. 특히 동시성 프로그래밍과 동형 프로그래밍은 어렵지만 흥미로운 주제다. 『Go 동시성 프로그래밍』(에이콘, 2019)과 『동형 자바스크립트 웹 개발』(에이콘, 2018) 같이 해당 주제를 집중적으로 다루는 다른 도서를 꼭 참고하기를 바란다. 끊임없는 공부와 연구가 풀스택 개발의 진정한 의미라고 확신한다.

옮긴이 소개

이우현

위스콘신대학교 매디슨과 서울대학교에서 컴퓨터 공학 학사와 석사 학위를 취득했다. 번역서로는 『그들은 어떻게 최고의 정치학자가 되었나』(후마니타스, 2012), 『고성능 파이썬 프로그래밍』(에이콘, 2016), 『파이썬 디자인 패턴 2/e』(에이콘, 2018)이 있다.

목차

목차
  • 1부. Go 언어
  • 1장. 풀스택 Go
    • 풀스택 개발이란?
    • 프로젝트
      • 애플리케이션 구조
    • 이 책의 구성

  • 2장. Go 언어의 구성 요소
    • 개발 환경 설정
      • Go 플레이그라운드
      • Go 워크스페이스 설정
    • 패키지와 변수, 자료형, 포인터
      • 패키지
      • 변수와 자료형
      • 포인터
    • 함수와 클로저
      • 함수: 기본 구조
      • 함수: 다른 패키지 함수 호출
      • 클로저
    • Go 자료 구조
      • 배열
      • 슬라이스
      • 구조체
      • 메서드
    • 인터페이스
    • 조건문과 반복문
      • if문
      • switch문
      • 반복문
    • Panic, recover, defer
    • 요약
    • 질문거리
    • 더 읽을거리

  • 3장. Go 동시성 프로그래밍
    • 동시성
    • 고루틴
    • Go 채널
      • 일반 채널
      • 버퍼 채널
    • select 구문
    • sync 패키지
      • 간단한 뮤텍스
      • 읽기-쓰기 뮤텍스
      • 대기 그룹
    • 요약
    • 질문거리
    • 더 읽을거리

  • 2부. 프론트엔드
  • 4장. React.js와 프론트엔드 개발
    • 전제 조건과 기술적 요구 사항
    • GoMusic 프로젝트
      • Node.js와 npm
      • HTML과 CSS, 부트스트랩
      • 프로젝트 코드
    • 리액트 프레임워크
      • 리액트 애플리케이션 개발
      • 프로젝트 설정
      • JSX와 리액트 엘리먼트
      • 리액트 컴포넌트
      • 개발 툴
    • 요약
    • 질문거리
    • 더 읽을거리

  • 5장. GoMusic 프론트엔드 개발
    • 준비물과 기술적 요구 사항
    • GoMusic 만들기
      • 메인 페이지
      • 모달 윈도우와 신용카드 결제 처리
      • 사용자 페이지
      • 컴포넌트 연결: 라우팅
    • 요약
    • 질문거리
    • 더 읽을거리

  • 3부. Go 웹 API와 미들웨어
  • 6장. Gin 프레임워크 기반 Go RESTful 웹 API
    • 기술적 요구 사항
      • RESTful API
      • 개요
      • HTTP 메서드
    • Gin 프레임워크
      • 모델과 데이터베이스 레이어
    • Gin 프레임워크와 REST API 레이어 개발
      • 라우팅 정의
      • 핸들러 구현
      • 정리
    • 요약
    • 질문거리
    • 더 읽을거리

  • 7장. Gin과 리액트 기반 고급 웹 애플리케이션
    • 기술적 요구 사항
    • 데이터베이스 레이어
      • 관계형 데이터베이스
      • ORM
    • 미들웨어
      • 커스텀 미들웨어
    • 보안
      • 인증서와 개인 키
      • Gin 프레임워크와 HTTPS
      • 패스워드 해싱
    • 신용카드 결제
      • 백엔드에서 신용카드 결제 요청 처리
    • 프론트엔드 마무리
      • 프론트엔드 구조
      • 프론트엔드와 백엔드 연결
      • 쿠키 사용
      • 프론트엔드 애플리케이션 배포
    • 요약
    • 질문거리
    • 더 읽을거리

  • 8장. 웹 API 테스트와 벤치마킹
    • Go 테스트
      • 목킹
      • Go 유닛 테스트
    • 벤치마킹
    • 요약
    • 질문거리
    • 더 읽을거리

  • 9장. GopherJS와 동형 Go 프로그래밍 소개
    • 기술적 요구 사항
    • GopherJS 기초
      • GopherJS 자료형
      • Go 코드에서 자바스크립트 함수 호출
      • GopherJS 명령어
      • Go 바인딩
      • 코드 익스포트
    • 리액트와 GopherJS
      • 프로젝트
      • Go 기반의 리액트 애플리케이션
    • 요약
    • 질문거리
    • 더 읽을거리

  • 10장. 클라우드 네이티브 애플리케이션과 리액트 네이티브 프레임워크
    • 클라우드 네이티브 애플리케이션
      • 마이크로서비스
      • 컨테이너
      • 서버리스 애플리케이션
      • 지속적인 배포
    • 리액트 네이티브 프레임워크
      • 리액트 네이티브란?
      • 엑스포
    • 요약
    • 질문거리

도서 오류 신고

도서 오류 신고

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

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

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

정오표

정오표

[p.25 6행]
한구어판의
->
한국어판의

[p.205 9행]