먼저 아키텍처란 무엇일까? 위키피디아에서는 아래와 같이 정의하고 있다.
소프트웨어 구성요소들 사이에서 유기적 관계를 표현하고 소프트웨어의 설계와 업그레이드를 통제하는 지침과 원칙 - wikipedia
쉽게 말하자면 소프트웨어를 설계하는 방법이며 지켜야 하는 원칙을 의미한다.
Entity
원의 가장 안쪽에 위치 Entity는 그림에서 알 수 있듯이 규칙이 변경될 가능성이 가장 적고, 의존성이 가장 낮다.
Use Cases
유스케이스는 데이터를 알맞게 변경하고 가공하는 비즈니스 로직을 결정한다. 여기서 데이터는 상위의 Entity를 의미한다. 이는 Entity 데이터를 참조해서, 사용자의 요청에 맞게 가공하고 출력하는 역할을 한다는것을 의미한다.
Adapter
어댑터는 도메인과 인터페이스 사이의 번역기의 역할을 수행한다. 예를 들면 GUI로부터 입력 값을 받아 Use cases와 Entity에게 편리한 형태로 데이터 형식을 변환하여 보내주고, 반대로 Use cases와 Entity로부터 결과 값을 받아와 GUI에 표시해주는 역할을 한다
Infrastructure
모든 I/O components(UI, DB, Frameworks, Devices)가 있는 영역이다. 이는 변화 가능성이 매우 높기 때문에 domain과 확실하게 분리되어 있다.
이는 다음과 같은 특징을 갖는다.
https://wlgusdn700.tistory.com/100
https://dataportal.kr/74
https://joonfluence.tistory.com/322#recentComments![](https://velog.velcdn.com/images/saint6839/post/f6d2b9b2-5c59-4c68-b6c7-1cf160486a63/image.png)