
AWS S3에서 국내 클라우드로 파일 저장소를 마이그레이션하며 검증한 헥사고날 아키텍처의 진짜 비용
본 아티클은 HR SaaS 플랫폼 플렉스(flex)가 데이터 국내 보관 요건 충족을 위해 클라우드 스토리지 이전 작업을 수행하며 겪은 실전 아키텍처 검증기입니다. 소프트웨어 설계 이론으로만 접하던 헥사고날 아키텍처의 '어댑터 교체성'이 완벽히 작동하기 위해 필요한 실질적인 개발 전제 조건들과, 그럼에도 불구하고 코드가 구원해 주지 못하는 실제 인프라 영역의 현실적인 난관들을 가감 없이 풀어냅니다.
멀티 클라우드 유연성을 확보하려는 백엔드 아키텍트들에게 추천하며, 추후 인프라 전환이 발생했을 때 진짜 '어댑터 추가'만으로 대응하고 싶다면 초기 단계부터 SDK 의존성을 빌드 가드레일 단위에서 차단하는 방어적 격리 환경 구축을 권장합니다.
개인정보보호법 및 고객사 계약상의 국내 데이터 보관 요건을 만족하기 위해, 기존 AWS S3 기반의 파일 저장소를 국내 CSP의 오브젝트 스토리지로 이전해야 하는 배경이 발생했습니다.
헥사고날 아키텍처를 기반으로 도메인 모듈에서 AWS SDK 의존성을 완전히 제거하고, 특정 벤더에 종속되지 않은 추상화된 Port 계약을 정의한 뒤 신규 CSP를 지원하는 Adapter를 추가로 구현하여 전환했습니다.
애플리케이션 영역에서는 코드 수정 없이 설정 프로퍼티 한 줄만 변경하여 저장 백엔드를 성공적으로 전환하고 빌드 산출물의 단일성을 유지했으나, 전체 이전 작업 일정의 대부분은 코드 바깥의 인프라 정의 및 데이터 마이그레이션에 소요되었습니다.
Trade-off
헥사고날 아키텍처가 애플리케이션 코드 수준의 영향도는 완전히 격리해 주지만, 인프라 정의(IaC) 재작성, 배포 파이프라인 수정, 네트워크 설계 변경, 대규모 데이터 마이그레이션과 같은 코드 경계 바깥의 실질적인 인프라 구축 비용은 줄여주지 못하는 한계가 있습니다.
핵심 비즈니스 로직(도메인)이 기술적 외부 요인(데이터베이스, 클라우드 SDK 등)에 직접 의존하지 않고 추상 인터페이스인 포트에만 의존하며, 구체적인 기술은 어댑터를 통해 주입받도록 격리하는 아키텍처 원칙입니다.
도메인 또는 비즈니스 유스케이스 모듈이 외부 기술 벤더의 라이브러리나 SDK 모듈을 직접 가져오지 못하도록 빌드 규칙과 아키텍처 규칙을 사용해 소스코드 수준에서 물리적으로 통제하는 기법입니다.
AWS S3가 제공하는 데이터 처리 표준 RESTful 규격을 다른 벤더가 자사 스토리지 제품군에 동일하게 적용하여 제공하는 표준 인터페이스 방식입니다.









