주식 관리 프로젝트를 진행하면서, 현재 내가 하고 있는 프로젝트에 어떤 아키텍처가 더 적합할지 고민하게 되었다.
레이어드 아키텍처
개념
애플리케이션을 역할별 계층으로 나누는 구조
구조
Controller→Service →Repository →DB
특징
- 위에서 아래로 흐르는 구조
- 역할이 명확하고 이해하기 쉬움
- 빠른 개발에 적합
한계
- Service가 DB, 외부 API에 직접 의존
- 변경 시 영향 범위가 큼
- 테스트가 어려워질 수 있음
헥사고날 아키텍처
개념
비즈니스 로직을 중심에 두고 외부 요소를 분리하는 구조
구조
Controller →InPort →Service →OutPort →Adapter →DB
핵심 개념
Core
- 비즈니스 로직이 위치하는 중심영역
- DB, 외부 API등 기술 요소를 알고 있지 않음
Port
InPort
- 외부 요청이 Core로 들어오는 통로
- Controller가 호출하는 인터페이스
OutPort
- Core가 외부에 요청하기 위한 통로
- DB 조회, API 호출 등을 추상화
Adapter
- Port를 구현하는 실제 코드
- DB, 외부 API와 연결되는 영역
Repository
- Adapter 내부에서 사용하는 접근 기술
- 아키텍처 흐름에서는 드러나지 않는 내부 구현
| 구분 | 레이어드 | 헥사고날 |
| 구조 | 계층 중심 | Core중심 |
| DB 의존 | Service가 직접 의존 | Port를 통해 간접 의존 |
| 유연성 | 낮음 | 높음 |
'Study' 카테고리의 다른 글
| OSI 7계층 / TCP-IP 4계층 (0) | 2026.04.23 |
|---|---|
| Redis Pub/Sub (0) | 2026.04.22 |
| Websocket 정리 (0) | 2026.04.19 |
| 그래프 표현, DFS/BFS, 최단경로 (0) | 2026.04.17 |
| 서비스 간 통신 방법 (0) | 2026.04.16 |