실용주의 프로그래머 Topic 33

Topic 33 시간적 결합 깨트리기

데이비드 토머스, 앤드류 헌트

Alt text

느낌표 ! (인상 깊은 문장 | 문맥)

시간에는 우리가 신경 써야 할 측면이 두 가지 있는데, 동시성(동시에 일어나는 일들)과 순서(시간의 흐름 속에서 일들의 상대적인 위치)다. 우리는 보통 프로그래밍을할 때 두 측면 모두 특별히 신경 쓰지 않는다. 자리에 앉아 아키텍처를 설계하거나 프로그램을 짜기 시작할 때는 보통 직선적 사고를 하기 마련이다.

p.243-244

병렬 프로그래밍은 골치 아픈 존재라고 생각하기 쉽지만 필연적이다. 그러기에 오히려 더 잘 사용해야한다.

똑은 딱보다 먼저 일어나야 한다.

이러한 접근 방법은 그다지 유연하지 않고 현실과도 동떨어져 있다.

p.244

똑딱이라고 믿고 싶지만 현실은 그렇지 않기 때문에 현실과 동 떨어진 믿음을 고집해서는 안될 것 같다.

동시성 찾기

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

p.244

활동 다이어그램(activity diagram) 예제


실 책에서는 피나 콜라다 칵테일 제조를 예제로 활동 다이어그램으로 나타내고 설명하고 있지만 실제로 활동 다어이그램을 만들어 이해를 돕기 위해서 필자의 경우는 드립 커피 추출로 각색해서 만들었다.


Alt text


Alt text

순차적으로 프로그래밍을 한다면 1~14 까지 순서대로 실행해도 결과 값 자체는 문제가 없다. 그렇지만 4 가열을 누른다의 경우 완료되기까지 3분 가량을 기다려야한다. 반드시 가열이 완료 되어야 13 커피를 추출한다를 실행시킬 수 있지만 다른 독립적인 활동 즉 1, 5, 8, 9 를 동시에 실행시킬 수 있다.

위와 같은 다이어그램으로 프로그래밍을 한다면 유연성과 작업 흐름이 자연스러워 우아한 결과가 나오지 않을까 싶다.

Topic 33 느낌

Topic 33 에서는 현실은 병렬적이니 순차적인 사고에서 병렬적인 사고로 바꾸도록 안내하고있다.


실용주의 프로그래머 6장 동시성 서론

6장 동시성 서론

실용주의 프로그래머 Topic 34

Topic 34 공유 상태는 틀린 상태

NCloud LB & SourcePipeline 구축하기
tech collection 서비스 성능 개선하기
Selenium 복권 구매 자동화 만들어보기
디자인 패턴
책 리뷰
블로그 챌린지