Go 동시성 프로그래밍 (개발자를 위한 도구와 테크닉)
Description
고성능의 멀티 코어 CPU, 클라우드 기반의 비동기 서비스 등 최근 트렌드를 고려하면 프로그램을 작성할 때 동시성을 고려하는 것은 필수 과정이다. 이 책에서는 Go 언어의 동시성 모델과 이론적 배경을 비롯해 실무에서 활용할 수 있는 도구와 동시성 프로그래밍 테크닉을 폭넓게 다룬다. 언어 자체가 높은 추상화를 통해 동시성 프로그래밍의 여러 고려 사항을 지원한다는 것이 얼마나 강력한 기능인지 이해하고, 이를 실제로 활용한 패턴을 습득할 수 있다.
저자

캐서린콕스부데이

저자:캐서린콕스부데이
디지털오션(DigitalOcean)사에서일하고있는컴퓨터과학자이다.소프트웨어엔지니어링,창조적인글쓰기,바둑과음악이취미이며이모든것을가끔씩,다양한수준의노력으로즐기고있다.

역자:이상식
성균관대학교컴퓨터공학과를졸업한후금융결제원을거쳐현재금융보안원에서일하고있다.모의해킹업무를수행하고있지만,보안이외에도파이썬프로그래밍,시스템트레이딩등다양한분야에관심이많다.

목차

1장.동시성소개
무어의법칙,웹스케일,그리고혼란
동시성이어려운이유
레이스컨디션
원자성
메모리접근동기화
데드락,라이브락,기아상태
데드락
라이브락
기아상태
동시실행안전성판단
복잡성속의단순함

2장.코드모델링:순차적인프로세스간의통신
동시성과병렬성의차이
CSP란무엇인가?
동시성을지원하는언어의장점
Go의동시성에대한철학

3장.Go의동시성구성요소
고루틴
sync패키지
WaitGroup
Mutex와RWMutex
Cond
Once
Pool
채널
select구문
GOMAXPROCS레버
결론

4장.Go의동시성패턴
제한
for-select루프
고루틴누수방지
or-채널
에러처리
파이프라인
파이프라인구축의모범사례
몇몇유용한생성기
팬아웃,팬인
or-done채널
tee채널
bridge채널
대기열사용
context패키지
요약

5장.확장에서의동시성
에러전파
시간초과및취소
복제된요청
속도제한
비정상고루틴의치료
요약

6장.고루틴과고런타임
작업가로채기
작업또는연속가로채기
이모든것을개발자에게보여주는방법
결론

부록
고루틴에러분석
레이스탐지
pprof

출판사 서평

이책의대상독자

Go언어를사용해본경험이있는개발자를대상으로한다.언어의기본문법에대한설명은하지않을것이다.다른언어에서동시성이어떤식으로표현되는지알고싶다면도움이되겠지만반드시알필요는없다.
이책에서는Go동시성프로그래밍의여러주제에관해논한다.흔히나타나는동시성프로그래밍의문제점이나Go의동시성을디자인한배경,Go의동시성기본요소문법,일반적인동시성패턴,그리고이모든과정을도와주는도구들을다룰것이다.이책은광범위한주제를다루기때문에다양한분야에걸쳐있는사람들에게유용할것이다.‘이책의구성’은필요한내용에따라이책을탐색하는데도움이될것이다.

이책의구성

기술서적을읽을때나는관심이있는부분을이리저리건너뛰면서읽고는한다.혹은업무를위해서새로운기술을익히려고하는경우,일과관련된부분을집중적으로찾아본다.당신이어떤식으로이책을읽든이책의로드맵이당신이원하는곳에이를수있도록도움이되기를바란다.
1장,‘동시성소개’에서는역사적인관점에서동시성이왜중요한기능이됐는지알아보고,동시성프로그래밍을정확하게작성하는것이어려운근본원인에대해이야기한다.그리고Go언어가어떻게이런어려움을덜어주는지간략하게다룬다.만약동시성에대한실무지식이있거나Go의동시성기본요소를사용하는방법에대한기술적인측면에관심이있다면이장을건너뛰어도무방하다.
2장,‘코드모델링:순차적인프로세스간의통신’에서는Go언어가지금과같이디자인되는데동기를부여한요소를다룬다.이를이해하면Go언어커뮤니티에서다른사람과대화하는데도움이된다.또한Go언어가동작하는원리를이해하는틀을잡는데도도움이된다.
3장,‘Go의동시성구성요소’에서는Go의동시성기본요소의문법을깊이살펴본다.또한Go의메모리접근동기화를담당하는sync패키지도알아본다.이전에Go언어에서동시성프로그래밍을해본적이없지만바로시작하기를원한다면이장부터읽으면된다.3장에서는Go에서의기본적인동시성코드작성에대한내용,다른언어및동시성모델의개념과의비교가섞여있다.꼭다른언어나동시성모델에서의개념까지이해할필요는없지만,이개념들은Go의동시성에대한완전한이해를돕는다.
4장,‘Go의동시성패턴’에서는Go의동시성기본요소들이합쳐져어떻게패턴을형성하는지살펴본다.이패턴들은문제를해결하는데도움이될뿐만아니라,동시성기본요소를조합하는데서오는이슈를해결하는데도움이된다.Go언어로동시성프로그램을작성해본경험이있다면4장부터읽는것도도움이될것이다.
5장,‘확장에서의동시성’에서는그동안배웠던패턴을조합해서보다큰프로그램,서비스,분산시스템에서일반적으로사용하는큰패턴을구성해본다.
6장,‘고루틴과Go런타임’에서는Go의런타임이고루틴을스케줄링하는방법을설명한다.6장은Go런타임의내부를이해하고자하는독자들을위한내용을담고있다.
‘부록’에서는동시성프로그램을간단히작성해보고보다쉽게작성하고디버깅할수있도록도와주는여러가지도구들을나열한다.