파트 1: 액션과 계산, 데이터

변경 가능성에 따라 코드 나누기 > 계층형 설계 stratified design

자주 바뀌는 것부터 자주 바뀌지 않는 것까지 비즈니스 규칙 > 도메인 규칙 > 기술 스택 순으로 계층화한다.

Untitled

파트 2: 일급 추상

타임라인 다이어그램

로봇 한 대가 피자를 만들기 위한 액션들. 타임라인 다이어그램을 사용하면 액션이 시간 순서에 따라 어떻게 실행되는지 볼 수 있다.

Untitled

분산 시스템을 타임라인으로 시각화하기

만약 하나의 로봇이 차례대로 피자를 만드는 것이 아니라 반죽 만들기, 소스 만들기, 치즈 갈기 작업으로 나누어 로봇 세 대가 동시에 일을 하면 더 빨리 만들 수 있을 것이다. 이렇게 여러 대의 로봇이 함께 일을 하므로 이것은 분산 시스템을 의미한다.

분산 시스템에서 독립된 액션의 실행 순서는 어떻게 될지 모른다. 순서가 섞여 누가 먼저 끝나는지 알 수 없기 때문이다. 타임라인 다이어그램을 통해서 문제를 파악할 수는 있지만, 이렇듯 실행 순서가 섞이는 것은 어떻게 할 수 없다.

Untitled

각각의 타임라인은 다른 순서로 실행됩니다

기본적으로 타임라인은 서로 순서를 맞출 수 있는 기능이 없다. 그러므로 서로 다른 타임라인에 있는 액션 간 실행 순서는 보장할 수 없다. 타임라인을 서로 맞추지 않은 분산 시스템은 예측 불가능한 순서로 실행된다.

어려운 경험을 통해 분산 시스템에 대해 배운 것

순차적인 프로그램을 분산 시스템으로 바꾸는 것은 어렵다. 프로그램이 올바른 순서로 동작하려면 액션에 집중할 필요가 있다. 시간에 의존적이기 때문이다.