![[코드가 환경을 모르는 구조 5/7] Rewrite Host — 공간 축을 교체한다](/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Fv31psllp%2Fproduction%2F880cbd1201bc94d8f408147dcd135aef78e683b4-1684x1030.png%3Fauto%3Dformat%26fit%3Dmax%26w%3D1200&w=3840&q=75)
전체 인프라 배포 없이 내 노트북의 코드만 실시간으로 반영하는 flex의 스마트한 라우팅 전략
마이크로서비스 아키텍처에서 로컬 개발 환경 구축은 엔지니어의 숙명적인 고통입니다. flex팀은 '공간 축의 교체'라는 철학을 바탕으로, 클라우드 환경의 전체 시스템은 유지하되 개발 중인 특정 모듈만 로컬로 연결하는 Rewrite Host 기법을 통해 이 문제를 해결했습니다. 백엔드부터 프론트엔드까지 아우르는 이 혁신적인 접근법을 통해 개발 이터레이션 속도를 극적으로 높인 사례를 소개합니다.
로컬 개발 환경 구축을 위해 도커 컨테이너와 씨름하고 있는 MSA 팀에게 강력히 추천합니다. 서비스 간 경계가 명확한 구조라면 게이트웨이 레이어의 수정만으로 즉각적인 생산성 향상을 얻을 수 있습니다.
MSA 환경에서 로컬 개발 시 단일 서비스의 변경 사항을 확인하기 위해 게이트웨이, 인증, 이웃 도메인 등 전체 인프라를 로컬에 띄워야 하거나 클라우드 배포를 기다려야 하는 비효율이 발생합니다.
Spring Cloud Gateway 기반의 'Rewrite Host' 기능을 도입하여, 특정 디버그 헤더가 포함된 요청에 대해서만 목적지 주소를 로컬 호스트로 동적으로 치환해 라우팅하는 구조를 설계했습니다.
전체 시스템을 로컬에 재현하지 않고도 수정 중인 특정 서비스만 로컬 인스턴스로 교체해 검증할 수 있게 되었으며, 응답 헤더 피드백을 통해 개발자가 라우팅 성공 여부를 즉시 파악할 수 있는 환경을 구축했습니다.
Trade-off
현재 구현은 게이트웨이 진입점에서만 작동하므로 서비스 간 내부 호출 체인까지 로컬로 유도하려면 컨텍스트 전파나 서비스 디스커버리 레이어의 추가 확장이 필요하다는 한계가 있습니다.
요청의 목적지 주소를 특정 조건에 따라 동적으로 변경하여, 특정 서비스만 다른 환경(로컬 등)으로 라우팅하는 기술입니다.
API 게이트웨이로 들어오는 요청과 응답을 가로채서 공통 로직을 처리하거나 라우팅을 제어하는 컴포넌트입니다.
프론트엔드 애플리케이션을 작은 단위로 쪼개어 독립적으로 배포하고 런타임에 조합하는 아키텍처입니다.




