
그로킹 동시성
Description
책소개
grokking concurrency!
복잡한 수식과 전문 용어를 몰라도 괜찮다!
읽기만 해도 동시성을 이해할 수 있다!
동시성은 프로그램을 독립적으로 실행하도록 분리해 동시에 처리하는 방식이며, 이를 구현하려면 복잡성, 병렬성, 스레드, 프로세스, 멀티태스킹, 코루틴처럼 다양한 기술과 개념을 알고 적재적소에 사용할 줄 알아야 한다.
이 책은 어렵게만 느껴지던 동시성을 실제 생활에서 흔히 볼 수 있는 예와 흥미로운 일러스트로 설명한다.
특정 프로그래밍 언어나 구현에 국한해 설명하지 않으며, 좀 더 근본적인 내용인 개념과 원칙을 학습하도록 도와준다.
특히 확실하게 이해하기 위해 복잡한 수식보다는 시각적인 다이어그램으로 개념을 쉽게 설명하며, 다양한 이야기로 독자의 흥미를 이끈다.
이 책을 읽고 나면 동시성에 대해 전체적인 그림을 그릴 수 있을 것이다.
복잡한 수식과 전문 용어를 몰라도 괜찮다!
읽기만 해도 동시성을 이해할 수 있다!
동시성은 프로그램을 독립적으로 실행하도록 분리해 동시에 처리하는 방식이며, 이를 구현하려면 복잡성, 병렬성, 스레드, 프로세스, 멀티태스킹, 코루틴처럼 다양한 기술과 개념을 알고 적재적소에 사용할 줄 알아야 한다.
이 책은 어렵게만 느껴지던 동시성을 실제 생활에서 흔히 볼 수 있는 예와 흥미로운 일러스트로 설명한다.
특정 프로그래밍 언어나 구현에 국한해 설명하지 않으며, 좀 더 근본적인 내용인 개념과 원칙을 학습하도록 도와준다.
특히 확실하게 이해하기 위해 복잡한 수식보다는 시각적인 다이어그램으로 개념을 쉽게 설명하며, 다양한 이야기로 독자의 흥미를 이끈다.
이 책을 읽고 나면 동시성에 대해 전체적인 그림을 그릴 수 있을 것이다.
- 책의 일부 내용을 미리 읽어보실 수 있습니다.
미리보기
목차
PART I문어 오케스트라:동시성 교향곡 입문하기
CHAPTER 1 동시성이란 무엇인가?
1.1 동시성의 중요성
1.2 동시성의 계층
1.3 이 책에서 배우게 될 내용
CHAPTER 2 순차 실행과 병렬 실행
2.1 돌아보기: 프로그램이란 무엇인가?
2.2 순차 실행
2.3 순차 컴퓨팅
2.4 병렬 실행
2.5 병렬 컴퓨팅을 위해 필요한 것
2.6 병렬 컴퓨팅
2.7 암달의 법칙
2.8 구스타프슨의 법칙
2.9 동시성 vs.
병렬성
CHAPTER 3 컴퓨터의 동작 원리
3.1 프로세서
3.2 런타임 시스템
3.3 컴퓨터 시스템의 구조
3.4 동시 하드웨어의 여러 수준
CHAPTER 4 동시성을 구현하는 재료
4.1 동시성 프로그래밍의 단계
4.2 프로세스
4.3 스레드
CHAPTER 5 프로세스 간 통신
5.1 다양한 통신 방식
5.2 스레드 풀 패턴
5.3 패스워드 크랙하기: 파트 2
PART II 동시성을 다루는 촉수의 종류: 멀티태스킹, 분해, 동기화
CHAPTER 6 멀티태스킹
6.1 CPU 중심과 입출력 중심
6.2 멀티태스킹이 필요한 이유
6.3 멀티태스킹: 조감도
6.4 멀티태스킹 환경
CHAPTER 7 작업 분해하기
7.1 의존 관계 분석하기
7.2 작업 분해
7.3 작업 분해: 파이프라인 패턴
7.4 데이터 분해
7.5 분해된 작업의 크기 결정하기
CHAPTER 8 동시성과 관련된 문제 해결하기: 경쟁 조건과 동기화
8.1 공유 자원
8.2 경쟁 조건
8.3 동기화
CHAPTER 9 동시성과 관련된 문제 해결하기: 교착 상태와 기아 상태
9.1 철학자들의 만찬 문제
9.2 데드락
9.3 라이브락
9.4 기아 상태
9.5 동기화 설계하기
9.6 그 외의 주제
PART III 비동기적으로 움직이는 문어들: 여러 판의 피자를 동시에 만들기
CHAPTER 10 논블로킹 I/O
10.1 분산 컴퓨팅의 세계
10.2 클라이언트-서버 모델
10.3 피자 주문 서비스
10.4 블로킹 I/O
10.5 논블로킹 I/O
CHAPTER 11 이벤트 기반 동시성
11.1 이벤트란?
11.2 콜백
11.3 이벤트 반복문
11.4 입출력 멀티플렉싱
11.5 이벤트 기반으로 구현된 피자 서버
11.6 리액터 패턴
11.7 메시지 전달 동기화하기
11.8 여러 가지 입출력 모델
CHAPTER 12 비동기 통신
12.1 비동기성이 필요한 이유
12.2 비동기 프로시저 호출
12.3 협동형 멀티태스킹
12.4 퓨처 객체
12.5 협동적 멀티태스킹을 적용한 피자 서버
12.6 비동기 피자 식당
12.7 결론: 비동기 모델
CHAPTER 13 실전: 동시적 애플리케이션 작성하기
13.1 그래서 동시성이 뭐였더라?
13.2 포스터 기법
13.3 행렬 곱 연산
13.4 분산 단어 세기
CHAPTER 1 동시성이란 무엇인가?
1.1 동시성의 중요성
1.2 동시성의 계층
1.3 이 책에서 배우게 될 내용
CHAPTER 2 순차 실행과 병렬 실행
2.1 돌아보기: 프로그램이란 무엇인가?
2.2 순차 실행
2.3 순차 컴퓨팅
2.4 병렬 실행
2.5 병렬 컴퓨팅을 위해 필요한 것
2.6 병렬 컴퓨팅
2.7 암달의 법칙
2.8 구스타프슨의 법칙
2.9 동시성 vs.
병렬성
CHAPTER 3 컴퓨터의 동작 원리
3.1 프로세서
3.2 런타임 시스템
3.3 컴퓨터 시스템의 구조
3.4 동시 하드웨어의 여러 수준
CHAPTER 4 동시성을 구현하는 재료
4.1 동시성 프로그래밍의 단계
4.2 프로세스
4.3 스레드
CHAPTER 5 프로세스 간 통신
5.1 다양한 통신 방식
5.2 스레드 풀 패턴
5.3 패스워드 크랙하기: 파트 2
PART II 동시성을 다루는 촉수의 종류: 멀티태스킹, 분해, 동기화
CHAPTER 6 멀티태스킹
6.1 CPU 중심과 입출력 중심
6.2 멀티태스킹이 필요한 이유
6.3 멀티태스킹: 조감도
6.4 멀티태스킹 환경
CHAPTER 7 작업 분해하기
7.1 의존 관계 분석하기
7.2 작업 분해
7.3 작업 분해: 파이프라인 패턴
7.4 데이터 분해
7.5 분해된 작업의 크기 결정하기
CHAPTER 8 동시성과 관련된 문제 해결하기: 경쟁 조건과 동기화
8.1 공유 자원
8.2 경쟁 조건
8.3 동기화
CHAPTER 9 동시성과 관련된 문제 해결하기: 교착 상태와 기아 상태
9.1 철학자들의 만찬 문제
9.2 데드락
9.3 라이브락
9.4 기아 상태
9.5 동기화 설계하기
9.6 그 외의 주제
PART III 비동기적으로 움직이는 문어들: 여러 판의 피자를 동시에 만들기
CHAPTER 10 논블로킹 I/O
10.1 분산 컴퓨팅의 세계
10.2 클라이언트-서버 모델
10.3 피자 주문 서비스
10.4 블로킹 I/O
10.5 논블로킹 I/O
CHAPTER 11 이벤트 기반 동시성
11.1 이벤트란?
11.2 콜백
11.3 이벤트 반복문
11.4 입출력 멀티플렉싱
11.5 이벤트 기반으로 구현된 피자 서버
11.6 리액터 패턴
11.7 메시지 전달 동기화하기
11.8 여러 가지 입출력 모델
CHAPTER 12 비동기 통신
12.1 비동기성이 필요한 이유
12.2 비동기 프로시저 호출
12.3 협동형 멀티태스킹
12.4 퓨처 객체
12.5 협동적 멀티태스킹을 적용한 피자 서버
12.6 비동기 피자 식당
12.7 결론: 비동기 모델
CHAPTER 13 실전: 동시적 애플리케이션 작성하기
13.1 그래서 동시성이 뭐였더라?
13.2 포스터 기법
13.3 행렬 곱 연산
13.4 분산 단어 세기
상세 이미지
책 속으로
필자 역시 이 매혹적인 거미줄에 걸려들었던 적이 있다.
이 거미줄에서 동시성과 비동기성이라는 단어를 처음 접했다.
마치 숨겨진 보물을 찾은 듯한 느낌이었다.
야생과도 같아 다루기 힘든 강력한 힘을 가지고 있고, 잘 길들이면 평범한 프로그램을 아주 강력한 프로그램으로 변모시킬 수 있다.
하지만 이 보물은 복잡성, 동시성 및 병렬성, 스레드, 프로세스, 멀티태스킹이나 코루틴처럼 기술적 풍경 여러 곳에 흩어진 다양한 퍼즐을 풀어야만 사용할 수 있다.
필자는 이런 개념들을 공부하면서 전체적인 큰 그림을 정리해서 보여줄 수 있는 도움말, 또는 가르침을 줄 수 있는 사람을 갈망했다.
하지만 이론과 실무, 그리고 각 프로그래밍 언어의 간극을 메워줄 수 있는 자료를 아직까지 찾지 못했고 이를 직접 쓰기로 마음먹었다.
이 책은 이러한 배경에서 탄생했다.
이 복잡한 미로 속에서 여러분이 가야 할 길을 비춰주는 길잡이가 될 것이다.
이 책은 모든 내용을 망라하는 참고 도서로는 적합지 않다.
오히려 다양한 이야기와 문화적 참고 사항을 엮어 재미있게 읽을 수 있는 책이다.
애초에는 이론적인 내용을 다룬 도움말의 형태로 기획했으나 다양한 이야기와 문화적 참고 사항(개수를 세어보기 바란다), 흥미로운 삽화를 넣은 지금과 같은 구성으로 바뀌었다.
필자의 만두와 피자에 대한 사랑을 드러내는 시시콜콜한 유머는 덤이다.
병렬성을 배우는 것이 꼭 지루할 필요는 없지 않은가?
이 책과 함께 동시성과 비동기성의 신비를 함께 풀어나가 보자.
동시성의 기초부터 시작해 파이썬의 멋진 기능인 async와 await를 사용하는 법까지 배우며, 실습은 파이썬을 위주로 다룬다.
파이썬을 유창하게 구사하지 못해도 괜찮다.
우리가 배울 개념과 기법은 특정 언어 구현에 국한되는 것이 아니다.
그럼에도 ‘왜 하필 파이썬이지?’라고 생각하는 독자가 있을 것이다.
파이썬은 표현력과 단순성의 균형을 절묘하게 갖춘 언어이기 때문이다.
덕분에 우리는 다른 요소에 방해받지 않고 동시성을 익히는 데 집중할 수 있다.
그리고 필자가 선호하는 언어이기도 하다.
이 책은 동시성 시스템을 더욱 깊이 이해하려는 숙련된 개발자와 동시성 이론에 관심 있는 초보자 모두에게 도움을 줄 것이다.
책을 통해 동시성의 비밀을 이해하는 것은 물론, 확장성 있고, 효율적이며, 회복력이 좋은 소프트웨어 시스템을 만들 수 있는 능력을 갖추자.
시간과 공간의 흐릿한 경계를 넘나들며 프로그램이 마치 문어처럼 춤을 추는 곳으로 여행을 떠날 시간이다.
잘못 들은 것이 아니다.
여러분이 아는 그 문어가 맞다.
문어는 깊은 바다 속에서 여덟 개의 촉수를 완벽히 조화롭게 사용하며 유영한다.
복잡하면서도 아름다운 동시성 시스템의 상징으로 더할 나위 없는 동물이다.
그럼, 여행을 시작하자.
이 거미줄에서 동시성과 비동기성이라는 단어를 처음 접했다.
마치 숨겨진 보물을 찾은 듯한 느낌이었다.
야생과도 같아 다루기 힘든 강력한 힘을 가지고 있고, 잘 길들이면 평범한 프로그램을 아주 강력한 프로그램으로 변모시킬 수 있다.
하지만 이 보물은 복잡성, 동시성 및 병렬성, 스레드, 프로세스, 멀티태스킹이나 코루틴처럼 기술적 풍경 여러 곳에 흩어진 다양한 퍼즐을 풀어야만 사용할 수 있다.
필자는 이런 개념들을 공부하면서 전체적인 큰 그림을 정리해서 보여줄 수 있는 도움말, 또는 가르침을 줄 수 있는 사람을 갈망했다.
하지만 이론과 실무, 그리고 각 프로그래밍 언어의 간극을 메워줄 수 있는 자료를 아직까지 찾지 못했고 이를 직접 쓰기로 마음먹었다.
이 책은 이러한 배경에서 탄생했다.
이 복잡한 미로 속에서 여러분이 가야 할 길을 비춰주는 길잡이가 될 것이다.
이 책은 모든 내용을 망라하는 참고 도서로는 적합지 않다.
오히려 다양한 이야기와 문화적 참고 사항을 엮어 재미있게 읽을 수 있는 책이다.
애초에는 이론적인 내용을 다룬 도움말의 형태로 기획했으나 다양한 이야기와 문화적 참고 사항(개수를 세어보기 바란다), 흥미로운 삽화를 넣은 지금과 같은 구성으로 바뀌었다.
필자의 만두와 피자에 대한 사랑을 드러내는 시시콜콜한 유머는 덤이다.
병렬성을 배우는 것이 꼭 지루할 필요는 없지 않은가?
이 책과 함께 동시성과 비동기성의 신비를 함께 풀어나가 보자.
동시성의 기초부터 시작해 파이썬의 멋진 기능인 async와 await를 사용하는 법까지 배우며, 실습은 파이썬을 위주로 다룬다.
파이썬을 유창하게 구사하지 못해도 괜찮다.
우리가 배울 개념과 기법은 특정 언어 구현에 국한되는 것이 아니다.
그럼에도 ‘왜 하필 파이썬이지?’라고 생각하는 독자가 있을 것이다.
파이썬은 표현력과 단순성의 균형을 절묘하게 갖춘 언어이기 때문이다.
덕분에 우리는 다른 요소에 방해받지 않고 동시성을 익히는 데 집중할 수 있다.
그리고 필자가 선호하는 언어이기도 하다.
이 책은 동시성 시스템을 더욱 깊이 이해하려는 숙련된 개발자와 동시성 이론에 관심 있는 초보자 모두에게 도움을 줄 것이다.
책을 통해 동시성의 비밀을 이해하는 것은 물론, 확장성 있고, 효율적이며, 회복력이 좋은 소프트웨어 시스템을 만들 수 있는 능력을 갖추자.
시간과 공간의 흐릿한 경계를 넘나들며 프로그램이 마치 문어처럼 춤을 추는 곳으로 여행을 떠날 시간이다.
잘못 들은 것이 아니다.
여러분이 아는 그 문어가 맞다.
문어는 깊은 바다 속에서 여덟 개의 촉수를 완벽히 조화롭게 사용하며 유영한다.
복잡하면서도 아름다운 동시성 시스템의 상징으로 더할 나위 없는 동물이다.
그럼, 여행을 시작하자.
--- 「지은이의 말」 중에서
출판사 리뷰
일상 속 예제와 흥미로운 일러스트로
어려운 동시성을 쉽게 배운다!
동시성은 소프트웨어 엔지니어링에서 반드시 필요한 요소로, 컴퓨터 프로그램을 독립적으로 실행할 수 있는 작업으로 분리해 효율적으로 실행하는 접근 방식이다.
복잡성, 병렬성, 스레드, 프로세스, 멀티태스킹이나 코루틴처럼 다양한 기술을 알고 잘 접목시켜야만 동시성의 큰 그림을 그릴 수 있다.
이 책은 동시성이 처음인 독자도 배울 수 있도록 실제 생활에서 볼 수 있는 예제로 동시성의 개념과 원칙을 설명한다.
전문 용어를 사용한 딱딱하고 지루한 설명 대신 이해할 수 있는 단어로 명확하고 쉽게 설명하며, 다양한 이야기로 동시성을 하나하나 풀어나간다.
더불어 복잡하고 어려운 개념들은 일러스트와 그림을 이용해 쉽게 이해할 수 있게 도와준다.
동시성에 대해 전체적인 그림을 어떻게 그려야 할지, 앞으로 어떻게 공부하면 좋을지에 대한 가이드를 제공하며, 직접 실습할 수 있도록 파이썬 예제도 제공한다.
동시성 개념을 깊이 배우고 싶은 주니어 개발자와 동시성 프로그래밍을 더 탄탄히 다지고 싶은 시니어 개발자 모두에게 강력히 추천한다.
이 책에서 다루는 내용
● 동시성 프로그래밍의 작성과 실행
● 성능, 확장성, 회복성을 위한 패턴
● 올바른 하드웨어 선택하기
● 비동기 통신
● 논블로킹 기반 동시성과 이벤트 기반 동시성
어려운 동시성을 쉽게 배운다!
동시성은 소프트웨어 엔지니어링에서 반드시 필요한 요소로, 컴퓨터 프로그램을 독립적으로 실행할 수 있는 작업으로 분리해 효율적으로 실행하는 접근 방식이다.
복잡성, 병렬성, 스레드, 프로세스, 멀티태스킹이나 코루틴처럼 다양한 기술을 알고 잘 접목시켜야만 동시성의 큰 그림을 그릴 수 있다.
이 책은 동시성이 처음인 독자도 배울 수 있도록 실제 생활에서 볼 수 있는 예제로 동시성의 개념과 원칙을 설명한다.
전문 용어를 사용한 딱딱하고 지루한 설명 대신 이해할 수 있는 단어로 명확하고 쉽게 설명하며, 다양한 이야기로 동시성을 하나하나 풀어나간다.
더불어 복잡하고 어려운 개념들은 일러스트와 그림을 이용해 쉽게 이해할 수 있게 도와준다.
동시성에 대해 전체적인 그림을 어떻게 그려야 할지, 앞으로 어떻게 공부하면 좋을지에 대한 가이드를 제공하며, 직접 실습할 수 있도록 파이썬 예제도 제공한다.
동시성 개념을 깊이 배우고 싶은 주니어 개발자와 동시성 프로그래밍을 더 탄탄히 다지고 싶은 시니어 개발자 모두에게 강력히 추천한다.
이 책에서 다루는 내용
● 동시성 프로그래밍의 작성과 실행
● 성능, 확장성, 회복성을 위한 패턴
● 올바른 하드웨어 선택하기
● 비동기 통신
● 논블로킹 기반 동시성과 이벤트 기반 동시성
GOODS SPECIFICS
- 발행일 : 2024년 11월 13일
- 쪽수, 무게, 크기 : 344쪽 | 648g | 183*235*14mm
- ISBN13 : 9791140711741
You may also like
카테고리
한국어
한국어