ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ Hexagonal Architecture ] 헥사고날 아키텍처 이해하기
    공부하기/아키텍처 2023. 2. 16. 19:35

    헥사고날(Hexagonal) 아키텍처는 소프트웨어 디자인 패턴 중 하나로, 소프트웨어 시스템을 구성하는 다양한 컴포넌트들을 격리시키는 것을 목적으로 합니다. 이 아키텍처는 포트와 어댑터(Port and Adapter) 아키텍처로도 알려져 있습니다.

     

    헥사고날 아키텍처의 핵심 개념은 "포트(Port)"와 "어댑터(Adapter)"입니다.

    • 포트: 시스템 외부와의 인터페이스를 정의
    • 어댑터: 포트를 구현

    포트는 시스템의 기능을 외부에 노출하고, 어댑터는 그 기능을 구현합니다.

    헥사고날 아키텍처는 이러한 포트와 어댑터를 중심으로, 비즈니스 로직과 외부 시스템을 분리합니다. 이로 인해 시스템은 더욱

    모듈화되고, 유연성과 유지보수성이 높아집니다. 또한, 외부 시스템의 변경에 대한 영향을 최소화할 수 있습니다.

     

    아키텍처 그림으로 보기

    간단하게 그린 아키텍처

    • in bound port : 외부 영역이 내부 영역을 사용하기 위해 노출된 포트
    • out bound port : 내부 영역이 외부 영역을 사용하기 위한 포트

     

    유저 로그인 유스케이스 예제

    • 컨트롤러는 AuthService를 의존하지 않고 AuthService의 인터페이스( in bound port )를 의존합니다.
    • AuthServiceImpl는 Users 인터페이스를 의존하여 구현체인 UserRepository에 접근합니다.

     

    헥사고날 아키텍처의 장점

    1. 유연성: 외부 시스템과의 결합을 낮추고 비즈니스 로직을 중심으로 구현하기 때문에, 시스템 구조가 유연해집니다. 새로운 기능을 추가하거나 변경할 때, 다른 부분에 영향을 덜 주며, 확장성이 높아집니다.
    2. 테스트 용이성: 포트와 어댑터가 분리되어 있어서, 테스트하기 쉽습니다. 단위 테스트, 통합 테스트, 시스템 테스트 등을 쉽게 수행할 수 있습니다.
    3. 유지보수성: 비즈니스 로직과 외부 시스템이 분리되어 있으므로, 시스템의 유지보수가 용이합니다. 예를 들어, 외부 시스템의 변경에 따른 영향을 최소화하고, 유지보수 비용을 낮출 수 있습니다.
    4. 모듈화: 포트와 어댑터로 시스템을 모듈화하여, 코드의 재사용성을 높일 수 있습니다.

    헥사고날 아키텍처 단점

    1. 복잡성: 포트와 어댑터로 시스템을 분리하는 것은 설계 복잡성을 증가시킬 수 있습니다.
    2. 개발 시간: 기능을 구현하기 위해 포트와 어댑터를 설계하고 구현해야 하므로, 개발 시간이 늘어날 수 있습니다.
    3. 러닝 커브: 개발자들이 포트와 어댑터의 개념을 익혀야 하므로, 러닝 커브가 존재할 수 있습니다.
    4. 오버 엔지니어링: 일부 경우에는 헥사고날 아키텍처를 적용하기에 오버 엔지니어링일 수 있습니다. 따라서, 프로젝트의 규모와 복잡도에 따라 적절하게 적용할 필요가 있습니다.
Designed by Tistory.