Mastra + Temporal — AI 워크플로우에 '끊기지 않는' 지속성 더하기

Maru

@maru

Mastra + Temporal — AI 워크플로우에 '끊기지 않는' 지속성 더하기

Mastra + Temporal — AI 워크플로우에 '끊기지 않는' 지속성 더하기

LLM API 호출 실패나 레이트 리밋 같은 예외 상황에서, 장시간 실행되는 AI 에이전트 워크플로우가 처음부터 다시 실행되는 것은 백엔드 개발자에게 큰 비용과 부담을 초래합니다. 중간 실패 지점부터 작업을 안전하게 재개할 수 있는 지속성 확보는 이제 실전 AI 서비스의 핵심 요구사항입니다.

2026년 5월 실험적 기능으로 발표된 @mastra/temporal 패키지는 Mastra의 생산성 높은 TypeScript API와 엔터프라이즈 업계 표준 분산 오케스트레이터인 Temporal을 결합하여 이 문제를 해결합니다. Mastra의 유연한 에이전트 설계와 Temporal의 강력한 내결함성이 만나 어떤 아키텍처적 시너지를 내는지 자세히 알아보겠습니다.

Mastra Native vs Temporal: 지속성을 구현하는 두 가지 설계

AI 에이전트 워크플로우가 도중에 실패하지 않고 완벽하게 지속되려면 상태를 다루는 강력한 영속성 아키텍처가 필수적입니다. Mastra는 이를 위해 초경량 내장 방식과 엔터프라이즈 업계 표준인 Temporal 연동이라는 두 가지 선택지를 제공합니다.

Mastra의 네이티브 방식은 PostgreSQL이나 LibSQL 같은 데이터베이스를 활용해 로컬 영속성 레이어를 구축합니다. 인메모리나 로컬 인프라를 직접 사용하므로 낮은 지연 시간으로 동작한다는 큰 장점이 있습니다. 다만 단일 노드가 다운되거나 대규모 트래픽이 몰리는 분산 환경에서는 클러스터 전체의 고가용성과 일관성을 유지하는 데 한계가 있습니다.

반면 Temporal을 연동하면 모든 워크플로우 실행 이벤트를 완벽하게 기록하는 이벤트 소싱 아키텍처로 전환됩니다. 비록 네트워크 라운드트립과 상태 직렬화 과정에서 미세한 지연 시간 오버헤드가 추가되지만, 서버가 완전히 다운되더라도 재시도 정책에 따라 에이전트 루프를 복구하는 뛰어난 내결함성을 얻을 수 있습니다.

@mastra/temporal — 코드로 작성하고 분산 시스템으로 실행하기

Mastra가 제공하는 @mastra/temporal 패키지는 번들링 시점에 동작하는 컴파일러 플러그인을 통해 Mastra의 풍부한 워크플로우 API를 Temporal의 엄격한 아키텍처로 변환합니다. 이 통합 기능을 정상적으로 컴파일하여 빌드하려면 반드시 @mastra/core 패키지가 1.32.0 버전 이상이어야 합니다.

Mastra 공식 블로그에 따르면, 빌드 타임의 컴파일러 플러그인이 createWorkflow()로 선언한 흐름을 Temporal Workflow로 자동 변환합니다. 이 과정에서 각 개별 단계를 정의하는 createStep()은 비결정적 연산과 네트워크 에러를 격리하여 관리할 수 있는 Temporal Activity로 매핑됩니다.

다음은 컴파일러 플러그인이 해석하는 Mastra 워크플로우의 기본적인 코드 구조입니다.

typescript
import { createStep, createWorkflow } from "../temporal";

const fetchLlmResponse = createStep({
  id: "fetch-llm",
  execute: async () => ({
    result: "AI 응답 데이터",
  }),
});

export const agentWorkflow = createWorkflow({
  id: "agent-decision-flow",
})
  .then(fetchLlmResponse)
  .commit();

이러한 구조 덕분에 개발자는 복잡하고 엄격한 Temporal 보일러플레이트 코드를 직접 작성하지 않고도 익숙한 TypeScript API를 그대로 유지할 수 있습니다. 동시에 분산 실행 제어, 세밀한 실패 재시도 정책, 그리고 프로세스가 갑자기 다운되어도 중단된 지점부터 안전하게 복구하는 엔터프라이즈급 안정성을 고스란히 누리게 됩니다.

AI 메모리 최적화와 최근 공급망 보안 이슈

Mastra는 대화 이력을 요약하여 컨텍스트 윈도우 비용을 줄이는 옵저베이셔널 메모리(Observational Memory) 파이프라인을 제공합니다. Mastra 연구 자료에 따르면 이 기술은 대화 기록을 압축하여 프롬프트 캐싱 효율을 극대화하며, LongMemEval 벤치마크에서 94.87%(GPT-5 mini)의 높은 정확도를 기록했습니다. 하지만 컨텍스트를 과도하게 압축하면 대화의 미세한 시간적 흐름 정보가 유실될 위험이 있습니다. 실제로 arXiv에 발표된 논문에서 소개된 크로노스(Chronos) 모델은 세부 타임라인 보존에 집중하여 동일 벤치마크에서 95.60%(Claude Opus 4.6)의 성능을 보여주었습니다. 따라서 서비스가 정밀한 시간 순서 추론을 요구하는지, 아니면 단순 컨텍스트 압축을 통한 비용 절감이 더 중요한지에 따라 메모리 전략을 다르게 가져가야 합니다.

이와 더불어 Mastra 생태계를 도입하기 전에 반드시 확인해야 할 중요한 공급망 보안 이슈가 있습니다. 2026년 6월 17일, npm의 @mastra 스코프 계정이 탈취당하는 심각한 보안 사고가 발생했습니다. OX 시큐리티의 분석 보고서에 따르면, 공격자는 권한을 침해당한 메인테이너 'ehindero'의 계정을 이용해 악성 패키지인 easy-day-js를 의존성으로 주입했습니다. 이 악성 패키지는 포스트 인스톨 단계에서 암호화폐 탈취 코드를 실행하도록 설계되었습니다. 따라서 @mastra/temporal을 비롯한 Mastra 관련 패키지를 설치할 때는 반드시 패키지 락파일을 엄격히 검사하고, 보안 조치 완료 후에 재배포된 안전한 최신 버전을 적용했는지 철저히 검증해야 합니다.

개발자를 위한 실전 아키텍처 선택 가이드

Mastra 기반 에이전트 시스템을 구축할 때 영속성 아키텍처는 워크로드의 복잡도와 인프라 환경에 맞춰 선택해야 합니다. 지연 시간에 민감하고 구조가 단순한 마이크로서비스라면 PostgreSQL이나 libSQL을 연동한 Mastra 네이티브 영속성 레이어로 충분히 빠르고 안정적인 상태 관리가 가능합니다. 반면 고가용성 분산 환경과 대규모 트랜잭션 처리가 필수적인 엔터프라이즈 도메인이라면 @mastra/temporal을 도입해 시스템 안정성을 외부 오케스트레이터에 위임하는 아키텍처가 유리합니다. 마지막으로, 2026년 6월 메인테이너 계정 탈취로 인해 발생한 악성 패키지 easy-day-js 유입 사건처럼 오픈소스 공급망 보안 위협이 존재하므로, 프로덕션 배포 전에 반드시 락파일 감사와 종속성 무결성 검사를 실행하기 바랍니다.

(수정됨)

아직 댓글이 없습니다.