[노개북 챌린지] 실용주의 프로그래머 6

김발자·2022년 4월 19일
0

실용주의 프로그래머 6장 < 동시성 >

Today reading range

- 오늘 읽은 범위


실용주의 프로그래머 6장 < 동시성 >

Impressive content

- 인상 깊었던 내용


'동시성concurrency' 이란 둘 이상의 코드 조각이 실행될 때 동시에 실행 중인 것처럼 행동하는 것이다. - 241p.

'병렬성parallenlism' 이란 실제로 동시에 실행되는 것이다.

여러분의 애플리케이션을 실제 세상에서 다루기 원한다면 동시성은 필수이다. 세상은 비동기적이기 때문이다. -242p.

Topic33. 시간적 결합 깨트리기

우리는 동시에 일어나도 되는 게 뭐고, 반드시 순서대로 일어나야하는 건 어떤 것인지 찾아내길 원한다. '활동 다이어그램' 같은 표기법을 사용해서 작업 흐름을 기록하는 것이 한 방법이다. -244p.

활동 다이어그램을 사용하면 동시에 수행할 수 있는데도 아직 동시에 하고있지 않은 활동들을 찾아내서 병렬성을 극대화 할 수 있다. -245p.

동시성은 소프트웨어 동작 방식이고, 병렬성은 하드웨어가 하는 것이다. -247p.

Topic34. 공유 상태는 틀린 상태

Tip 57 공유상태는 틀린 상태다.

어느 프로세스도 자신이 보는 메모리가 일관되어 있음을 보장할 수 없다는 점이다. -250p.

세마포어semaphore 는 단순히 한 번에 한 사람이 가질 수 있는 무언가이다. -251p.

수정 가능한 리소스를 공유하는 애플리케이션 코드 어디에서나 동시성 문제가 발생할 수 있다. -256p.

Tip 58 불규칙한 실패는 동시성 문제인 경우가 많다.

Topic35. 액터와 프로세스

'액터' 는 자신만의 비공개 지역 상태state를 가진 독립적인 가상 처리 장치다. -259p.
'프로세스' 는 일반적인 가상 처리기로, 보통 운영 체제가 동시성을 지원하기 위하여 구현한다.

자바스크립트와 Node.js 용 액터 라이브러리인 Nact을 이용하여 구현해보자. (해보자?)

Topic36. 칠판

어떤 규칙에서 나온 것이든 그 결과를 다시 칠판에 올려서 다른 규칙들이 발동되도록 하면 된다. - 270p.

특정한 비즈니스 작업 처리를 시작할 때 고유한 '추적 아이디trace id'를 만들어서 붙이는 것이다. 그리고 해당 작업에 관여하는 모든 액터로 아이디를 전파하면, 나중에 로그 파일을 뒤져서 어떤 일이 일어났는지 재구성해 볼 수 있을 것이다.

Thoughts I had while reading the book

- 오늘 책을 읽으면서...


동시성에 대해 읽으면서 JS 비동기 처리 문제를 이야기에 대입해 볼 수 있지 않을까 생각했다. 현재 프로젝트에서 비동기로 데이터를 받아오는 중에는 버튼 클릭이 안되는 문제가 발생했기 때문이다...어음 사실 구체적인 해결법은 생각하지 못했지만 작업하면서 마음 한켠에 담아두고 고민해봐야겠다.

문제 24번

답: 그룹 관리 시스템

데이터가 복잡하고 전달되는 시간도 다양하기때문에 칠판 시스템에 가장 적합하다고 생각한다.

Things you're curious about, things you don't understand.

- 궁금한 내용, 이해되지 않았던 내용


전체적으로 완벽히 이해가 되지는 않았다..어렴풋이 개념만 잡았을 뿐..

profile
매일 글적글적 거리고 싶은 김발자

0개의 댓글

관련 채용 정보