그로킹 동시성 - 다양한 이야기와 재미있는 일러스트로 풀어나가는 동시성
키릴 보브로프 지음, 심효섭 옮김 / 길벗 / 2024년 11월
평점 :
장바구니담기


동시성은 애플리케이션을 개발하면서 이를 갖추기 위한 시스템을 만들려면 동시성에 대한 이해가 중요하다고 생각한다.

한정된 자원을 가지고 빠른 성능을 얻기 위해서 지연 시간을 드러내지 않고 기존에 처리하던 자원의 활용도를 높여서 성능과 처리율을 크게 개선하기 위해서 동시성이라는 기법을 능숙하게 다를 수 있어야 한다.

특히나 시스템이 복잡해지고 서로 통신하는 여러 구성 요소들 간에 동시성을 적용함에 있어서 확장성이나 여러 구성 요소들을 더 단순하게 분해할 수 있는 느슨한 결합의 개념에서 이 기술은 중요하게 되었다.

이 책은 동시성이 왜 중요한지 이를 도입하면 어떠한 점이 좋은지 등을 먼저 소개하고 이후에는 동시성에 대한 개념을 이해하기 위한 선행 개념을 소개한다.

이를 위해서 순차적으로 실행하는 것에 대한 개념을 통해 병렬로 실행하는 것과의 비교를 해볼 수 있고 동시성과 병렬성이 어떠한 점에서 다른지에 대해서도 다룬다.

동시성은 여러 개의 작업을 동시에 진행하는 것으로 프로그래밍 언어와 프로그램 설계에 따라 결정되지만 병렬형은 실행환경에 따라서 자원들과 작업 간의 독립성이 필요로 하는 점에서 실행 환경에 의해 결정되다는 차이도 이해할 수 있다.

이후에는 병렬 실행의 이점을 살리기 위한 장치의 사용을 설명하는데 클록 속도가 빠르고 여러 명령을 병렬로 실행하는 CPU와 비교적 느린 클록 속도로 한가지 명령만을 모든 코어에서 실행하여 대규모 병렬로 실행 속도가 빠른 GPU를 비교한다.

그리고 동시적 애플리케이션을 작성하기 위한 설명하기 위해 스레드에 대한 설명도 다루고 작업 간에 효율적인 정보 교환을 위한 방법과 애플리케이션에 적합한 통신 유형을 선택하는 방법, 그리고 동시적 애플리케이션을 스레드 풀에 대한 프로그래밍 기법도 다룬다.

중반부부터는 애플리케이션에 대한 병목 지점을 이해하기 위한 분석 방법을 다루고 병렬 하드웨어 없이도 여러 작업을 동시에 처리할 수 있는 멀티태스킹 기법을 소개하며 실제로 동시적 애플리케이션을 개발할 때 자주 사용하는 패턴인 파이프라인, 맵, 포크/조인, 맵/리듀스에 대한 개념도 익힐 수 있다.

또한 동시성에서 흔히 겪을 수 있는 문제에 대해서 이를 식별하고 해결하기 위한 방법과 함께 교착상태인 데드락과 라이브락이 어떤 것이고 이를 식별하고 해결하는 방법도 소개한다.

이후에는 동시성 디자인 패턴인 프로듀서와 컨슈머 패턴, 그리고 리더와 라이더 패턴도 공부해볼 수 있다.

후반부에는 중반부까지 다룬 개념들을 바탕으로 특정 시나리오를 바탕으로 애플리케이션을 개발하는 상황을 가정하고 설계하는 방식을 함께 해볼 수 있다.

이 부분은 중반부까지의 내용을 이해하고 나서 읽어보았으면 한다.

그래야 실제 상황에서 고려해야 할 요소들을 생각하고 그 부분이 책에 설명한 내용과 함께 읽어보면 더욱 도움이 될 내용이다.

동시성은 어렵고 고급 기술이라고 생각할 수 있지만 이러한 내용도 익히고 공부해야 더 견고한 시스템을 만들 수 있다고 생각한다.

하지만 이 책에서 설명하는 내용과 용어들이 어려울 수 있지만 그림을 통해 내용을 이해해본다면 어려울 수 있는 내용도 쉽게 이해될 수 있을 것이라고 생각한다. 그만큼 이 책은 동시성에 대한 내용을 그림을 통해 쉽게 설명한다.

개발자라면 동시성에 대한 개념의 이해가 꼭 필요하다고 생각한다.

동시성에 대한 개념을 익히고 싶은 분들에게 추천한다.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo