7가지 동시성 모델
정진명의 굳이 써서 남기는 생각 @jm@guji.jjme.me
서지정보
서명: 7가지 동시성 모델
저자: 폴 부처(Paul Butcher)
역자: 임백준
출판사: 한빛미디어
출간일: 2016년 7월 15일
원서명: Seven Concurrency Models in Seven Weeks: When Threads Unravel
원서 출간일: 2014년
생각
『7가지 동시성 모델』은 『한국신화를 찾아 떠나는 여행』 다음으로 읽는 빌린책챌린지 책입니다. 뜬금없이 프로그래밍 도서로 뛰었지요. 최근에 관련된 업무를 하게 되어 손이 이 쪽으로 왔습니다. 시리즈의 전작이라고 할 수 있는 『브루스 테이트의 세븐 랭귀지』를 좋아하기도 했어서, 비슷한 감각으로 배울 수 있는 게 있을 거라 생각했습니다.
제가 전문적으로 프로그래밍을 익힌 분야는 기본적으로 과학적 계산(Scientific Computing) 중 일부분이고, 또 학계에 한정되어 있기도 해서 일반적으로 업계에서 프로그램을 작성하는 직무에 필요한 사고방식과 고려해야 할 문제에 익숙하다고 하기는 어렵습니다. 그래도 나름 산업적으로 활용되는 분야라 슈퍼컴퓨팅센터 같은 곳에 기웃거리면서 GPGPU니 병렬계산이니 하는 개념을 익히기도 했지만, 아무튼 제 졸업논문에 들어간 계산 정도는 병렬 계산은 커녕 순차적으로 실행되는 CPU 프로그램만으로도 충분했습니다.
그런 면에서 저는 코드의 흐름이 비동기적이 되는 부분부터 어려움을 느끼고, await/async, Promise, 뭐 이런 걸 정말 필요한 정도로만 알고 있습니다. 병렬 처리, 멀티스레딩 같은 건 말할 것도 없죠. 그런 점에서, 제가 모르는 영역에서 그래도 아는 키워드를 조금이라도 넓혀나가고 싶다는 것이 이 책을 집게 된 이유입니다.
이 책은 말 그대로 프로그래밍의 세계에서 동시성을 다루는 일곱 가지 모델을 다룹니다. 영어 제목에서는 좀 더 드러나지만, 7주간 금요일, 토요일, 일요일 분량을 읽고 실습하면서 개념을 익혀나가는 구성이지요. 스레드와 락, 함수형 프로그래밍, 클로저의 모티베이션, 액터, 채널, GPGPU, 맵리듀스와 하둡… 하나의 흐름으로 설명하기 어려운 프로그램들의 여러 측면을 다룬다고 할 수 있겠습니다.
원래 이 책을 읽는 방법은 이 책이 다루고 있는 예제 코드를 직접 돌려보고 연습 문제를 풀어보는 것이겠지만, 전작과 달리 그러지는 못했습니다. 그만큼 이해는 얕을 수밖에 없겠지만, 뭐 어쩔 수 없지요. 나중에 제게 이 책의 내용이 필요한 일이 온다면, 이런 개념이 어떻게 불린다는 것, 그리고 어디서 찾아야 할지는 이제 익혔으니 그 때 다시 돌아와서 머리를 싸매야겠지요.