<7가지 동시성 모델(한빛미디어)>은 소프트웨어의 속도와 안전성을 향상시키기 위한 7가지 방법을 소개합니다.
1. 왜 읽어야 하나요?
과거에는 단순히 더 성능이 좋은 하드웨어를 구매함으로써 소프트웨어의 성능을 개선할 수 있었습니다. 하지만 현대 기술로는 CPU 속도 자체를 빠르게 하는 것에 한계에 봉착하여 속도를 올리는 대신 CPU를 2개, 4개 혹은 8개 이상을 넣어 동시에 처리할 수 있는 연산의 양을 늘리는 방향으로 나아가고 있습니다. 다시 말해서, 앞으로는 동시성과 병렬성을 활용해야 고품질의 소프트웨어 개발이 가능합니다. 높은 성능의 확장성 있는 서비스를 제공하고 싶나요? 당신은 이 책에서 소개하는 동시성과 병렬성을 위한 새로운 개념을 반드시 익혀야 합니다.
2. 이 책의 장단점은 무엇인가요?
이 책의 가장 큰 장점은 전통적인 스레드와 잠금장치부터 본격적으로 실무에서 사용하고 있는 함수형 프로그래밍부터 클로저, 액터 모델, 순차 프로세스 통신, 데이터 병렬성, 람다 아키텍처를 한 권으로 빠르게 훑을 수 있다는 것입니다.
그렇다면 단점은 무엇일까요? 다양한 내용을 빠르게 훑기 때문에 하나의 주제에 심도있게 들어가지 않습니다. 게다가 책에서 나오는 각종 예제를 실행할 수 있는 환경은 독자가 알아서 구축해야 합니다. 국내에서는 아직 많이 사용하고 있지 않은 클로저(Clojure) 라는 언어로 대부분의 예제를 설명한다는 것 또한 장벽일 수 있습니다.
그러나 책을 차근차근 읽다보니 새로운 언어에 조금씩 익숙해질 수 있었습니다. 비록 책에 나온 예제를 완벽히 이해할 수는 없었지만 적어도 각 장에서 소개하는 패러다임에 대해서는 충분한 파악이 가능했습니다.
3. 총평
저에게는 쉽지 않은 책이었습니다. 하지만, 100% 이해하겠다는 마음이 아닌 새로운 개념을 받아들인다는 자세로 책을 읽었더니 조금이나마 저의 지식을 넓힐 수 있었습니다. 앞으로 클로저나 엘릭서 혹은 고(Go) 등의 함수형 언어가 추구하는 철학을 배워서 어떤 문제를 바라볼 때 더 다양한 관점에서 해결책을 강구할 수 있도록 제 자신을 더 단련하고 싶습니다. 저자의 한 마디로 리뷰를 마치겠습니다.
"내가 확신을 가지고 말할 수 있는 것은 앞으로 병렬성과 동시성이 점점 더 많이 중요해질 것이라는 점이다."
7가지 동시성 모델은 "일주일에 한 개씩, 단 7 만에 7가지 동시성 모델 완전 학습!"이라는 문장으로 요약할 수 있는 책입니다.
1주 차: 스레드와 잠금장치
2주 차: 함수형 프로그래밍
3주 차: 클로저 방식
4주 차: 액터
5주 차: 순차 프로세스 통신
6주 차: 데이터 병렬성
7주 차: 람다 아키텍처
위와 같은 커리큘럼을 가진 책으로, 총 363페이지의 IT 전문서로써는 조금 얇은 편의 책입니다.
전체적인 학습 커리큘럼이 매우 잘 구성되어 있다는 인사을 주었습니다. 하루의 학습을 마감하는 장에, 마무리 단계가 있습니다. 배운 내용을 정리해주고, 자율학습(찾아라, 수행하라) 가이드라인을 제시합니다. 더불어 그 장의 장·단점을 정리해주는 구성은 독자로써 무척이나 만족스러웠습니다. 그리고 새로운 개념을 소개할 때, 단순히 정의의 나열이 아닌 단계별 문제와 해법을 통하여 개념을 제시하고 있습니다. 이는 새로운 개념을 마주할 때, 큰 도움이 되었습니다.
다만 함수형 프로그래밍에 대한 전체적 맥락을 보는 정도의 내용이지, "완전 학습"이라 하기엔 어렵습니다. 함수형 프로그래밍에 대한 기본 개념을 어느정도 갖춘 분이 아니라면, 상당한 난항이 있을 책입니다. 어렵습니다.
'임백준'이라는 이름과 '동시성 모델'이라는 신뢰성과 호기심으로 이 책을 택하였습니다. 웹 프로그래머로써는 상당히 낯선 개념인 함수형 프로그래밍에 대하여 전체적인 맥락을 짚어볼 수 있는 좋은 기회였습니다.
다만 누군가에게 이 책을 권하게 된다면, 먼저 함수형 프로그래밍에 대한 기본 개념이 담긴 책을 권하고 싶습니다.
이 책의 원서는 작년에 처음 접했는데 바쁘다는 핑계로 보지 않고 있다가 한빛리더스 도서리스트에 마침 번역서가 떴길래 신청했다.
빅데이터 관련 업무를 오랬동안 해왔기 때문에 병렬처리는 어느정도 알고 있다고 생각했는데 이 책을 보면서 의외로 놓친 부분을 파악할 수 있었고 어렴풋하던 부분을 명확히 해주었다.
빅데이터가 이슈가 되면서 하둡, 스파크, 스칼라 관련 서적들이 굉장히 많이 쏟아져 나왔지만 중급 이상 개발자가 되기 위해서는 그 근간에 있는 멀티코어, 멀티쓰레딩, 동시성, 병렬성 등의 이해가 필요하다. 또한 시스템이 점점 복잡해지고 있기 때문에 빅데이터가 아니더라도 마이크로 아키텍쳐, 액터 모델, 어싱크 등의 용어가 종종 언급되는 업무를 하고 있다면 한 번쯤 읽어두면 좋다.
사실 이 내용만으로도 두꺼운 전공 서적을 만들 수 있을 정도로 복잡할 수 있는 내용인데 이 책에서는 클로저를 이용하여 7주 과정으로 쉽게쉽게 설명하고 있다. 단 오히려 이점이 단점이 되기도 한다. 클로저 위주로 설명하고 있지만 클로저는 한국 개발자가 가장 흔히 알고 있는 자바와는 (java8에는 일부 개념이 들어갔지만) 다른 문법과 개념(특히 함수형 언어의 특징들)을 많이 가지고 있기에 이해하기 어려울 수 있다. (개인적으로 익숙한 scala였으면 하는 바램은 있었다.) 한가지 조언을 하자면 이 책은 게임 튜토리얼처럼 한단계 한단계 진행해나가는 형태로 진행하고 있기 때문에 디테일한 코드보다는 이 코드를 통해 설명하고자 하는 내용 위주로 파악하면 읽기에 조금이라도 수월해질 수 있을 것이다.
빅데이터에서 필요한 7가지 동시성 모델에 대해 예제를 들어 설명한 책이다.
금, 토, 일 3일씩 주말에 놀지도 말고 7주에 거쳐서 보라고 친절하게 편집되어 있고 책도 두껍지 않아서 책을 받아본 순간 금방볼수있겠다는 생각이 들겠지만, 국내에서 클로저를 실무에서 쓰는 사람이 별로 없다는 점과 자율학습까지 학습하며 뽕을 뽑을 요량으로 공부한다고 했을 때 하루동안의 학습분량이 결코 적은것은 아닌것같다(T_T
솔직히 나는 7가지 동시성 모델이라는 제목에 낚였다. 내가 생각한 병렬처리/동시성은 트래픽이 많은 사이트-포탈/커머스등의 메인페이지-에서의 리스크 관리에 대한 내용이었는데...(물론 클로저방식의 클로저를 javascript의 closure로 착각한 내 무지가 크다.) 그치만 역자이신 임백준님의 서문처럼 '상식의 지평을 넓힌다'는 마음가짐으로 본다면 앞으로의 개발경력에 조금이라도 도움이 되지 않을까.빅데이터를 잘 모르는 초급개발자가 보기에는 다소 힘겨운것같다.