본문 바로가기

ApplicationArchitecture (AA)

(1) Hexagonal Architecture - 설계

# Hexagonal Architecture (또는 Ports and Adapters Architecture) 패턴

Hexagonal  architecture 패키지의 샘플 코드에 대해서 알아보자.

예전부터 정리를 하자하자하자 했었는데 시간이 없어서 못했었다.

오늘 시간이 조금 생긴 관계로 샘플 코드를 만들고 정리를 해보면 아래와 같다.

일단 빈이란? 아래글을 참고.

빈(Bean)은 스프링 컨테이너에 의해 관리되는 재사용 가능한 소프트웨어 컴포넌트이다. 
즉, 스프링 컨테이너가 관리하는 자바 객체를 뜻하며, 하나 이상의 빈(Bean)을 관리한다. 
빈은 인스턴스화된 객체를 의미하며, 스프링 컨테이너에 등록된 객체를 스프링 빈이라고 한다.

그리고 인스턴스 란?

인스턴스는 주로 아래처럼 된것을 인스턴스 라고 한다.

// 인스턴스
cat = new Animal(); // cat은 Animal 클래스의 '인스턴스'(객체를 메모리에 할당)
dog = new Animal(); // dog은 Animal 클래스의 '인스턴스'(객체를 메모리에 할당)

 

# Hexagonal Architecture 구성 해보기

일단. DDD 책을 보기에는 너무 시간이 오래 걸릴것 같아서 인터넷에 잘 설명되어 있는 자료를 참고하여 아키텍처를 구성해 봤다.

(이상해도 이해바람.)

구성 예시는 아래와 같다.

https://vaadin.com/blog/ddd-part-3-domain-driven-design-and-the-hexagonal-architecture

 

DDD Part 3: Domain-Driven Design and the Hexagonal Architecture | Vaadin

Learn how to turn a domain model into working software using a hexagonal architecture in the third part of the DDD (Domain-Driven Design) course.

vaadin.com

위의 사이트를 참고 하였으며, 아키텍처는 위에서 설명하고 있는 DDD 아키텍처와 비슷하게 구성을 하였다.

- 위의 코드를 보면 한 가운데 Domain Model이 존재한다. 나는 이 Domain Model을 Domain Layer라고 지칭 하였다.

Domain Model 밖에는 Application Service라고 보인다. 나는 해당 Application Service 부분을 Application Layer라고 지칭 하였다. 마지막으로 Adapter 부분을 나는 Adapter Layer라고 지칭 하였다. 그외 Infrastructure, DTO, Repository 등 부분을 따로 구성 하였다.

- 간단하게 코드 패키지 리스트를 보면 아래와 같다.

(코드는 나중에 올릴거긴 한데, 개발새발 짜서... 정리가 많이 아주많이 필요함...)

 

코드 구성 및 구현 부분은 2편에 계속...

'ApplicationArchitecture (AA)' 카테고리의 다른 글

ApplicationArchitecture 그려보기  (0) 2024.04.23
(2) Hexagonal Architecture - 구현  (0) 2024.04.16