피드로 돌아가기
Go's Implicit Interfaces Are Its Best Architecture Feature
Dev.toDev.to
Backend

Implicit Interface 기반 의존성 역전으로 구현한 Lean Hexagonal Architecture

Go's Implicit Interfaces Are Its Best Architecture Feature

Gabriel Anhaia2026년 4월 28일12intermediate

Context

Java와 같은 Explicit Interface 언어에서 발생하는 구현체와 인터페이스 간의 강한 결합 문제 분석. 인터페이스 변경 시 모든 어댑터 코드를 수정해야 하는 전파 비용과 DI 컨테이너 의존성 증가라는 한계점 식별.

Technical Solution

  • Implicit Interface Satisfaction 도입을 통한 구현체와 인터페이스 간의 소스 수준 결합 제거
  • Domain 패키지에 Port(Interface)를 정의하고 Infrastructure 패키지는 도메인 타입만 참조하는 구조 설계
  • 인터페이스 선언 없이 메서드 시그니처 일치만으로 인터페이스를 충족하는 Go 언어의 특성 활용
  • Main 함수에서만 두 패키지를 연결하는 Wiring 전략을 통한 의존성 방향의 완전한 내부 지향성 확보
  • 프레임워크나 DI 컨테이너 없이 표준 툴체인만으로 Hexagonal Architecture의 핵심 원칙 구현
  • Interface의 변경이 구현체 소스 코드에 영향을 주지 않는 구조적 격리 달성

1. 도메인 계층에 필요한 인터페이스(Port)를 정의하고 구현체(Adapter)가 이를 명시적으로 참조하는지 확인

2. 인터페이스 변경 시 구현체 패키지의 수정이 필요한지 검토하여 결합도 측정

3. 복잡한 DI 프레임워크 도입 전 Go의 Implicit Interface를 활용한 수동 Wiring 가능 여부 판단

4. 외부 라이브러리 의존성을 도메인 내부로 유입시키지 않기 위한 Interface 격리 전략 적용

원문 읽기