계층화 구조 ( Layered Architcture)

presentation, application, domain, infrastructure 계층을 사용하여 폴더를 기능별로 분리하는 것

이점

- 각 계층의 책임을 명확하게 분리 → 각 시스템이 어떻게 동작하는지 이해하기 쉽다.

- 각 계층간의 의존도가 적다 → 변경 사항이 다른 계층에 미치는 영향을 최소화할 수 있다.

 

각 계층의 역할

Presentation Layer

- 사용자(웹 브라우저)로 부터 요청(Request)을 받아  application layer 에 전달하고 application layer에서 처리된 결과를 받아 사용자에게 응답(Response)

- 외부로부터의 요청을 받고, 적절한 응답을 구성

- 사용자 인터페이스와 상호작용하는 부분으로, 컨트롤러를 포함

 

Application Layer

- 도메인 레이어를 사용하여 사용자의 요청을 처리하고 응답을 구성

- 애플리케이션 로직(흐름 제어, 트랜잭션 관리 등)을 담당

- DTO(Data Transfer Objects), 인터페이스 정의, 서비스 구현 등을 포함

 

Domain Layer

- 애플리케이션의 비즈니스 로직과 도메인 모델을 포함

- 엔티티(Entity)와 값 객체(Value Object)를 사용해 핵심 비즈니스 데이터를 모델링하고 도메인 서비스, 도메인 이벤트 등을 포함

- 비즈니스 규칙과 불변성을 유지

- 다른 계층(application, infrastructure)과 독립적으로 설계

Infrastructure Layer

- 데이터베이스, 파일 시스템, 네트워크 서비스 등의 외부 시스템과의 통신을 담당

- 구현기술에 대해 다루는 영역 : 레포지토리 구현, 인프라 스트럭쳐 서비스를 포함 

  * 인프라 스트럭처 서비스 :

      외부 API 통합 : 소셜 미디어 API, 지불 게이트웨이, 지리적 위치 서비스 등 외부 시스템과의 연동

      메세징 서비스 : 이메일 발송, SMS 발송 등

      데이터베이스 엑세스 : ORM 설정, 데이터 베이스 연결

 

 

 

 

참고자료

https://hesh1232.tistory.com/153

+ Recent posts