28. 역할, 의존성의 분리를 통해
시스템의 분리, 통합을 유연하게 만들어 줄 수 있는
좋은 아키텍처를 만들 수 있기 때문
29. “좋은 아키텍처는 시스템이 모노리틱 구조로 태어나서 단일 파
일로 배포되더라도, 이후에는 독립적으로 배포 가능한 단위들
의 집합으로 성장하고, 또 독립적인 서비스나 마이크로서비스 수
준까지 성장할 수 있도록 만들어져야한다. 또한 좋은 아키텍처라
면 나중에 상황이 바뀌었을 때 이 진행 방향을 거꾸로 돌려 원
래 형태인 모노리틱 구조로 되돌릴 수도 있어야 한다”
- 클린 아키텍처
180. 독립 모듈
내부 모듈 도메인 모듈
어플리케이션
공통 모듈
5. 어플리케이션 모듈 계층
181. 독립 모듈
내부 모듈 도메인 모듈
어플리케이션
공통 모듈
5. 어플리케이션 모듈 계층
client-a client-b client-c client-d
182. 독립 모듈
내부 모듈 도메인 모듈
어플리케이션
공통 모듈
5. 어플리케이션 모듈 계층
client-a client-b client-c client-d
domain-
dynamo
domain-
redis
domain-
service
domain-
redis
domain-
dynamo
183. 독립 모듈
내부 모듈 도메인 모듈
어플리케이션
공통 모듈
5. 어플리케이션 모듈 계층
client-a client-b client-c client-d
domain-
dynamo
domain-
redis
domain-
service
data-
dynamo
domain-
redis
domain-
dynamo
184. 독립 모듈
내부 모듈 도메인 모듈
어플리케이션
공통 모듈
5. 어플리케이션 모듈 계층
client-a client-b client-c client-d
domain-
dynamo
domain-
redis
domain-
service
data-
dynamo
core
domain-
redis
domain-
dynamo
185. 독립 모듈
내부 모듈 도메인 모듈
어플리케이션
공통 모듈
5. 어플리케이션 모듈 계층
client-a client-b client-c client-d
domain-
dynamo
domain-
redis
domain-
service
data-
dynamo
core
apiworker admin
domain-
redis
domain-
dynamo
186. 독립 모듈
내부 모듈 도메인 모듈
어플리케이션
공통 모듈
5. 어플리케이션 모듈 계층
client-a client-b client-c client-d
domain-
dynamo
domain-
redis
domain-
service
data-
dynamo
core
apiworker admin
domain-
redis
domain-
dynamo
187. 독립 모듈
내부 모듈 도메인 모듈
어플리케이션
공통 모듈
5. 어플리케이션 모듈 계층
client-a client-b client-c client-d
domain-
redis
domain-
dynamo
domain-
service
data-
dynamo
core
apiworker admin
188. 독립 모듈
내부 모듈 도메인 모듈
어플리케이션
공통 모듈
5. 어플리케이션 모듈 계층
client-a client-b client-c client-d
domain-
redis
domain-
dynamo
domain-
service
data-
dynamo
core
apiworker admin
198. -각 모듈이 갖는 책임과 역할이 명확하여 리펙토링, 기능의 변경의 영향 범위를 파악하기 용이
-경계가 명확해짐으로써 기능의 제공 정도를 예측 가능하여 스파게티 코드 발생 가능성 저하
-역할과 책임에 대한 애매함이 없어짐으로써 어떤 모듈에서 어느정도까지를 개발되야할지 명확
independently available
in system available system domain
application
system core
AbService AcService
app-b-api app-c-api
Shop
RestClient
shop-client
SqsEventPublisher
a-event-publisher
domain-a
ARepository
AService
A
core
OperationTimeUtils
yaml-impoter
PropertiesEnvironment
PostProcessor
241. “좋은 아키텍처는 시스템이 모노리틱 구조로 태어나서 단일 파
일로 배포되더라도, 이후에는 독립적으로 배포 가능한 단위들
의 집합으로 성장하고, 또 독립적인 서비스나 마이크로서비스 수
준까지 성장할 수 있도록 만들어져야한다. 또한 좋은 아키텍처라
면 나중에 상황이 바뀌었을 때 이 진행 방향을 거꾸로 돌려 원
래 형태인 모노리틱 구조로 되돌릴 수도 있어야 한다”
- 클린 아키텍처