Mastra: 24K+ Stars — Token 비용을 4-10배 절감하는 TypeScript AI 프레임워크 2026
Mastra는 Gatsby 팀이 만든 TypeScript 네이티브 AI 프레임워크로 AI 기반 애플리케이션과 에이전트를 구축합니다. Mastra vs LangChain, 설치 튜토리얼, 워크플로우, RAG, 메모리, 관측 가능성, 벤치마크, 프로덕션 하드닝을 다룹니다.
- ⭐ 24050
- Apache-2.0
- 업데이트 2026-05-19
{{< resource-info >}}
대부분의 AI 프레임워크는 Python용으로 만들어졌습니다. 기술 스택이 TypeScript와 Node.js를 기반으로 한다면 두 가지 선택지밖에 없었습니다: 언어 간 브리징을 하거나, 떨어지는 개발자 경험을 감수하는 것입니다. Gatsby 팀이 Mastra를 출시하면서 상황이 바뀌었습니다 — TypeScript 네이티브 AI 에이전트 구축 프레임워크로, 2026년 5월 기준 24,050개의 GitHub Star를 달성했으며 현재 Replit, PayPal, Sanity 등에서 프로덕션 환경에 사용되고 있습니다. 이 글에서는 Mastra 설치부터 첫 에이전트 구축, 그리고 Observational Memory가 기존 RAG 접근법 대비 Token 비용을 4-10배 어떻게 절감하는지에 대한 모든 것을 다룹니다.
Mastra란? #
Mastra는 AI 기반 애플리케이션과 에이전트를 구축하기 위한 오픈소스 TypeScript 프레임워크입니다. 에이전트, 워크플로우, RAG 파이프라인, 메모리 시스템, 평가 프레임워크, 관측 가능성을 통합된 툴킷으로 제공하며 일류의 TypeScript 타입 지원을 갖추고 있습니다. Python에서 JavaScript로 포팅된 프레임워크와 달리 Mastra는 처음부터 TypeScript 생태계를 위해 만들어졌습니다. Vercel AI SDK 위에 구축되어 낮은 수준의 모델 상호작용을 처리하고, 프로덕션 AI 애플리케이션에 필요한 고수준 추상화를 추가합니다.

핵심 개념은 간단합니다: 에이전트는 도구 접근 권한을 가진 개방형 대화 작업을 처리하고, 워크플로우는 결정론적 다단계 프로세스를 관리하며, RAG는 응답을 데이터에 기반시키고, 메모리는 대화 간 문맥을 유지하며, 평가는 품질을 측정합니다. 6가지 원시 요소 모두 @mastra/core에 포함되어 일관된 Zod 타입 API로 함께 작동합니다.

Mastra의 작동 방식 — 아키텍처와 핵심 개념 #
Mastra의 아키텍처는 프로덕션 AI 시스템에 실제로 필요한 6가지 구성 요소를 중심으로 설계되었습니다:
에이전트 (Agents) #
에이전트는 주요 행위자입니다. 지시사항, 모델, 도구 접근 권한을 제공하면 에이전트가 어떤 것을 호출할지, 언제 멈출지, 어떻게 응답할지 스스로 결정합니다. .generate()는 완전한 응답을 위해, .stream()은 실시간 Token 스트리밍을 제공합니다 — 이는 응답이 점진적으로 표시되는 채팅 UI에 필수적입니다.
워크플로우 (Workflows) #
워크플로우는 XState 기반으로 명시적 제어가 필요한 다단계 작업의 결정론적 오케스트레이션을 제공합니다. 분기, 병렬 실행, 반복, 그리고 실행을 일시 중지한 후 승인을 받으면 재개하는 휴인더루프(human-in-the-loop) 패턴을 지원합니다.
RAG (검색 증강 생성) #
Mastra의 RAG 파이프라인은 문서 청킹, 임베딩 생성, 벡터 저장, 유사성 검색, 리랭킹을 처리합니다. Pinecone, Qdrant, ChromaDB, pgvector 등 주요 벡터 데이터베이스와 호환됩니다.
메모리 (Memory) #
메모리 시스템은 대화 기록(원본 메시지 저장), 시맨틱 리콜(임베딩 기반 유사성 검색), 워킹 메모리(구조화된 사실과 선호도를 Markdown 스크래치패드로), 그리고 핵심 기능인 Observational Memory — 오래된 대화를 압축된 관찰로 변환하여 Token 비용을 4-10배 절감합니다.
도구 (Tools) #
도구는 Zod 스키마로 정의된 타입 함수로 에이전트가 호출할 수 있습니다. 외부 API, 데이터베이스, 서비스에 대한 구조화된 인터페이스를 제공합니다. Mastra는 10,000개 이상의 사용 가능한 MCP 서버가 있는 외부 도구 생태계에 연결하기 위한 모델 컨텍스트 프로토콜(MCP)도 지원합니다.
평가 (Evals) #
평가 프레임워크는 모델 기반 평가, 규칙 기반, 통계적 방법을 통해 에이전트 품질을 추적합니다. 관련성, 충실도, 독성, 톤 일관성, 커스텀 메트릭을 평가할 수 있습니다.
// Mastra 핵심 아키텍처 — 6가지 원시 요소를 한 설정에
import { Mastra } from '@mastra/core';
import { openai } from '@ai-sdk/openai';
const mastra = new Mastra({
agents: {
supportAgent,
researchAgent,
},
workflows: {
ticketPipeline,
},
storage: new PgStorage({ connectionString: process.env.DATABASE_URL }),
vectorStore: new PgVector(connectionString),
telemetry: otel,
});
설치 및 설정 — 5분 이내 #
Mastra는 Node.js 22.13.0 이상이 필요합니다. 권장 방법은 CLI 마법사를 사용하는 것으로, 올바른 패키지 구조와 구성 파일, 예제 코드가 포함된 완전한 프로젝트를 스캐폴드합니다.
단계 1: 새 프로젝트 생성 #
# 인터랙티브 CLI로 새 Mastra 프로젝트 스캐폴드
npm create mastra@latest
# 마법사가 묻는 항목:
# - 프로젝트 이름
# - 구성 요소 (에이전트, 워크플로우, RAG, 메모리)
# - LLM 제공자 (OpenAI, Anthropic, Google 등)
# - 예제 코드 포함 여부
단계 2: 수동 설치 (대안) #
기존 프로젝트에 Mastra를 추가하려는 경우:
# 스키마 검증용 Zod와 함께 핵심 패키지 설치
npm install @mastra/core@latest zod@^4
# AI SDK에서 선호하는 LLM 제공자 설치
npm install @ai-sdk/openai
# 선택적: 벡터 저장소, 메모리, 배포 패키지
npm install @mastra/pg @mastra/memory @mastra/deployer-vercel
단계 3: 환경 설정 #
# .env — Mastra가 런타임에 자동 로드
OPENAI_API_KEY=sk-xxxx
DATABASE_URL=postgresql://user:pass@localhost:5432/mastra
단계 4: 프로젝트 구조 #
my-mastra-project/
├── src/
│ └── mastra/
│ ├── agents/
│ │ └── support.ts
│ ├── tools/
│ │ └── search.ts
│ ├── workflows/
│ │ └── ticket.ts
│ └── index.ts
├── .env
├── package.json
└── tsconfig.json
단계 5: Mastra Studio 실행 #
# localhost:4111에서 로컬 개발 UI 시작
npx mastra dev
# Studio를 통해 에이전트와 채팅, 도구 호출 검사,
# 메모리 상태 보기, 워크플로우 시각화, 프롬프트 반복 가능

첫 번째 에이전트 구축 — 실제 코드 예제 #
도구가 있는 기본 에이전트 #
// src/mastra/agents/support.ts
import { Agent } from '@mastra/core';
import { openai } from '@ai-sdk/openai';
import { createTool } from '@mastra/core';
import { z } from 'zod';
const searchTool = createTool({
id: 'search-docs',
description: '낮부 문서 검색',
inputSchema: z.object({
query: z.string().describe('검색 쿼리'),
}),
execute: async ({ context }) => {
const results = await searchInternalDocs(context.query);
return { results };
},
});
export const supportAgent = new Agent({
name: 'SupportAgent',
instructions: `당신은 기술 지원 에이전트입니다. 검색 도구를 사용하여
질문에 답하세요. 간결하고 출처를 인용하세요.`,
model: openai('gpt-4o'),
tools: { searchTool },
});
구조화된 출력을 가진 에이전트 #
// 일반 텍스트 대신 타입 객체 얻기
const result = await supportAgent.generate(
'이 티켓을 분류하세요: "Vercel에 배포할 수 없습니다"',
{
output: z.object({
category: z.enum(['deployment', 'billing', 'bug', 'feature']),
priority: z.enum(['low', 'medium', 'high', 'critical']),
summary: z.string(),
actionItems: z.array(z.string()),
}),
}
);
// result.object는 완전히 타입화됨 — TypeScript가 구조를 알고 있음
console.log(result.object.priority); // 'high' | 'low' | 'medium' | 'critical'
스트리밍 응답 #
// 채팅 UI를 위한 실시간 Token 스트리밍
const stream = await supportAgent.stream(
'환경 변수를 어떻게 구성하나요?'
);
for await (const chunk of stream.textStream) {
process.stdout.write(chunk); // Token이 도착하는 대로 즉시 쓰기
}
분기가 있는 다단계 워크플로우 #
// src/mastra/workflows/ticket.ts
import { Workflow, Step } from '@mastra/core';
import { z } from 'zod';
const classifyStep = new Step({
id: 'classify',
inputSchema: z.object({ ticketText: z.string() }),
outputSchema: z.object({ category: z.string(), priority: z.string() }),
execute: async ({ input, mastra }) => {
const agent = mastra.getAgent('supportAgent');
const result = await agent.generate(
`분류: ${input.ticketText}`,
{ output: z.object({ category: z.string(), priority: z.string() }) }
);
return result.object;
},
});
const escalateStep = new Step({
id: 'escalate',
outputSchema: z.object({ escalated: z.boolean() }),
execute: async ({ input }) => {
await sendSlackAlert(`높은 우선순위: ${input.ticketText}`);
return { escalated: true };
},
});
const autoRespondStep = new Step({
id: 'auto-respond',
outputSchema: z.object({ sent: z.boolean() }),
execute: async ({ input }) => {
await sendAutoReply(input.ticketText);
return { sent: true };
},
});
export const ticketPipeline = new Workflow({
name: 'ticket-pipeline',
triggerSchema: z.object({ ticketText: z.string() }),
})
.step(classifyStep)
.then(escalateStep, {
when: { 'classify.priority': 'high' },
})
.then(autoRespondStep, {
when: { 'classify.priority': ['low', 'medium'] },
});
병렬 워크플로우 실행 #
// .after()로 병렬 단계 실행
import { Workflow, Step } from '@mastra/core';
const stepA = new Step({ id: 'fetch-user', /* ... */ });
const stepB = new Step({ id: 'fetch-orders', /* ... */ });
const stepC = new Step({ id: 'fetch-preferences', /* ... */ });
const stepD = new Step({ id: 'combine', /* ... */ });
const parallelWorkflow = new Workflow({
name: 'parallel-fetch',
triggerSchema: z.object({ userId: z.string() }),
})
.step(stepA)
.step(stepB)
.step(stepC)
.after(stepA, stepB, stepC)
.step(stepD); // stepD는 A, B, C가 모두 완료된 후에만 실행
Next.js, Node.js, Vercel AI SDK와의 통합 #
Next.js 통합 #
// app/api/agent/route.ts — Next.js에서 에이전트를 API 라우트로 노출
import { mastra } from '@/mastra';
import { NextResponse } from 'next/server';
export async function POST(req: Request) {
const { message } = await req.json();
const agent = mastra.getAgent('supportAgent');
const stream = await agent.stream(message);
return new Response(stream.textStream, {
headers: { 'Content-Type': 'text/event-stream' },
});
}
Hono를 사용한 Node.js 서버 #
# Mastra 빌드 시 Hono HTTP 서버가 번들링됨
npx mastra build
# 출력 경로: .mastra/output/
# Hono 서버는 에이전트, 워크플로우, 메모리를 REST 엔드포인트로 노출
npx mastra start
# 서버가 http://localhost:4111에서 실행
Vercel AI SDK 통합 #
Mastra는 Vercel AI SDK 위에 구축되어 있습니다. 낮은 수준의 제어가 필요할 때 SDK를 직접 사용할 수 있습니다:
// Mastra는 낮은 수준에서 AI SDK 제공자를 사용
import { openai } from '@ai-sdk/openai';
import { anthropic } from '@ai-sdk/anthropic';
import { google } from '@ai-sdk/google';
// 한 줄로 제공자 전환
const agent = new Agent({
name: 'MultiProviderAgent',
instructions: '당신은 유용한 도우미입니다.',
model: openai('gpt-4o'), // 또는 anthropic('claude-sonnet-4') 또는 google('gemini-2.0-pro')
tools: { searchTool, calcTool },
});
MCP (모델 컨텍스트 프로토콜) 통합 #
// 10,000개 이상의 사용 가능한 MCP 서버에 연결
import { MCPClient } from '@mastra/core';
const mcpClient = new MCPClient({
servers: {
slack: {
command: 'npx',
args: ['-y', '@modelcontextprotocol/server-slack'],
env: { SLACK_BOT_TOKEN: process.env.SLACK_TOKEN },
},
github: {
command: 'npx',
args: ['-y', '@modelcontextprotocol/server-github'],
env: { GITHUB_PERSONAL_ACCESS_TOKEN: process.env.GITHUB_TOKEN },
},
},
});
// MCP 도구가 에이전트에 자동으로 사용 가능해짐
const tools = await mcpClient.tools();
const agent = new Agent({
name: 'MCPAgent',
model: openai('gpt-4o'),
tools, // 모든 MCP 도구가 이제 사용 가능
});
벤치마크와 실제 사용 사례 #
Token 비용 절감 — 4-10배 주장 #
Mastra의 Observational Memory는 프로덕션 경제성을 위한 핵심 기능입니다. 데이터는 다음과 같습니다:
문제점: 기존 RAG 기반 메모리 시스템은 매 턴 다르게 문맥을 동적으로 검색합니다. 각 검색은 프롬프트 프리픽스를 변경하여 프롬프트 캐시를 무효화합니다. Anthropic과 OpenAI 모두 캐시된 프롬프트 Token에 90% 할인을 제공하므로, 모든 캐시 미스는 캐시된 부분에서 10배의 비용 페널티를 나타냅니다.
해결책: Observational Memory는 문맥을 두 개의 블록으로 나눕니다 — 압축된 관찰(반사가 실행될 때까지 추가 전용)과 원본 최근 메시지입니다. 관찰 블록은 턴 간 일관되게 유지되어 매 호출에서 완전한 캐시 히트를 가능하게 합니다.
작업 부하별 압축 비율 #
| 작업 부하 유형 | 압축 비율 | 예시 시나리오 |
|---|---|---|
| 텍스트 전용 대화 | 3-6x | 고객 지원 채팅 |
| 도구 호출 집약적 에이전트 | 5-40x | 브라우저 자동화, 코딩 에이전트 |
| 큰 스크린샷/파일이 있는 에이전트 | 10-40x | Playwright DOM 스냅샷 |
LongMemEval 벤치마크 결과 #
| 메모리 시스템 | GPT-4o 점수 | GPT-5-mini 점수 |
|---|---|---|
| Mastra Observational Memory | 84.23% | 94.87% |
| Mastra RAG (기준) | 80.05% | — |
| 기존 대화 기록 | ~72% | — |
Playwright 스크린샷을 캡처하는 브라우저 자동화 에이전트는 200,000 Token의 세션 기록을 5,000-15,000 Token의 관찰로 압축할 수 있습니다 — 15-30배 감소입니다.
개발자 경험 벤치마크 #
| 프레임워크 | DX 점수 (1-10) | 설정 시간 | 첫 에이전트까지 |
|---|---|---|---|
| Mastra | 9/10 | < 5분 | 수분 |
| LangChain (Python) | 5/10 | 15-30분 | 수시간 |
| CrewAI | 6/10 | 10-15분 | 30분 |
| Vercel AI SDK | 7/10 | < 5분 | 수시간 (수동 배선) |
출처: NextBuild 프로덕션 벤치마크, 2025년 12월
프로덕션 배포 사례 #
- Replit: AI 기반 코드 생성 및 편집 기능에 사용
- PayPal: 지불 지원을 위한 고객 대면 AI 에이전트
- Sanity: 콘텐츠 워크플로우 및 AI 보조 편집
- WorkOS: 엔터프라이즈 ID 및 액세스 자동화
- Elastic: 검색 및 관측 가능성 AI 기능
고급 사용법 — 프로덕션 하드닝 #
Observational Memory 설정 #
import { Mastra } from '@mastra/core';
import { ObservationalMemory } from '@mastra/memory';
import { PgStorage } from '@mastra/pg';
const mastra = new Mastra({
agents: { supportAgent },
memory: new ObservationalMemory({
storage: new PgStorage({ connectionString: process.env.DATABASE_URL }),
observerModel: openai('gpt-4o-mini'), // Observer 에이전트 실행
reflectorModel: openai('gpt-4o-mini'), // Reflector 에이전트 실행
compressionInterval: 5, // 5개 메시지마다 압축
}),
});
RAG 파이프라인 설정 #
import { MastraRAG } from '@mastra/rag';
import { openai } from '@ai-sdk/openai';
import { PgVector } from '@mastra/pg';
const rag = new MastraRAG({
embedder: openai.embedding('text-embedding-3-small'),
vectorStore: new PgVector({
connectionString: process.env.DATABASE_URL,
dimension: 1536,
}),
chunkSize: 512,
chunkOverlap: 50,
});
// 문서 인덱싱
await rag.index(documentBatch);
// 유사성 검색으로 쿼리
const results = await rag.query('SSO를 어떻게 구성하나요?', { topK: 5 });
OpenTelemetry를 사용한 관측 가능성 #
import { Mastra } from '@mastra/core';
import { NodeSDK } from '@opentelemetry/sdk-node';
const otel = new NodeSDK({
traceExporter: new OTLPTraceExporter({
url: 'https://api.honeycomb.io/v1/traces',
}),
});
const mastra = new Mastra({
agents: { supportAgent },
workflows: { ticketPipeline },
telemetry: otel,
});
// 트레이스가 관측 플랫폼에 자동으로 나타남
// 모든 에이전트 호출, 도구 실행, 워크플로우 단계가 자동 계측됨
가드레일과 보안 #
import { Agent } from '@mastra/core';
import { createGuardrail } from '@mastra/core';
const promptInjectionGuard = createGuardrail({
id: 'no-prompt-injection',
check: async ({ input }) => {
const suspicious = /ignore previous|disregard instructions/i.test(input);
return { passed: !suspicious, message: suspicious ? '인젝션 감지' : undefined };
},
});
const piiGuard = createGuardrail({
id: 'no-pii',
check: async ({ output }) => {
const hasPii = /\b\d{3}-\d{2}-\d{4}\b/.test(output); // SSN 패턴
return { passed: !hasPii, message: hasPii ? 'PII 유출 감지' : undefined };
},
});
const agent = new Agent({
name: 'SafeAgent',
model: openai('gpt-4o'),
tools: { searchTool },
guardrails: [promptInjectionGuard, piiGuard],
});
휴인더루프 (Human-in-the-Loop) #
import { Workflow, Step } from '@mastra/core';
const humanApprovalStep = new Step({
id: 'await-approval',
outputSchema: z.object({ approved: z.boolean() }),
execute: async ({ suspend }) => {
// 워크플로우 일시 중지 후 인간 입력 대기
const { approved } = await suspend({ reason: '환불 금액이 $500을 초과함' });
return { approved };
},
});
// 사람이 Studio 또는 API 호출로 승인하면 워크플로우 재개
const refundWorkflow = new Workflow({
name: 'refund-pipeline',
triggerSchema: z.object({ amount: z.number(), orderId: z.string() }),
})
.step(validateStep)
.then(humanApprovalStep)
.then(processRefundStep, { when: { 'await-approval.approved': true } });
Docker 배포 #
# 프로덕션 배포용 Dockerfile
FROM node:22-slim
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
RUN npx mastra build
EXPOSE 4111
CMD ["node", ".mastra/output/index.mjs"]
# docker-compose.yml
version: '3.8'
services:
mastra:
build: .
ports:
- "4111:4111"
environment:
- OPENAI_API_KEY=${OPENAI_API_KEY}
- DATABASE_URL=postgresql://postgres:postgres@db:5432/mastra
depends_on:
- db
db:
image: pgvector/pgvector:pg17
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: mastra
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata:
대안과의 비교 #
| 기능 | Mastra | LangChain | CrewAI | Vercel AI SDK |
|---|---|---|---|---|
| 주요 언어 | TypeScript (99.2%) | Python (JS도 지원) | Python | TypeScript |
| GitHub Stars | 24,050 | 117,000 | 39,200 | N/A (Vercel의 일부) |
| 설정 시간 | < 5분 | 15-30분 | 10-15분 | < 5분 (수동 배선) |
| 에이전트 추상화 | 네이티브 Agent 클래스 | Chain/Agent 클래스 | 역할 기반 crew | 수동 조합 |
| 워크플로우 엔진 | XState 기반, 내구성 | LangGraph (그래프) | 순차/계층적 | 없음 |
| 메모리 시스템 | Observational Memory (비용 4-10x 절감) | ConversationBufferMemory | 단기 전용 | 수동 |
| 타입 안전성 | 전체 Zod, 완전 TS | JS 버전 부분 지원 | Python 타입 힌트 | Zod 지원 |
| 관측 가능성 | 내장 + OTEL | LangSmith (SaaS) | 기본 내장 | Vercel 플랫폼 |
| MCP 지원 | 네이티브 | 어댑터 통해 | 제한적 | 통합 통해 |
| 멀티 에이전트 | Supervisor 패턴 | LangGraph 멀티 에이전트 | 핵심 기능 | 수동 |
| 가장 적합 | TS 팀, Next.js, Node.js | Python 팀, 복잡한 그래프 | Python 멀티 에이전트 프로토타입 | React/Next.js UI 중심 앱 |
| LLM 제공자 | 40+ | 100+ | 20+ | 10+ |
| 프로덕션 사용자 | Replit, PayPal, Sanity | Uber, LinkedIn | 스타트업, 에이전시 | Vercel 호스팅 앱 |
| 배포 | 모든 Node.js 서버, Vercel, CF Workers | LangSmith Cloud, 자체 호스팅 | 자체 호스팅, CrewAI Cloud | Vercel (최적) |
한계 — 정직한 평가 #
Mastra는 모든 상황에 맞는 도구가 아닙니다. 이 프레임워크가 적합하지 않은 경우는 다음과 같습니다:
Python 생태계 락인: 데이터 사이언스 스택 전체가 Python — pandas, NumPy, PyTorch, Jupyter — 이라면 Mastra는 두 언어를 연결해야 합니다. 이 프레임워크는 순수 TypeScript입니다. Python에 깊이 투자한 팀에게는 LangChain이나 CrewAI가 더 자연스러운 선택입니다.
더 작은 통합 생태계: LangChain은 100개 이상의 LLM 통합과 50개 이상의 벡터 저장소를 보유하고 있습니다. Mastra는 40개 이상의 제공자를 지원하고 주요 벡터 데이터베이스를 커버하지만, 희귀한 모델이나 틈새 벡터 저장소가 필요하면 커스텀 통합 코드를 작성해야 할 수 있습니다.
새로운 프로젝트, 더 높은 변경률: Mastra는 2026년 1월 v1.0에 도달했습니다. API는 안정화되었지만 LangChain의 성숙한 생태계보다 breaking change가 더 자주 발생합니다. 버전 업그레이드 시간을 예산에 포함하세요.
네이티브 시각적 워크플로우 빌더 없음: n8n이나 Langflow와 달리 Mastra에는 드래그 앤 드롭 워크플로우 설계 도구가 없습니다. 모든 것이 코드입니다. 워크플로우를 수정해야 하는 비기술 팀원에게는 진입 장벽입니다.
커뮤니티 규모: 24K stars로 Mastra의 커뮤니티는 활발하지만 LangChain보다 훨씬 작습니다. Stack Overflow 답변, 서드파티 튜토리얼, 에지 케이스를 다루는 블로그 글이 더 적습니다.
제한된 UI 컴포넌트: Mastra Studio는 개발 플레이그라운드를 제공하지만 채팅 위젯과 같은 프로덕션 UI 컴포넌트는 제공하지 않습니다. 여전히 직접 프론트엔드를 빌드하거나 Mastra를 Vercel AI SDK의 UI 라이브러리와 페어링해야 합니다.
자주 묻는 질문 #
Q: Mastra는 TypeScript 지식이 필요한가요? 네, Mastra는 TypeScript 네이티브입니다. TypeScript, async/await, Zod 스키마에 대한 기본적인 숙련도가 예상됩니다. 팀이 Python만 안다면 TypeScript와 Mastra를 함께 배우는 것이 LangChain을 직접 사용하는 것보다 학습 곡선이 더 가파를 것입니다.
Q: Mastra의 Observational Memory는 LangChain의 메모리 클래스와 어떻게 다른가요? LangChain은 ConversationBufferMemory, ConversationSummaryMemory, 벡터 기반 검색을 제공합니다. 이들은 전체 컨텍스트 윈도우를 소비하거나 프롬프트 캐시를 무효화하는 벡터 검색에 의존합니다. Mastra의 Observational Memory는 문맥을 캐시 가능한 관찰로 압축하여 4-10배 비용 절감을 달성하면서 LongMemEval 벤치마크에서 더 높은 점수(84.23% vs RAG의 80.05%)를 기록합니다.
Q: DigitalOcean이나 AWS에서 Vercel이 아닌 Mastra를 배포할 수 있나요?
네. Mastra는 완전히 오픈소스이며 모든 Node.js 런타임에 배포할 수 있습니다. mastra build로 빌드한 후 DigitalOcean App Platform, AWS ECS, Google Cloud Run 또는 Docker 호스트에서 출력을 실행하세요. Vercel과 Cloudflare Workers 배포기는 선택 사항입니다.
Q: Mastra는 어떤 LLM 제공자를 지원하나요? Mastra는 Vercel AI SDK를 통해 40개 이상의 제공자를 지원합니다: OpenAI, Anthropic, Google, Mistral, Cohere, xAI, DeepSeek, Fireworks, Together 등. 제공자 전환은 코드 한 줄 변경으로 가능합니다.
Q: Mastra는 프로덕션에서 오류와 재시도를 어떻게 처리하나요? Mastra 워크플로우는 단계 수준에서 지수 백오프를 포함한 구성 가능한 재시도 정책을 포함합니다. 에이전트에는 내장 타임아웃 처리가 있습니다. 관측 가능성 통합(OpenTelemetry)은 모든 호출을 추적하여 프로덕션에서 오류를 식별하고 디버깅하기 쉽게 만듭니다.
Q: Mastra는 상업적 사용이 무인가요? 네. Mastra는 Apache 2.0 라이선스로 상업적 사용이 무입니다. Mastra Cloud(관리 호스팅)는 유료 티어를 제공하지만 핵심 프레임워크는 완전히 오픈소스이며 무로 자체 호스팅할 수 있습니다.
Q: 기존 Mastra 에이전트에 메모리를 어떻게 추가하나요? Mastra 인스턴스를 생성할 때 메모리 인스턴스를 전달하세요. 에이전트는 자동으로 사용자별 대화 스레드를 추적합니다. 다중 턴 대화를 위해 스토리지 백엔드(PostgreSQL, libSQL 또는 MongoDB)로 메모리를 초기화하면 에이전트가 나머지를 처리합니다.
결론 #
Mastra는 AI 프레임워크 환경에서 명확한 간극을 메웁니다 — JavaScript 개발자가 생태계를 떠나지 않고 에이전트를 구축할 수 있는 프로덕션급 TypeScript 네이티브 툴킷입니다. Observational Memory의 4-10배 Token 비용 절감은 마케팅 과장이 아닙니다. LongMemEval 벤치마크로 검증된 측정 가능한 프로덕션 이점입니다. 프레임워크의 DX 점수 9/10과 5분 미만의 설정 시간은 TypeScript 팀이 아이디어에서 배포된 에이전트까지 가는 가장 빠른 경로를 제공합니다.
Next.js 애플리케이션, Node.js 서비스, 또는 TypeScript 프로젝트에 AI 기능을 구축하고 있다면 Mastra는 진지한 평가를 받을 가치가 있습니다. npm create mastra@latest로 시작하여 워크플로우를 구축하고 Token 비용 차이를 직접 측정해 보세요.
실행 항목:
- Mastra 저장소를 클론하고 빠른 시작을 실행하세요:
npm create mastra@latest - Mastra Discord 커뮤니티에 가입하세요 (5,500+ 멤버)
- 공식 문서를 살펴 보세요
- 업데이트를 위해 Mastra GitHub 저장소를 팔로우하세요
이 글의 일부 링크는 제휴 링크입니다. 추천 링크를 통해 DigitalOcean에 가입하면 추가 비용 없이 커미션을 받을 수 있으며, 이는 독립적인 기술 연구에 도움이 됩니다.
추천 호스팅 및 인프라 #
위 도구들을 프로덕션에 배포하려면 안정적인 인프라가 필요합니다. dibi8가 직접 사용 중인 두 가지 옵션:
- DigitalOcean — 60일 $200 무료 크레딧, 14개 이상 글로벌 리전. 오픈소스 AI 도구의 기본 선택.
- HTStack — 홍콩 VPS, 중국 본토 저지연 접속. dibi8.com 호스팅 중인 검증된 IDC.
제휴 링크 — 추가 비용 없이 dibi8 운영을 지원합니다.
출처 및 추가 자료 #
- Mastra 공식 웹사이트
- Mastra GitHub 저장소
- Mastra 공식 문서
- Mastra 코스 - AI 에이전트 구축 배우기
- Mastra 튜토리얼: Firecrawl을 사용한 변경 로그 추적기
- Mastra Observational Memory 심층 분석
- ByteIota: Mastra TypeScript AI 프레임워크 분석
- Mastra vs LangChain 비교 - xpay
- CrewAI vs Mastra 비교 - respan.ai
- 2026년 최고의 JavaScript/TypeScript Gen AI 프레임워크
- Mastra 워크숍: 나만의 코딩 에이전트 구축
- Mastra Observational Memory 워크숍
- LangChain GitHub 저장소
- CrewAI GitHub 저장소
- Vercel AI SDK 문서
💬 댓글 토론