탄생 배경
AWS 안에는 수십 개의 AI 에이전트 팀이 있어요. Amazon Q Developer, AWS Glue, VPC Reachability Analyzer 등 실제 프로덕션에서 사용하는 에이전트들이에요.
근데 2024년까지 이 팀들이 공통으로 겪은 문제가 있었어요.
기존 프레임워크 (LangGraph, CrewAI 등)로 에이전트 만들 때:
프로토타입 → 프로덕션 배포: 수 개월 소요
복잡한 워크플로우 코드 수천 줄
새 기능 추가할 때마다 대규모 수정
예상 못한 입력이 오면 에이전트 붕괴
LLM이 좋아져도 프레임워크가 발목을 잡음
AWS Q Developer 팀의 말:
"LLM이 드라마틱하게 좋아지고 있는데
프레임워크가 그 능력을 발휘 못하게 막고 있었다"
그래서 내부적으로 새 접근법을 시도했어요. 결과는:
프로토타입 → 프로덕션: 수 개월 → 며칠~몇 주
코드량: 수천 줄 → 수십 줄
이 접근법을 오픈소스로 공개한 게 Strands Agents예요.
Strands Agents가 뭔가
AWS가 2025년 5월 공개한 오픈소스 AI 에이전트 SDK예요.
만든 곳: AWS (Amazon Web Services)
출시: 2025년 5월
라이선스: Apache 2.0 (완전 무료, 상업 사용 가능)
언어: Python, TypeScript
다운로드: 1,400만+ 회
기여: Anthropic, Meta, Accenture, PwC 등
실제 AWS 프로덕션 서비스에서 사용 중:
Amazon Q Developer ← AWS의 AI 코딩 어시스턴트
AWS Glue ← 데이터 파이프라인 서비스
Kiro ← AWS AI IDE
VPC Reachability Analyzer
핵심 철학 — Model-Driven Approach
Strands의 가장 큰 차별점이에요.
기존 프레임워크 방식:
# 개발자가 모든 흐름을 코드로 정의
def agent_workflow(input):
step1 = gather_information(input) # 1단계
step2 = analyze_data(step1) # 2단계
if step2.needs_more_info:
step3 = search_web(step2.query) # 조건 분기
step4 = analyze_data(step3)
else:
step4 = step2
step5 = generate_response(step4) # 최종 단계
return step5
# 예상 못한 입력 오면? → 붕괴
# 새 기능 추가하면? → 전체 수정
# 코드: 수백~수천 줄
Strands 방식:
from strands import Agent, tool
@tool
def search_web(query: str) -> str:
"""웹에서 정보를 검색합니다"""
...
@tool
def analyze_data(data: str) -> str:
"""데이터를 분석합니다"""
...
# 흐름은 LLM이 스스로 결정
agent = Agent(
system_prompt="정보를 수집하고 분석해서 답변해줘",
tools=[search_web, analyze_data]
)
agent("이 데이터 분석해줘") # LLM이 알아서 툴 선택하고 실행
차이:
기존: 개발자가 모든 경우의 수를 코드로 정의
→ 예상 못한 상황에 취약
→ 코드량 많음
Strands: LLM이 스스로 판단하고 툴 선택
→ 예상 못한 상황도 유연하게 처리
→ 코드량 극적으로 줄어듦
→ 모델이 좋아질수록 에이전트도 좋아짐
다른 프레임워크와 비교
LangGraph:
→ 그래프 기반 워크플로우 설계
→ 복잡하지만 정밀한 제어 가능
→ 상태 관리, 체크포인트 강력
→ 배우는 데 시간 걸림
CrewAI:
→ 역할 기반 멀티에이전트 팀
→ 설정 많음
→ 프로덕션에서 불안정 사례 있음
smolagents:
→ HuggingFace 초경량
→ Code Agent 특화
→ 기능 제한적
Strands Agents:
→ 가장 적은 코드로 동작
→ AWS/Bedrock 네이티브 연동
→ 프로덕션 검증됨 (실제 AWS 서비스에서 사용)
→ Python + TypeScript 지원
→ MCP 네이티브 지원
→ 멀티에이전트 패턴 내장
핵심 기능 5가지
1. 극단적 단순함
# 이게 전부예요
from strands import Agent
agent = Agent()
agent("서울의 인구가 얼마야?")
툴 없이도 동작해요. 기본 LLM 추론만으로.
2. 모델 독립성
from strands import Agent
from strands.models import BedrockModel, AnthropicModel
# Amazon Bedrock + Claude
agent = Agent(model=BedrockModel(model_id="anthropic.claude-sonnet-4-6"))
# Anthropic 직접 API
agent = Agent(model=AnthropicModel(model_id="claude-sonnet-4-6"))
# OpenAI
from strands.models import OpenAIModel
agent = Agent(model=OpenAIModel(model_id="gpt-5.4"))
# Ollama (로컬)
from strands.models import OllamaModel
agent = Agent(model=OllamaModel(model_id="llama4"))
# 모델 바꿔도 나머지 코드 그대로
3. @tool 데코레이터
파이썬 함수에 데코레이터 하나만 붙이면 에이전트 툴이 돼요.
from strands import tool
@tool
def get_stock_price(ticker: str) -> float:
"""주식 가격을 조회합니다.
Args:
ticker: 주식 티커 심볼 (예: AAPL, GOOGL)
Returns:
현재 주식 가격 (USD)
"""
# 실제 API 호출
return fetch_price(ticker)
docstring이 에이전트에게 "이 툴이 언제 필요한지" 알려줘요. 잘 쓸수록 에이전트가 더 정확하게 툴을 선택해요.
4. 멀티에이전트 내장
from strands import Agent
from strands.multiagent import Swarm, Graph, Workflow
# Swarm: 동일한 에이전트 여러 개 병렬 실행
swarm = Swarm(agent=my_agent, max_agents=5)
# Graph: 에이전트 간 복잡한 의존 관계
graph = Graph(nodes=[agent_a, agent_b, agent_c])
# Workflow: 순차 실행
workflow = Workflow(steps=[agent_a, agent_b])
5. MCP 네이티브 지원
from strands import Agent
from strands.tools.mcp import MCPClient
# MCP 서버 연결
mcp_client = MCPClient(server_url="http://localhost:3000")
agent = Agent(
tools=mcp_client.list_tools() # MCP 툴 자동 로드
)
AWS 생태계 연동
AWS를 이미 쓰고 있다면 이게 제일 큰 장점이에요.
from strands import Agent
from strands.tools import (
retrieve, # Amazon Bedrock Knowledge Bases
dynamodb_tool, # DynamoDB 조회/쓰기
s3_tool, # S3 파일 읽기/쓰기
lambda_tool, # Lambda 함수 실행
)
agent = Agent(
system_prompt="AWS 인프라 관리 에이전트입니다",
tools=[retrieve, dynamodb_tool, s3_tool, lambda_tool]
)
별도 설정 없이 IAM 권한만 있으면 바로 연동돼요.
언제 Strands를 써야 하나
✅ 이미 AWS 인프라 사용 중
→ S3, DynamoDB, Bedrock, Lambda 연동 가장 쉬움
✅ Claude를 Bedrock으로 쓰는 팀
→ 네이티브 지원, 설정 최소화
✅ 빠르게 프로토타입 → 프로덕션
→ 코드량 최소, 검증된 패턴
✅ 기업/엔터프라이즈 환경
→ IAM 권한 관리, 관찰성(OpenTelemetry) 내장
→ Accenture, PwC 같은 기업들이 실제 사용 중
✅ Python 또는 TypeScript 팀
→ 두 언어 모두 공식 지원
이런 상황엔 다른 프레임워크가 나을 수 있어요:
❌ AWS 안 씀, Azure/GCP만 씀
→ LangGraph나 smolagents가 더 적합
❌ 복잡한 상태 기계, 체크포인트 필요
→ LangGraph가 더 강력
❌ 역할 기반 멀티에이전트 팀 구성
→ CrewAI가 더 직관적
❌ 완전 노코드 원함
→ Dify, LangFlow 추천
2편 예고
2편 — 실전 튜토리얼:
- 설치 및 환경 설정
- 첫 번째 에이전트 (5분)
- 커스텀 툴 만들기
- AWS 서비스 연동 (S3, DynamoDB)
- 멀티에이전트 구성
- Lambda 배포
📌 다음 글: Strands Agents 2편 — 실전 튜토리얼
Strands Agents 완전 가이드 2편 — 실전 튜토리얼
1편에서 Strands Agents의 개요와 철학을 다뤘어요.이번 편은 실제로 손으로 만들어봐요.이번 편에서 만드는 것:1. 설치 및 환경 설정2. 첫 번째 에이전트 (5분)3. 커스텀 툴 만들기4. Anthropic API 직접 연
cell-devlog.tistory.com
'AI Agent' 카테고리의 다른 글
| Fabric MCP 서버 완전 가이드 — Claude Code에 240개 AI 패턴과 개발자 지식베이스 연결하기 (0) | 2026.04.27 |
|---|---|
| Strands Agents 완전 가이드 2편 — 실전 튜토리얼 (0) | 2026.04.23 |
| Dify 완전 가이드 — 노코드로 RAG 챗봇, AI 에이전트, 워크플로우 한 번에 (0) | 2026.04.23 |
| Hermes Agent 세팅 가이드 — 쓸수록 똑똑해지는 AI 에이전트 (0) | 2026.04.23 |
| LangFlow 완전 가이드 4편 — 심화 튜토리얼 2 : 멀티 에이전트, MCP, 프로덕션 배포 (0) | 2026.04.23 |