-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
715d802
commit 20540d7
Showing
1 changed file
with
41 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
> 계층형 설계를 통한 소프트웨어 구조 | ||
> 타임라인을 통한 문제 해결 | ||
- 액션: 호출 횟수와 시점에 의존 | ||
- 계산: 어떤것을 결정, 계획 및 부수 효과가 없는것 | ||
- 데이터: 결제정보 재고, 피자 조리법 | ||
|
||
### 변경 가능성에 따라 코드 나누기 (계층형 설계) | ||
|
||
- 비즈니스 | ||
- 이번 주 특별 조리법, 재료 구입 | ||
- 도메인 | ||
- 조리법, 재료 목록 | ||
- 기술 | ||
- 자바스크립트 | ||
|
||
비즈니스 → 도메인 → 기술 순으로 기술이 가장 밑바닥에 존재하는 형태 | ||
|
||
아래일 수록 잘 안바뀌며, 위일 수록 의존성이 없음. | ||
|
||
그리고 각각의 레이어가 존재(주방, 창고 등) | ||
|
||
계층형 설계는 의존성에 대한 관리를할 수 있음으로 유지 보수를 더 잘할 수 있게됨. | ||
|
||
### 타임라인 다이어그램 | ||
|
||
시간순으로 액션을 나열한 것. (일급 함수를 통해 작성) | ||
|
||
나열을 통해 병렬 처리할 수 있는 것들을 분리 → 분산 시스템으로 개선 가능 | ||
|
||
- 병렬 처리에 대한 문제를 파악하고 개선할 수 있지만 | ||
- 서로 다른 타임라인의 액션간의 실행 순서는 보장할 수 없음 | ||
|
||
### 타임라인 커팅 | ||
|
||
서로 다른 타임라인의 액션간의 실행 순서는 보장을 위함. | ||
|
||
`고차 동작`으로 구현됨. 각각의 독립적인 작업이 완료되면 다른 작업이 끝나기를 기다린 후 나머지 작업을 진행. ( `Promise.all` `Promise.allSettled` ) | ||
|
||
- 커팅으로 잘려진 작은 단위로 시간 관계없는 타임라인 파악가능 | ||
- 타임라인 커팅으로 서로 다른 작업의 시간적 관계를 파악가능 |