피드로 돌아가기
Conduit: The Gateway I Built to Forget About
Dev.toDev.to
Backend

Go와 Deno 샌드박스를 결합한 Policy-Separated API Gateway 설계

Conduit: The Gateway I Built to Forget About

Adam - The Developer2026년 6월 24일11advanced

Context

3개의 Microservices와 서로 다른 2종의 Auth 모델(HMAC, JWT)을 단일 엔드포인트로 처리하는 Go 기반 Gateway 운영. 비즈니스 정책 변경 시마다 Go 소스 코드의 Prefix 조건문을 수정하고 재배포해야 하는 강한 결합도로 인한 유지보수 효율 저하 발생.

Technical Solution

  • Go와 Deno 런타임을 분리하여 네트워크 처리와 비즈니스 정책 실행 책임을 엄격히 격리한 구조 설계
  • Go 기반의 HTTP Ingress 계층에서 Routing, Proxying, CORS, SSRF Guard 등 네트워크 하위 레벨 기능 수행
  • Deno 샌드박스 내 TypeScript 플러그인을 통해 Auth, Logging 등 가변적인 Business Policy를 동적으로 처리
  • Go와 Deno 간 Unix Socket 기반의 Snapshot-and-Patch 프로토콜을 도입하여 효율적인 IPC 데이터 전송 구현
  • 플러그인 장애가 전체 게이트웨이로 전이되지 않도록 Hook Timeout 및 Isolate 교체 방식의 Failure Design 적용
  • 설정 파일과 TypeScript 플러그인 파일 수정만으로 재컴파일 없이 정책 반영이 가능한 Hot-reload 환경 구축

1. 빈번하게 변경되는 비즈니스 로직이 코어 인프라 코드(Go, Rust 등)에 하드코딩되어 있는지 검토

2. 정책 변경을 위한 재배포 비용이 높은 경우, 샌드박스 기반의 스크립팅 런타임 도입 고려

3. 외부 플러그인 도입 시 Timeout 및 Isolation 전략을 통해 전체 시스템의 가용성 보장책 마련

4. 서로 다른 언어 간 통신 시 공유 메모리 버그 방지를 위해 엄격한 상태 전송 프로토콜 정의

원문 읽기