쏙쏙 들어오는 함수형 코딩 Ch02
함수형 피자 가게
앞으로 살펴볼 함수형 개념 대략적으로 살펴보기
Part1 - 변경 가능성에 따라 코드 나누기
액션, 계산, 데이터 구분하기
계층화 설계 stratified design
자주 바뀌는 것 - 자주 바뀌지 않는 것에 따라 코드 나누기
- 자주 바뀌는 것
- 이번 주 메뉴, 이번주 사야 할 것
- => 비즈니스 규칙
- 바뀔 수도 있지만 자주 바뀌지 않는 것
- 조리법 순서, 재료 목록에 대한 동작
- => 도메인 규칙
- 잘 바뀌지 않는 것
JavaScript
언어 자체- => 기술 스택
- 각 계층은 그 아래에 있는 계층을 기반으로 만들어짐
Part2 - 일급 추상
타임라인 다이어그램
- 액션이 시간 순서에 따라 어떻게 실행되는지 보여줌
- 분산 시스템을 도입한다면?
- 반죽 만들기, 치즈 갈기, 소스 만들기 작업을 나눠서 하게 되면 타임라인의 실행 순서가 섞이게 됨
- 치즈 갈기 작업이 끝나지 않았는데 소스 만드는 로봇은 치즈를 뿌려야 함
- 서로 다른 타임라인이 서로 다른 순서로 실행되는 문제
- 분산 시스템의 어려움
- 기본적으로 타임라인은 서로 순서를 맞추지 않음
- 액션이 실행되는 시간은 중요하지 않고, 각각의 타임라인은 다른 타임라인 순서와 관계없이 진행되어야 함
- 드물게 타이밍이 어긋나는 경우가 발생, 특히 주문이 많이 들어오면 더 많이 발생
- 다만 타임라인 다이어그램으로 시스템의 문제를 알 수 있음
- 반죽 만들기, 치즈 갈기, 소스 만들기 작업을 나눠서 하게 되면 타임라인의 실행 순서가 섞이게 됨
타임라인 커팅 cutting
여러 타임라인이 동시에 진행될 때 서로 순서를 맞추는 방법
- 고차 동작 high-order operation 으로 구현
- 각 타임라인이 독립적으로 동작하고, 특정 작업이 완료되면 다른 타임라인이 끝나기 기다림
#develop #fp