이미지 확대/축소가 가능합니다.

닫기



프로그래밍의 세계에서는 시간이 아주 빠르게 흘러간다. 수 년이면 프레임워크 트렌드가 바뀌고, 10년쯤 지나면 당시 인기 기술은 현재 환경에 도태된 낡은 기술로 취급되기 일쑤다. 하지만 백엔드(서버 프로그래밍) 환경에서는 어떨까? 비교적 기술의 생명 주기가 길고, 특성상 신기술 도입에 살짝 신중하기도 하다. 이쯤에서 이런 생각이 들 것이다. ‘파이썬, 자바스크립트로 서버 잘 돌리고 있는데 왜 배워야 하죠?’


소규모 서비스만 다룰 생각이라면 그 둘만으로 충분할지도 모르겠다. 하지만 성능이 중요한 대규모 서비스, 대규모 회사일수록 존재감이 커지는 언어가 Go다. Google, Twitch 등 유수 기업들이 많은 코드를 Go 기반으로 바꾸었다. C++처럼 성능이 좋은 대신 어려울 것 같은가? 조금만 써보면 알겠지만, 전혀 그렇지 않다. IBM과 구글에서 일하는 2003년생 천재 개발자인 탠메이에게 이 강력한 언어를 배워보자.

초반부 설치와 프로그램 실행 파트는 굉장히 빠르게 진행된다. 하지만 그럼에도 Go의 특징적인 부분은 자세히 설명한다. 그 뒤에는 모듈, 패키지 등 자주 사용하게 될 Go 요소들을 배운다. 흥미를 잃지 않도록 유명한 알고리즘을 구현하거나, 영화 검색 기능을 만드는 등 재미있는 프로그램을 만들어 본다. 후반부에는 Go의 가장 큰 특징인 동시성을 이용하여 기존의 프로그램을 개선하고, C나 Swift 같은 언어와 함께 사용하여 효율적인 프로그래밍을 하는 방법을 알려준다.


제1장 소개
1.1 왜 Go인가요?
1.1.1 Go의 설계 목표는 무엇인가요?
1.1.2 어디서 Go를 활용할 수 있을까요?
1.1.3 Go 컴파일러와 런타임
1.1.4 동시성
제2장 빠르게 시작하기
2.1 Go 설치하기
2.1.1 시스템 패키지 매니저를 이용하여 설치하기
2.1.2 미리 컴파일된 바이너리 이용하기
2.1.3 소스코드로 Go 빌드하기
2.2 Go 기본 개념
2.2.1 일반적인 프로젝트 구조
2.2.2 Go의 시작 “Hello, World!”
2.2.3 변수
2.2.4 if 문 그리고 switch 문
2.2.5 반복문
2.2.6 함수
2.2.7 구조체
2.2.8 인터페이스
2.2.9 오류
제3장 Go 모듈
3.1 빌트인 패키지 사용하기
3.2 서드파티 패키지 사용하기
3.2.1 저 소수인가요? 1
3.3 직접 만든 패키지 빌드하기
3.3.1 저 소수인가요? 2
제4장 빌트인 패키지 사용하기
4.1 일반적인 데이터 구조와 알고리즘
4.2 다익스트라 길 찾기
4.3 콘웨이의 라이프 게임
4.4 작업 증명 1
제5장 동시성
5.1 동시성, 스레드, 그리고 병렬성
5.2 고루틴
5.3 채널
5.3.1 select 문
5.4 작업 증명 2
제6장 상호 호환성
6.1 상호 호환성이 중요한 이유는 무엇일까요?
6.2 C 코드와 상호 호환하기
6.3 Swift와 상호 호환하기
색인



상세 이미지 1



제1장 소개
왜 Go라는 언어를 선택해야 하는지 알아보는 장입니다. Go의 설계 목표와 동작 플랫폼, Go의 메모리 관리 방식을 소개하고, Go를 사용해야 하는 가장 큰 이유인 동시성과 다른 장점을 설명합니다.

제2장 빠르게 시작하기
Go의 설치 방법과 프로젝트 구조, 필수 문법 등 앞으로 배우게 될 Go의 핵심 요소들을 배우기 전 준비하고 알아야 할 사항을 가볍게 살펴봅니다. 불필요할 정도로 자세히 설명하기보다는 다른 언어와 Go가 다른 부분들을 위주로 설명합니다.

제3장 Go 모듈
Go의 패키지 관리 시스템인 Go 모듈의 구성과 사용법을 알려주는 장입니다. 언어에 내장된 패키지와 서드파티 패키지를 사용하는 방법, 직접 패키지를 만드는 방법을 영화 정보 검색 프로그램, 소수 확인 프로그램 등의 재미있는 예제를 통해 배워봅니다.

제4장 빌트인 패키지 사용하기
내장된 패키지를 이용하여 Go의 다른 기능과 특징을 다익스트라 길 찾기 알고리즘과 콘웨이의 라이프 게임을 구현하며 배우게 됩니다. Go에서 GUI를 구현하는 방법, 나만의 함수를 만드는 방법 등을 알게 됩니다.

제5장 동시성
Go의 가장 중요한 특징인 동시성을 소개하는 장입니다. 기존의 스레드와 프로세스의 개념을 잡은 다음, Go에서 지원하는 기능인 고루틴과 채널을 이용하여 기존 프로그램을 얼마나 개선시킬 수 있는지 보여줍니다.

제6장 상호 호환성
이미 발명된 바퀴를 다시 만들 필요가 없듯, 프로그램도 마찬가지입니다. 6장에서는Go가 특화된 분야와 다른 언어를 사용하는 게 나은 분야를 알려주고, 각 언어의 장점을 살릴 수 있도록 Go와 다른 언어를 함께 사용하여 프로그램을 만들 수 있는 방법을 알려줍니다.

* 작가의 말

〈백엔드를 위한 Go 프로그래밍〉은 모든 개발자가 Go 프로그래밍 언어에 더욱 쉽게 접근하고 이해할 수 있도록 돕기 위해 만들어진 책입니다. Go는 모던 백엔드 개발을 위해 구현된 언어라고 할 수 있습니다. 무어의 법칙이 한계에 이른 오늘날에는 컴퓨터의 성능이 계속 좋아지리라 보기 어렵고, 따라서 우리는 엄청나게 최적화된 소프트웨어 스택을 실행하는 대규모 분산시스템에 적응해야만 합니다.

근본적으로 서로 다른 하드웨어가 함께 동작하는 분산시스템은 소프트웨어 세계에 혁신과 변화를 일으키도록 했습니다, 그 결과 요즘 소프트웨어는 거대한 모놀리식 디자인에서 점점 벗어나고 있습니다. 작게 나누어진 마이크로 서비스들이 모여 하나의 시스템을 구성하고 있고, 서로 다른 프로젝트에서도 많은 코드를 재사용하고 권한을 위임하여 예전보다 오류를 최소화하고 있습니다.

소프트웨어 세계가 발전함에 따라 이런 새로운 패러다임에 맞는 인프라 수요가 늘어났고, 이 수요를 충족하기 위해 완전히 새롭게 개발한 프로그래밍 언어인 Go가 만들어졌습니다. Go는 코드 크기가 작고 이식성까지 놓은 데다가 컴파일 시간은 엄청나게 빨라 마이크로 서비스 기반의 소프트웨어를 개발할 때 굉장히 편리한 언어입니다. 거기에 대해 강력하면서 동시성을 쉽게 적용할 수 있도록 만들어진 고루틴이나 채널 등 다른 어떤 언어도 따라올 수 없는 특별한 기능도 준비되어 있습니다.

게다가 Go는 쿠버네티스, 도커, 코크로치DB 같은 백엔드 개발을 위한 많은 인프라 서비스를 지원하는데, 이렇게 이미 잘 만들어진 대중적인 툴들을 이용할 수 있다는 점은 엔터프라이즈 레벨의 백엔드 개발을 위한 대규모 오픈소스코드들에 더 손쉽게 접근할 수 있음을 뜻하기도 합니다.

이 책을 통해 여러분이 go를 문제 해결 상자의 도구로 활용할 수 있는 역량을 갖춘 Go 개발자가 되길 바랍니다. 더 좋은 점은 이 도구는 기존에 경험앴던 다른 도구들과 달리 엔터프라이즈 레벨의 문제를 처리하는 데 적용할 수 있다는 점입니다. 따라서 Go는 여러분이 앞으로 어떤 코드를 작성할 때 싶은 가장 첫 번째 후보가 될 것입니다.