로그인회원가입장바구니고객센터마이페이지회사소개
kangcom
전체
Home >   >   > 

Go 동시성 프로그래밍

   
지은이 캐서린 콕스 부데이   |   출판사 에이콘  |   발행일 2019년 06월 28일
 
클릭하시면 큰 도서이미지를 보실 수 있습니다.
판매가 28,000원25,200원 10%
마일리지 5% 1,400원
발행일 2019-06-28
ISBN 1161753176 |  9791161753171
기타정보 번역서 | 304쪽 | 일반
예상출고일 1~2일 이내 (근무일기준)
배송비 무료배송
   
일반
종합지수 0p
   
 

★ 요약 ★



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





★ 이 책에서 다루는 내용 ★



█ Go가 복잡한 동시성 문제를 해결하는 방법

■ 동시성과 병렬성의 핵심적인 차이

■ Go의 메모리 동기화 기본 문법

■ 유지보수 가능한 동시성 코드 작성을 위한 기본 요소 활용 패턴 작성

■ 확장 가능한 대규모 분산 시스템을 작성할 수 있는 패턴 예제화

■ 고루틴의 배경이 되는 철학

■ Go의 런타임이 모든 것을 하나로 합치는 방법





★ 이 책의 대상 독자 ★



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 런타임의 내부를 이해하고자 하는 독자들을 위한 내용을 담고 있다.

‘부록’에서는 동시성 프로그램을 간단히 작성해보고 보다 쉽게 작성하고 디버깅할 수 있도록 도와주는 여러 가지 도구들을 나열한다.





★ 지은이의 말 ★



『Go 동시성 프로그래밍』에 온 것을 환영한다! 이 책을 선택하고, 6개 장에 걸쳐 Go에서의 동시성에 대해 함께 알아보게 된 것을 기쁘게 생각한다.

Go는 멋진 언어다. 이 언어가 처음 발표되고 세상에 나왔을 때, 큰 관심을 갖고 살펴봤던 기억이 난다. Go는 간결하고 믿을 수 없을 정도로 빠르게 컴파일되며 성능이 뛰어날 뿐만 아니라 덕 타이핑(duck typing)도 지원한다. 또한 기쁘게도 Go 언어의 동시성 기본 요소로 작업하면서 많은 영감을 받을 수 있었다. 처음으로 go 키워드를 사용해 고루틴(이후 설명할 것이다)을 생성했을 때, 바보처럼 웃지 않을 수 없었다. 다양한 언어에서 동시성 작업을 해봤지만, 이렇게 동시성을 쉽게 만들어주는 언어를 사용해본 적은 없다(이런 언어가 존재하지 않는다는 것이 아니라, 사용해본 적이 없다는 것이다). 나는 Go에서 길을 발견했다.

지난 몇 년 동안 나는 Go로 간단한 스크립트를 작성하는 수준에서 개인적인 프로젝트를 거쳐, 마침내 수십만 줄의 코드를 다루는 전문적인 프로젝트를 수행하기에 이르렀다. Go 언어 커뮤니티 역시 언어와 함께 성장했고, 함께 Go에서 동시성을 다루는 모범 사례를 발견했다. 몇몇 사람들은 자신이 발견한 패턴에 대해 이야기했다. 그러나 커뮤니티에는 Go에서 동시성을 어떻게 다뤄야 하는지에 대한 종합적인 안내가 없었다.

나는 이 점을 염두에 두고 책을 쓰기로 마음먹었다. Go 커뮤니티가 동시성 프로그래밍 요소의 사용법, 시스템에 이를 통합하기 위한 모범 사례 및 패턴, 내부적인 동작 원리를 비롯한 Go 언어의 동시성에 대한 종합적인 고급 정보에 접근할 수 있기를 원했다. 이 책을 쓰면서 이 주제들 사이에서 균형을 유지하고자 최선을 다했다.

이 책이 도움이 되기를 바란다!

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
캐서린 콕스 부데이(Katherine Cox-Buday)

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





★ 옮긴이의 말 ★



오늘날 소프트웨어가 동작하는 환경(고성능 멀티 코어 CPU의 보급과 멀티태스킹 지원, 비동기 분산 서비스 및 클라우드 기반의 마이크로서비스 패러다임)을 살펴보면 동시성을 고려하지 않고 프로그램을 작성하는 것은 불가능해 보인다.

이러한 환경을 반영하듯 동시성을 지원하는 새로운 언어가 계속 등장하고 있으며, 기존의 언어들 역시 다양한 패턴과 라이브러리를 추가해 동시성 프로그래밍을 지원하려는 변화의 노력을 지속하고 있다. 언어들이 동시성을 추상화한 수준은 모두 다른데, 그중에서도 Go 언어의 동시성 지원은 단연 돋보인다.

전통적인 프로세스와 스레드, 잠금 및 동기화 모델, 이어서 등장한 메시지 큐와 비동기 서비스 모델에서의 동시성 프로그래밍과 Go 언어가 제공하는 고루틴과 채널을 활용한 동시성 프로그래밍을 비교해본다면 언어 자체가 지원하는 추상화의 강력함을 느낄 수 있을 것이다. Go 언어는 동시성과 관련된 부수적인 작업들을 추상화함으로써 프로그래머가 문제 해결에만 집중할 수 있도록 도와준다.

이 책은 Go 언어의 특성을 보다 잘 이해하고 활용할 수 있도록 동시성과 병렬성의 개념, Go 동시성 모델의 이론적인 배경부터 실무에서 활용할 수 있는 도구와 테크닉까지 폭넓게 다루고 있다. 이 책을 통해 Go를 활용한 동시성 프로그래밍 기법을 익힐 수 있을 뿐만 아니라 최신 언어가 동시성을 어떻게 지원하는지 살펴보며 동시성 자체에 대한 이해도 높일 수 있을 것이다.





★ 옮긴이 소개 ★



이상식

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

등록된 서평이 없습니다.
주키퍼 ZooKeeper...
플라비오 융케이라
선택된 상품을 찜하실 수 있습니다. 선택된 상품을 바로구매 하실 수 있습니다.
디지털 논리회로...
임석구
선택된 상품을 찜하실 수 있습니다. 선택된 상품을 바로구매 하실 수 있습니다.
사물 인터넷 (IoT)...
양순옥, 김성석
선택된 상품을 찜하실 수 있습니다. 선택된 상품을 바로구매 하실 수 있습니다.
커트 건서로...
드미트리 보...
야체크 갈로...
조영호
 
전체평균(0)
회원평점   회원서평수 0
에이콘 출판사의 신간
빅데이터 마이닝 3/e
쥬어 레스코벡/박효균 저
45,000원
(10%↓+5%)
 
스콧 애론슨의 양자 컴퓨팅 강의
스콧 애론슨/남기혁 저
29,700원
(10%↓+5%)
 
클린 파이썬
수닐 카필/유연재 저
19,800원
(10%↓+5%)
 
개발 함정을 탈출하라
엘리사 페리/권혜정 저
21,600원
(10%↓+5%)
 
정보 검색의 이론과 실제
스테판 버처/김진홍 저
40,500원
(10%↓+5%)
 
이메일주소수집거부