인프라 인력 없이 Next.js 앱에 AI 에이전트를 붙일 때 발생하는 비용과 보안 문제 해결하기
19. Juni 2026
0
컴퓨터/소프트웨어Related Video
53:42Ship 26 런던 - 키노트
Vercel
Comments (0)
Log in to leave a comment
No posts yet
53:42Vercel
Log in to leave a comment
No posts yet
자율형 에이전트는 목표를 달성할 때까지 생각하고 도구를 호출한다. 이 루프 구조가 문제다. 특정 도구 호출이 실패하거나 시스템 프롬프트가 무한 반복되는 동작 잠김 상태에 빠지면, 수십 분 만에 수천 달러에 달하는 API 과금 사고가 터진다. 2026년 Vercel 플랫폼 데이터에 따르면 코딩 에이전트가 생성한 커밋이 전체 배포 트래픽의 절반을 넘었고, AI Gateway를 통과하는 토큰량은 전년 대비 10배 급증했다. 게이트웨이 레이어에서 토큰 오남용을 선제 차단하는 설계가 필요한 이유다. 단순한 IP 단위 제한으로는 에이전트 내부의 의미론적 무한 루프를 탐지하기 어렵다. Next.js Edge Middleware와 Upstash Redis를 연동해 두 프롬프트 벡터 와 사이의 코사인 유사도를 실시간으로 연산하는 필터링 레이어를 구축해야 한다.
무한 루프 호출을 차단하는 실시간 미들웨어 방어 체계는 세 단계로 구현한다. 프로젝트 루트에 middleware.ts 파일을 생성하고 @upstash/ratelimit을 활용해 30초 이내에 단일 세션당 최대 5회의 실행 요청만 허용하는 슬라이딩 윈도우 레이트 리미터를 정의한다. 그다음 AI SDK의 embed 함수와 text-embedding-3-small 모델을 호출해 유입되는 프롬프트의 벡터 임베딩을 실시간으로 추출하고, Upstash Redis에 저장된 직전 프롬프트 벡터와 코사인 유사도를 계산하는 로직을 작성한다. 계산된 유사도가 0.95를 초과하면 무한 루프 상태로 판정해 LLM 백엔드 호출을 즉시 중단하고, Redis에 저장해 둔 이전 성공 응답 데이터인 agent:response:${sessionId}를 강제 반환하도록 조건문을 구성한다. 이 단계를 완료하면 비정상적인 자원 소모가 실시간으로 차단되어 LLM API 운영 비용을 최대 40% 절감할 수 있다.
에이전트가 웹 리서치나 데이터 분석 등 사용자가 생성한 스크립트를 처리할 때 프롬프트 인젝션 공격에 노출된다. 공격자가 샌드박스를 탈옥하고 호스트 셸 명령어를 가동하면 원시 데이터베이스 자격 증명 환경 변수가 유출된다. 악성 공격으로부터 컴퓨팅 계층을 물리적으로 격리하기 위해 가볍고 밀리초 단위의 즉시 부팅 성능을 가진 AWS Firecracker 기반 마이크로VM인 Vercel Sandbox 기술을 도입한다. 신규 Node.js 26 런타임 인스턴스를 격리하고 vCPU 2개당 2GB 비율로 총 4GB RAM을 자동 리사이징하는 Vercel Sandbox는 자격 증명 탈취를 예방해 수동 보안 감사 시간을 주당 5시간 이상 단축한다.
격리된 안전한 코드 실행 환경은 화이트리스트 기반의 샌드박스 실행기로 통제한다. 프로젝트 루트에 sandbox.config.ts 파일을 작성하고 networkPolicy 속성을 deny-all로 지정해 외부 탈옥을 통한 프롬프트 인젝션 및 전용 DB 환경 변수의 사외 유출을 원천 차단한다. 내부에 전파할 환경 변수 화이트리스트 변수 목록인 envWhitelist에는 NODE_ENV, TZ, AGENT_RUN_MODE만 등록한다. 이어서 sandbox-runner.ts 스크립트를 생성하고 외부에서 입력된 가공되지 않은 코드 파일인 runner_entry.js를 sandbox.writeFiles 구조를 통해 격리 디렉토리에 기록한 뒤 sandbox.runCommand를 호출해 호스트의 민감 정보 유입이 차단된 상태로 런타임을 구동한다. 스트리밍 방식으로 샌드박스의 출력 로그를 모니터링하는 for await 루프 내부에 누적 바이트 크기를 추적하는 조건문을 삽입하고, stdout과 stderr의 합계가 50KB를 초과할 경우 sandbox.stop()을 즉시 실행해 가상 머신을 강제 정리하는 에러 바운더리를 구축한다. 이 보안 격리 절차를 적용하면 시스템 마비 DoS 공격이 방어되며 리소스 누수와 불필요한 컴퓨팅 비용이 발생하지 않는다.
웹 에이전트는 완료 시점까지 수 분에서 수 시간이 소요되는 롱러닝 비즈니스로 동작한다. 네트워크 단절이나 타임아웃 같은 예외 오류가 발생했을 때 기존에 완료한 중간 탐색 단계의 모든 성과가 날아가 처음부터 다시 토큰을 태우며 비용을 중복 지출하는 리스크가 있다. 분산 상태 소실 문제를 해결하기 위해 Vercel Workflows SDK와 프레임워크인 Eve가 제공하는 내구적 실행 패턴을 도입한다. use workflow와 use step 컴파일러 지시어를 사용하면 서버리스 컨테이너 수명이 다하더라도 실패 전 최종 성공했던 단일 스텝 스냅샷 데이터가 영속 메모리 로그 큐에 저장되므로 중복 실행 없이 장애 발생 단계부터 비즈니스를 연속해서 재개할 수 있다.
장애 복구가 가능한 내구적 체크포인팅 시스템은 Vercel Connect와 연동된 저장소 인프라에 업서트 쿼리를 호출하는 상태 추적 인터셉터 코드를 심어 구축한다. 에이전트 태스크의 생명주기를 관리할 핵심 상태 구조체인 DurableStateContext를 정의하고 현재 실행 단계를 Task_Start, API_Called, Data_Parsed, Task_Complete로 세분화한다. Vercel Connect를 통해 별도의 인증 인증서 없이 OIDC 방식으로 바인딩된 Upstash Redis 저장소인 connectStateStore에 각 단계의 성공 시점마다 현재 컨텍스트 상태를 즉시 기록하는 upsertCheckpointState 인터셉터 함수를 작성한다. 마지막으로 에이전트 통신 재시도 요청을 처리하는 executeOrResumeAgent 핸들러를 구현하여 데이터베이스에서 세션 ID 기반의 최종 상태를 검색하고, 진행 중이던 세션의 단계가 Task_Complete가 아니라면 처음부터 태스크를 재실행하는 대신 가장 최근에 저장된 스냅샷 지점부터 워크플로우를 강제 복구하도록 제어 흐름을 생성한다. 이 상태 보존 핸들러를 작동시키면 서버리스 타임아웃 및 장애 시 처음부터 재시작하는 비효율이 제거되어 에이전트 작업 성공률이 올라간다.
프로덕션 환경을 중단하지 않고 기존 웹 서비스의 모놀리식 API 경로를 AI SDK 기반 에이전트 아키텍처로 마이그레이션하려면 기능 플래그 제어와 실시간 엣지 라우팅 분기가 필요하다. 서비스 무중단 점진 마이그레이션은 기존에 안정적으로 작동하던 단일 응답 API를 그대로 유지한 상태에서 새롭게 설계된 에이전트 인프라 경로로 카나리 배포를 점진 적용해 나가는 방식으로 진행한다. 초저지연 CDN 엣지 읽기를 보장하는 Vercel Edge Config 기술을 미들웨어 레이어와 결합하면 원격 DB 접근 오버헤드 없이 신속하게 롤아웃 플래그를 실시간 검색하여 안전하게 트래픽을 제어할 수 있다.
레거시 코드베이스의 무중단 마이그레이션을 달성하기 위해 3단계 점진적 프로덕션 롤아웃 절차를 실행한다. 기존 운영 중인 레거시 비즈니스 주소인 /api/v1/generate 경로는 보존하고 AI SDK 에이전트 기능이 통합되는 전용 신규 파일 엔드포인트 /api/v1/agent/generate를 새롭게 개설한다. Next.js middleware.ts 내에 Vercel Edge Config의 동적 임계치 지표인 agent_canary_rate를 get 함수로 읽어오는 로직을 심고, 브라우저 고유 ID 해시값이 설정 임계치인 10 하위 그룹에 할당되는 10%의 유저 트래픽만 NextResponse.rewrite를 통해 신규 에이전트 시스템 엔드포인트로 동적 분기 처리하는 카나리 환경을 수립한다. 프론트엔드 UI 컴포넌트 내부에서 구형 단기 종료형 JSON 결과 처리 방식과 신규 비동기 에이전트의 SSE 스트리밍 토큰 출력을 모두 처리할 수 있도록 Accept 헤더 값에 따라 처리를 실시간 분기하는 하이브리드 Fetch Wrapper 통신 어댑터 클라이언트인 unifiedAgentRequest를 구성한다. 이 마이그레이션 프레임워크를 적용하면 기존 시스템 부하 및 예기치 못한 비정상 작동 리스크를 10% 미만의 트래픽 영역 안으로 격리 제어하면서 무중단으로 전체 시스템 개편을 마칠 수 있다.