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#IaC
#DevOps

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

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

Summary

"코드는 환경을 몰라야 한다" 헥사고날 아키텍처를 인프라까지 확장하는 법

AWS에서 NCP로의 이전부터 CI 속도 최적화까지, 하나의 원리로 해결하는 5가지 엔지니어링 고통

본 아티클은 소프트웨어 설계 원칙인 헥사고날 아키텍처를 애플리케이션을 넘어 인프라, 배포, 테스트 전 영역에 적용하는 방법론을 제시합니다. '무엇을' 정의하는 코드와 '어디서'를 결정하는 환경 값을 분리하여, 변화에 유연하고 안정적인 시스템을 구축하는 실무적인 인사이트를 제공합니다.

  • 01배포, 인프라, 시간, 공간, 테스트라는 5가지 축의 교체 가능성 확보
  • 02Helm과 ArgoCD를 활용한 환경별 설정 오버라이드 및 강제 기법
  • 03Pulumi와 Kotlin을 이용한 클라우드 불가지론적(Cloud-agnostic) IaC 설계
  • 04Clock 인터페이스 기반의 시간 제어를 통한 비즈니스 로직 검증 최적화
  • 05Gateway의 Rewrite Host를 활용하여 전체 환경 포크 없이 특정 서비스만 로컬로 연결

+RECOMMENDATION

멀티 클라우드 도입을 고려 중이거나, 환경 간 설정 차이로 인해 배포 스트레스를 겪는 시니어 엔지니어 및 DevOps 팀에게 강력히 추천합니다.

The Problem

개발 환경과 운영 환경의 설정이 미세하게 달라지며 발생하는 배포 사고, 특정 클라우드 종속성으로 인한 확장성 저하, 그리고 테스트 및 디버깅 시 환경 의존성으로 인한 비효율성 문제를 해결하고자 합니다.

The Solution

애플리케이션 코드의 헥사고날 아키텍처 원리를 배포(Helm, ArgoCD), 인프라(Pulumi), 테스트(Testcontainers) 등 전체 레이어로 확장하여 '무엇을(로직)'과 '어디서(환경)'를 엄격히 분리하는 구조를 도입합니다.

The Result

환경 간의 경계를 구조적으로 강제함으로써 한쪽의 수정이 다른 쪽에 영향을 주지 않는 안정성을 확보하였고, 어댑터 교체만으로 실험이 가능한 환경을 구축하여 엔지니어의 이터레이션 속도를 향상시켰습니다.

Trade-off

모든 레이어에 추상화 계층(Port/Adapter)을 도입함에 따라 초기 설계 복잡도가 증가하며, 단순한 설정 변경에도 여러 층의 오버라이드 구조를 이해해야 하는 학습 곡선이 존재할 수 있습니다.

03

Key Concepts

Concept · 01

헥사고날 아키텍처 (Hexagonal Architecture)

비즈니스 로직을 외부 시스템(DB, UI, 외부 API 등)과 분리하기 위해 인터페이스(Port)와 구현체(Adapter)를 사용하는 소프트웨어 설계 방식입니다.

  • 애플리케이션뿐만 아니라 인프라 및 배포 파이프라인 설계의 핵심 원리로 사용됩니다.
Concept · 02

Port and Adapter (Interface/Implementation)

계약과 의도를 정의하는 포트와 이를 구체적으로 실행하는 어댑터를 분리하여 상호 의존성을 제거하는 구조적 단면입니다.

  • 클라우드 리소스를 Port로 정의하고 AWS나 NCP를 Adapter로 꽂아 클라우드 자체를 교체 가능하게 만듭니다.
Concept · 03

IaC (Infrastructure as Code)

수동 프로세스가 아닌 코드를 통해 인프라를 관리하고 프로비저닝하는 방식입니다.

  • Pulumi와 Kotlin을 조합하여 인프라 생성 로직('무엇을')과 리전/클라우드 설정('어디서')을 분리합니다.
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#IaC

Explore #IaC
Flex

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

#IaC1개월 전
Flex

[인프라를 소프트웨어처럼 2/5] 코드가 모르는 그 '환경'은 누가 만드는가

#IaC2개월 전
Flex·AI Coding Agent

[AI가 읽을 수 있는 코드베이스 2/5] 빌드 피드백이 AI를 가르친다

#IaC3개월 전
Flex·Pulumi

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

#IaC4개월 전
라인·OpenStack

LY Corporation의 클라우드 인프라 개편: 거대한 두 개의 클라우드를 통합한 차세대 플랫폼 Flava의 아키텍처 소개

#IaC5개월 전

Source

Flex
Flex
Engineering Blog

Published · April 23, 2026

Topics

IaCHexagonal ArchitectureArgoCDHelmPulumi