Loading the catalog…
Loading the catalog…
헥사고날 아키텍처(Hexagonal Architecture)란? - 백엔드 아키텍처 구조 중 하나 - 비즈니스 로직을 외부 기술과 분리해서, DB나 외부 API 같은 인프라가 변경되어도 핵심 로직의 영향을 최소화하고 테스트하기 쉽게 만드는 구조 비즈니스 로직과 분리 - Port : 비즈니스 로직(service)이 외부와 통신하기 위한 인터페이스 - Adaptor : 그 인터페이스를 실제 기술로 구현하는 것 #3-layer 아키텍처 #헥사고날 아키텍처 Controller (Adapter) Controller ↓ Input Port ↓ ↓ Service ┌─────────────┐ │ Service │ ↓ └─────────────┘ Repository ↓ Output Port ↓ ↓ DB DB (Adapter) // 3-layer 아키텍처 // OrderService @Service public class OrderService { private final OrderRepository repository; // 레포지토리에 의존적 public void order() { // 주문 로직 repository.save(...); } } // 헥사고날 아키텍처 // OrderService @Service public class OrderService { private final OrderRepositoryPort orderRepositoryPort; // 포트에 의존적 public void order() { // 주문 로직 orderRepositoryPort.save(...); } } // OrderRepositoryPort public interface OrderRepositoryPort { void save(Order order); } // OrderRepositoryAdapter @Repository public class OrderRepositoryAdapter implements OrderRepositoryPort { private final OrderJpaRepository orderJpaRepository; @Override public void save(Order order) { OrderEntity entity = new OrderEntity( order.getUserId(), order.getPrice() ); orderJpaRepository.save(entity); } } port 와 adaptor 를 사용해 비즈니스 로직과 DB, 외부 API, 프레임워크 같은 기술적인 부분으로부터 분리 헥사고날 아키텍처의 장점 기술 변경에 유리 : adaptor 만 변경하는 방식으로 쉽게 변경 DB, 외부 API 등 테스트하기 쉬움 : 실제 DB 없이 fakeRepository 를 넣어 비즈니스 로직을 테스트 가능 헥사고날 아키텍처가 유리한 프로젝트 규모가 큰 프로젝트 오래 운영할 프로젝트 : 기능이 계속 추가될 수록 변경사항이 많아질 가능성이 크다. 외부 시스템이 많은 프로젝트 : 외부 시스템이 많을수록 Adapter/Port로 분리하는 효과가 커짐. 프로젝트의 복잡도에 맞춰 아키텍처를 잘 골라 사용할 수 있어야 한다.
What RADAR observed and classified to build this opportunity. It is what the source published, not a verification that the offer is still active.
[Architecture] 헥사고날 아키텍처(Hexagonal Architecture). 헥사고날 아키텍처(Hexagonal Architecture)란? - 백엔드 아키텍처 구조 중 하나 - 비즈니스 로직을 외부 기술과 분리해서, DB나 외부 API 같은 인프라가 변경되어도 핵심 로직의 영향을 최소화하고 테스트하기 쉽게 만드는 구조 비즈니스 로직과 분리 - Port : 비즈니스 로직(service)이 외부와 통신하기 위한 인터페이스 - Adaptor : 그 인터페이스를 실제 기술로 구현하는 것 #3-layer 아키텍처 #헥사고날 아키텍처 Controller (Adapter) Controller ↓ Input Port ↓ ↓ Service ┌─────────────┐ │ Service │ ↓…