DevLog

엔지니어링 블로그를 한 곳에서 탐색하고, 최근 발행 흐름을 빠르게 파악할 수 있는 서비스 입니다.

Quick Links

  • Latest Feed
  • Engineering Directory

Support

  • 소개
  • 개인정보처리방침

Contribute

  • 원하는 블로그 추가 (준비 중)
  • Feedback

© 2026 DevLog Inc. All rights reserved.

본 사이트는 공개 RSS 피드를 통해 콘텐츠를 수집하며, 모든 콘텐츠의 저작권은 원저작자에게 있습니다.

Back to Feed
Read Original

Contents

Continue Reading

  • More from Flex
  • Related reads#Pulumi
#DevOps

[코드가 환경을 모르는 구조 3/7] IaC에도 헥사고날이 관통한다

[코드가 환경을 모르는 구조 3/7] IaC에도 헥사고날이 관통한다
01

Summary

IaC도 이제 아키텍처다! 헥사고날로 설계하는 무적의 인프라 코드

HCL의 한계를 넘어 Kotlin과 Pulumi로 구축한 환경 독립적 멀티 클라우드 전략

프로젝트 규모가 커질수록 복잡해지는 인프라 코드 문제를 해결하기 위해 애플리케이션의 헥사고날 아키텍처를 IaC에 이식한 사례를 다룹니다. 클라우드 종속성을 제거하고 타입 안정성을 확보하여 개발 효율과 시스템 안정성을 동시에 잡는 방법을 제시합니다.

  • 01HCL의 느린 피드백 루프를 Kotlin 컴파일 타임 검증으로 해결
  • 02인터페이스 기반 설계를 통해 AWS, NCP, Azure를 자유롭게 갈아 끼우는 구조 구현
  • 03Gradle 멀티모듈 프로젝트로 인프라 코드의 의존성 방향을 명확히 관리
  • 04리소스의 변경 주기에 따른 스택 분리로 배포 안정성 및 속도 향상
  • 05인프라를 넘어 GitHub 설정, SSO 등 조직 운영 전반에 확장 가능한 코드 철학

+RECOMMENDATION

멀티 클라우드 운영을 고려 중이거나 테라폼의 복잡도 때문에 고통받는 플랫폼 엔지니어링 팀에게 강력히 추천하며, 특히 애플리케이션 설계 원칙을 인프라에 적용해보고 싶은 시니어 개발자에게 유용한 인사이트를 제공합니다.

The Problem

기존 HCL 기반의 Terraform은 타입 시스템이 약해 런타임 에러 발견이 늦고, '무엇을'과 '어디서'의 경계가 모호하여 멀티 클라우드 대응 시 코드 중복과 복잡도가 급격히 증가하는 한계가 있습니다.

The Solution

Kotlin과 Pulumi를 활용하여 IaC에 헥사고날 아키텍처를 도입했으며, 인프라 개념을 인터페이스(Port)로 정의하는 spec 모듈과 각 클라우드별 구현체(Adapter)를 분리하고 리소스 라이프사이클에 따라 스택을 쪼갰습니다.

The Result

컴파일 타임에 인프라 구성 오류를 즉각 포착하여 피드백 루프를 단축했으며, 새로운 클라우드 제공사 추가 시 기존 도메인 로직 수정 없이 어댑터 구현만으로 확장이 가능해졌고 인프라 변경의 영향 범위(Blast Radius)를 최소화했습니다.

Trade-off

스택을 세분화함에 따라 스택 간 순환 참조 발생 가능성이 생겼으며, 스택 경계를 넘나드는 출력 값의 타입 변경 시 컴파일 타임 검증이 어려워 버전 불일치에 따른 런타임 에러가 발생할 수 있는 위험이 존재합니다.

03

Key Concepts

Concept · 01

Port and Adapter (Hexagonal Architecture)

핵심 비즈니스 로직(도메인)을 외부 기술(DB, 클라우드 등)과 분리하여, 인터페이스를 통해 상호작용하게 함으로써 유연성을 극대화하는 아키텍처입니다.

  • spec 모듈을 인터페이스(Port)로 정의하여 인프라의 추상적 계약을 담당하게 함
  • 클라우드별 모듈(Adapter)이 spec 인터페이스를 구현하여 구체적인 리소스를 생성함
Concept · 02

Pulumi StackReference

서로 다른 Pulumi 스택 간에 데이터를 공유하고 참조할 수 있게 해주는 기능으로, 마이크로 스택 구조를 가능하게 합니다.

  • 네트워크, 클러스터, 아이덴티티 스택을 분리하고 필요한 정보를 StackReference로 전달함
  • 스택 간 의존성을 관리하며 인프라 변경 시 영향 범위를 격리하는 데 활용함
Concept · 03

Compile-time Verification

코드를 실행하기 전 컴파일 단계에서 문법 및 타입 오류를 검출하는 과정으로, IaC에서는 런타임 배포 사고를 예방하는 핵심 도구가 됩니다.

  • HCL 대신 Kotlin의 강력한 타입 시스템을 사용하여 인프라 설정 오류를 IDE 수준에서 즉시 발견함
  • 인터페이스 계약 위반 시 빌드를 차단하여 잘못된 인프라 배포를 원천 봉쇄함
Continue reading · same source

FlexMore from Flex

View all posts from Flex
  • @Scheduled 한 줄로 버티다, 트리거를 밖으로 꺼낸 이야기

    Spring BootScheduledDistributed Lock
    5일 전
  • 사람도 에이전트도, 덜 읽을수록 더 잘 고칩니다

    ModularizationAI AgentLLM Context
    1주 전
  • 헥사고날 아키텍처, Adapter만 바꾸면 될까

    Hexagonal ArchitecturePort and AdapterMulti Cloud
    2주 전
  • 경계를 빌드로 못 박으면, 경계를 옮기는 일도 빌드가 붙잡습니다

    Multi-ModuleGradleClean Architecture
    3주 전
  • 사람은 떠났는데 권한은 남았다

    ReBACOpenFGACDC
    1개월 전

Related reads#Pulumi

Explore #Pulumi
Flex·IaC

[인프라를 소프트웨어처럼 4/5] plan은 동작을 모른다: 인프라를 테스트·재현한다는 것

#Pulumi1개월 전
Flex·IaC

[코드가 환경을 모르는 구조 1/7] 코드는 무엇을, 환경은 어디서 - 다시 더 깊이

#Pulumi4개월 전

Source

Flex
Flex
Engineering Blog

Published · April 30, 2026

Topics

PulumiHexagonal ArchitectureKotlinMulti-CloudIaC