Engineering Log
GoVail의 현재 아키텍처는 Architecture와 Decisions에 정의되어 있습니다.
이 페이지는 시스템이 5개의 초기 마이크로서비스에서 출발하여 현재의 정갈한 경계로 수렴하기까지의 기술적 판단과 당시의 문제의식을 보존하는 기록입니다.
1. 아키텍처 및 경계 분리
현재 GoVail의 핵심 기반이 되는 분리 원칙과 거버넌스 설계입니다.
왜 GoVail을 만들게 되었는가?
코딩 에이전트가 외부 모델로 보내는 민감 컨텍스트와 프롬프트를 게이트웨이 앞단에서 통제하고 관측하기 위한 출발점.
Gateway vs Runtime의 역할 분리
저지연 보안 프록시(Gateway)에 무거운 상태 관리나 LLM 추론 루프를 결합하지 않고 독립된 런타임으로 분리한 이유.
JSON Schema 기반 Audit Event 설계
모든 AI 요청, 라우팅 판단, 근거 수집, 실행 승인 이력을 단일 스키마로 표준화하여 불변 감사 로그를 구축한 과정.
2. 진화 과정과 설계 스냅샷
초기에는 5개 서비스(Gateway, Router, Runtime, Memory, Scanner)로 구성되었으나, 점차 Core의 책임을 압축해나갔습니다.
초기 5-서비스 아키텍처 및 데이터 흐름
Gateway와 Scanner 중심에서 Router, Memory, Runtime으로 서비스가 확장되던 당시의 전체 아키텍처 스냅샷.
Router의 동기/비동기 분기 설계
요청 의도를 분류하여 즉시 반환(LLM Direct)할지, 정밀 검증 런타임으로 보낼지 결정하는 시맨틱 라우터 초기 설계.
비동기 실행 제어를 위한 파이프라인 설계 및 스트리밍 어댑터 구현 기록.
3. 실험과 회고 (Core 경계 축소)
기능을 무조건 추가하기보다, 어떤 복잡도가 Core의 책임이 아닌지를 검증하고 경계 밖으로 격리한 기록입니다.
Scanner → Policy 정적 분석 실험
소스코드를 정적 분석해 Gateway 정책을 자동 생성하려던 시도. 유의미했으나 Core 요청 경로와 무관하여 별도 분리.
중앙 집중형 Memory RAG의 한계
모든 애플리케이션의 컨텍스트를 중앙 Core가 관리하려 했을 때 발생한 상태 침범 문제와 App-owned State로의 전환.
범용 Temporal 워크플로우 도입 회고
Durable Execution을 범용 워크플로우 엔진으로 확장했다가 Core가 비대해지는 문제를 겪고 승인/Fail-closed 실행에만 집중하도록 축소.
4. 인프라 및 운영 엔지니어링
1인 개발자가 분산 시스템을 지속 가능하게 지탱하기 위한 운영 표준과 관측성 구성입니다.
1인 마이크로서비스 운영의 교훈
기억력 대신 엄격한 스키마 계약(OpenAPI/JSON Schema)과 자동화된 계약 테스트로 시스템적 강제력을 확보한 운영 철학.
관측성 스택: Prometheus, Grafana, Loki
Rust Gateway와 Python 마이크로서비스 전반의 메트릭과 분산 로그를 통합 추적하는 관측 인프라 구성.