Datadog은 에이전트 기반 개발(Agent-based Development)의 검증 병목(Verification Bottleneck)을 해결하기 위해 Temper 시스템을 설계함
Temper는 에이전트가 코드가 아닌 명세(Specifications)를 생성하고, 커널이 이를 검증 및 배포하는 방식으로 코드 재사용성(Code Reusability)과 안정성(Reliability)을 강화함
기존 CRUD 앱과 달리 상태 머신(State Machine)을 명시적 데이터로 관리하여 동적 변경 및 핫 리로딩(Hot Reloading)을 지원함
항공, 금융 시스템처럼 고신뢰성 소프트웨어(High-Assurance Software) 구축 방식을 에이전트와 결합하여 소프트웨어 개발의 산업화(Industrialization)를 추구함
Temper는 기존 코드 생성 방식과 달리 에이전트가 정밀한 명세(Precise Specifications)를 생성하도록 유도한다. 이 명세는 네 가지 독립적인 분석 계층을 통과하며 검증된다.
상태 머신(State Machine) 명시화: 라우트, 서비스 메서드 등에 흩어진 제어 로직을 명확한 데이터 구조(Explicit Data Structure)로 분리하여 관리한다.
4단계 검증 프로세스: 기호 추론(Symbolic Reasoning), 상태 탐색(State Exploration), 결정론적 시뮬레이션(Deterministic Simulation), 무작위 속성 테스트(Randomized Property Testing)를 통해 코드의 정확성과 안정성을 보장한다.
실행과 검증의 일치: 검증된 명세가 곧 실행되는 코드가 되므로, 검증된 상태와 실제 실행 상태 간의 불일치(Drift)를 원천 차단한다.
이러한 접근 방식은 소프트웨어 개발의 반복성(Repeatability)과 제어 가능성(Controllability)을 극대화한다.
Datadog은 Temper 이전에도 에이전트 기반 개발(Agent-based Development)을 위한 여러 시스템을 구축하며 점진적으로 발전해왔다.
Courier: 분산 큐잉 시스템으로, 시스템 간 상호작용의 관찰 가능성(Observability)과 테스트 용이성(Testability) 확보에 집중했다.
BitsEvolve: 코드 변형 생성 및 피드백 루프를 통한 진화적 최적화(Evolutionary Optimization)를 시도했으나, 피드백 루프의 병목 현상을 겪었다.
Helix: Kafka와 유사한 스트리밍 서비스로, 빠른 구축 속도(Rapid Development Speed)를 보여주었으나 운영 안정화에 시간이 소요되었다.
이러한 이전 프로젝트들은 각 단계별 병목 지점(Bottleneck)을 노출하고, 다음 단계로 나아가기 위한 기술적 기반을 마련하는 역할을 수행했다.
Temper는 각 기능을 세 가지 계약(Contracts)으로 정의하여 에이전트가 명확하게 이해하고 상호작용하도록 설계했다.
행동 계약(Behavior Contract): 상태 전이, 선행 조건, 안전 속성 등 시스템의 동작 방식을 명시하여 예측 가능한 실행을 보장한다.
데이터 계약(Data Contract): 엔티티 타입, 속성, 지원 액션 등을 기계가 파싱 가능한 형태(Machine-parseable Form)로 제공하여 API 자동 발견을 지원한다.
인가 계약(Authorization Contract): 기본 거부(Default-deny) 정책 기반의 범위 기반 승인(Scope-based Approval)을 통해 접근 제어를 강화하고, 거부 기록을 통해 인간의 승인을 거쳐 정책을 동적으로 업데이트한다.
이러한 계약 기반 설계는 모듈성(Modularity)과 확장성(Scalability)을 높이는 데 기여한다.
Temper는 에이전트가 생성한 명세를 기반으로 반복 가능하고 검증 가능한 소프트웨어 컴포넌트를 구축하는 '머신 툴' 역할을 수행한다. 이는 마치 CNC 기계가 정밀한 사양에 따라 부품을 생산하는 것과 유사하다.
일회성 도구에서 재사용 가능한 컴포넌트로: 에이전트가 임시방편으로 도구를 만드는 대신, Temper는 명확한 명세와 검증 과정을 거친 재사용 가능한 구성 요소를 생성한다.
소프트웨어 공장(Software Factory) 모델: 이러한 컴포넌트들을 조합하여 코드베이스 주변에 자동화된 소프트웨어 생산 라인을 구축할 수 있다.
유기체적 성장 가능성: 에이전트가 자율적으로 도구를 구축하고 피드백을 통해 개선해나가는 과정은 소프트웨어를 살아있는 유기체처럼 성장, 배양, 진화시키는 가능성을 제시한다.
Helix의 '다크 팩토리' 환경에서 Temper는 인간의 개입 없이 에이전트가 자율적으로 작업을 수행하도록 지원하는 핵심적인 역할을 담당한다.
에이전트 제어 평면(Agent Control Plane): 세션 관리, 역할 할당, 작업 큐 관리, 생명주기 제어 등 에이전트 운영의 전반적인 관리를 담당한다.
도구 빌더 계층(Tool-builder Layer): 에이전트가 Git, CI/CD와 같은 표준 SDLC 도구와 통합될 수 있도록 지원하며, Temper 기반의 경량 애플리케이션 개발을 가능하게 한다.
Helix 제어 API: 데이터 평면을 실행하는 워크로드에 대한 생명주기 관리 인터페이스를 제공한다.
이를 통해 Temper는 에이전트 인프라를 넘어 범용적인 제어 로직 관리 도구로서의 가능성을 보여준다.