URL: https://www.youtube.com/watch?v=Zf_e45GiNCE
날짜: 2026-10-10
채널: aiDotEngineer
발표자: Thorsten Hans, Akamai 시니어 개발자 애드보케이트
원문 제목: Zero Cold Starts: Serverless AI Agents on Akamai Functions — Thorsten Hans
재생 시간: 22분 37초
📌 핵심 질문 / 엣지에서 콜드 스타트 없는 AI 애플리케이션을 만드는 방법
==WebAssembly 기반 Spin 애플리케이션을 Akamai Functions에 배포하면 MCP 서버와 AI 에이전트를 글로벌 엣지에 분산하고, 컨테이너·지역 고정 인프라의 지연과 콜드 스타트·운영 부담을 함께 줄일 수 있다.==
- MCP 서버와 에이전트는 일반 애플리케이션보다 더 빠른 응답이 필요하므로 사용자와 가까운 위치에서 실행해야 한다.
- Spin은 WebAssembly 애플리케이션을 만들고 실행하는 CNCF 프로젝트이며, Akamai Functions는 이를 글로벌하게 실행하는 서버리스 런타임이다.
- wasmcp는 도구·리소스·프롬프트라는 업무 로직과 인증·프로토콜 같은 비기능 요소를 분리해 MCP 서버 조립을 단순화한다.
- TypeScript·Rust·Python으로 만든 MCP와 Vercel AI SDK 기반 에이전트를 로컬에서 테스트한 뒤 단일 명령으로 약 60초 만에 전 세계에 배포할 수 있다.
- JavaScript 런타임과 의존성을 메모리 스냅샷으로 미리 로드하면 WebAssembly 애플리케이션이 콜드 스타트와 실행 성능에서 더 유리해진다.
지역에 묶인 서버 한 곳을 늘리는 방식은 전 세계 사용자의 지연 시간을 고르게 낮추기 어렵고, 갑작스러운 트래픽을 대비해 과잉 프로비저닝하면 비용과 환경 부담이 커진다. WebAssembly의 작은 이식 단위와 샌드박스, Spin의 개발 도구, Akamai Functions의 글로벌 배포를 결합하면 이 문제를 애플리케이션 코드와 인프라 운영을 분리한 채 해결할 수 있다.
1. AI 애플리케이션이 엣지 네이티브 구조를 필요로 하는 이유
MCP와 에이전트는 일반 애플리케이션처럼 빠른 응답과 안정적인 확장이 필요하지만, 전 세계 사용자를 한 지역의 서버로 처리할 때 구조적 마찰이 생긴다.
1.1. 지역 고정 인프라가 만드는 지연
-
MCP와 에이전트의 응답 시간 요구
- MCP(Model Context Protocol) 서버와 AI 에이전트는 사용자의 요청을 받아 도구를 호출하거나 모델을 거쳐 결과를 돌려주므로 응답이 느리면 사용자 경험이 즉시 나빠진다.
- MCP와 에이전트도 다른 애플리케이션과 다르지 않으므로, 좋은 사용자 경험을 위해 매우 빠른 응답 시간이 필요하다.
- 발표자는 약 20분 동안 Spin으로 초고속 에이전트와 MCP를 만들고 글로벌 분산 환경에서 실행하는 방법을 다루겠다고 소개했다.
-
단일 리전의 불균일한 지연
- 기존 리전 고정 아키텍처는 글로벌 사용자를 대상으로 할 때 한쪽 지역 사용자에게만 빠른 경로를 제공한다.
- 배포 위치에 가까운 일부 사용자는 빠르게 응답을 받지만, 다른 지역 사용자는 훨씬 높은 네트워크 지연을 겪는다.
- 같은 애플리케이션을 사용하더라도 사용자 위치에 따라 경험의 품질이 달라지며, 이런 마찰이 엣지 네이티브 아키텍처의 출발점이 된다.
1.2. 콜드 스타트와 과잉 프로비저닝의 비용
-
컨테이너와 VM의 확장 지연
- 컨테이너나 VM을 분배 단위로 선택해도 새 인스턴스를 띄우는 콜드 스타트 지연이 발생한다.
- 지연 시간은 수 초에서 수 분까지 늘어날 수 있으며, 예상하지 못한 사용자 수요가 갑자기 증가할 때 특히 문제가 된다.
- 빠른 확장을 위해 인프라를 미리 과잉 프로비저닝하면 콜드 스타트는 줄일 수 있지만, 사용하지 않는 서버와 컨테이너가 계속 비용을 만든다.
-
비용과 환경 부담의 맞교환
- 많은 서버를 켜 둔 채 실제로 사용하지 않으면 클라우드 지출이 커진다.
- 유휴 컴퓨팅 자원은 환경적 발자국도 늘리므로, 단순한 성능 확보만으로 지속 가능한 운영을 달성하기 어렵다.
- 필요한 순간에 가까운 위치에서 빠르게 실행하고 사용하지 않을 때 자원을 점유하지 않는 실행 모델이 필요하다.
1.3. 고수준 플랫폼의 이식성 문제
-
독점적인 실행 방식
- MCP와 에이전트를 실행하는 고수준 플랫폼은 존재하지만, 독점 SDK나 고유한 배포 단위를 요구하는 경우가 많다.
- 플랫폼마다 애플리케이션을 운영 환경에 맞게 다루는 방식이 달라 기존 개발 방식과 별도의 규칙을 익혀야 한다.
- 개발자는 업무 로직 외에도 해당 플랫폼의 인증·배포·운영 요구사항에 맞춰 코드를 조정해야 한다.
-
벤더 종속과 마이그레이션 비용
- 이런 제약을 파악한 뒤 다른 하이퍼스케일러나 인프라로 워크로드와 에이전트를 옮기려면 복잡한 마이그레이션이 필요하다.
- 플랫폼에 맞춰 작성한 코드와 배포 구성을 다시 만들면서 비용과 전환 시간이 커진다.
- 작은 실행 단위, 표준 기반 런타임, 이식 가능한 애플리케이션 모델이 지역·벤더 종속을 줄이는 해법이 된다.
2. 서버 측 WebAssembly와 엣지 네이티브 AI 스택
WebAssembly는 서버에서 실행되는 작고 빠르며 이식 가능한 바이너리로서 컨테이너와 VM 사이의 관계에 비유할 수 있는 실행 단위를 제공한다.
2.1. 서버용 WebAssembly의 특성
-
작은 이진 실행 단위
- WebAssembly 바이너리는 크기가 매우 작고 배포하기 쉽다.
- 실행이 빠르며 특정 클라우드나 하드웨어에 종속되지 않아 여러 환경으로 옮길 수 있다.
- 서버 측 WebAssembly는 백엔드·서버 애플리케이션을 만드는 새로운 방식으로 제시된다.
-
컨테이너와 VM에 대한 비유
- 컨테이너가 VM에 대해 제공하는 관계처럼 WebAssembly는 더 작고 빠르게 분배할 수 있는 실행 단위를 제공한다.
- 언어를 WebAssembly로 컴파일할 수 있다면 동일한 애플리케이션을 호환 런타임 위에서 실행할 수 있다.
- WebAssembly 샌드박스는 애플리케이션이 명시적으로 허용받지 않은 외부 자원에 접근하지 못하게 한다.
-
엣지 네이티브 AI 스택의 조합
- 엣지 네이티브 AI 스택은 CNCF 프로젝트인 Spin과 이를 실행하는 Akamai Functions의 조합이다.
- Spin은 개발자가 WebAssembly 애플리케이션을 만들고 테스트하는 도구이며, Akamai Functions는 애플리케이션을 글로벌하게 실행하는 런타임이다.
- 두 요소는 업무 코드의 이식성, 엣지 분산, 빠른 시작을 하나의 개발 흐름으로 연결한다.
2.2. Spin의 세 가지 기둥
-
개발자용 CLI
- Spin CLI는 개발자의 일상적인 개발 루프(inner loop)를 다룬다.
- 프로젝트 생성, 빌드, 로컬 실행, 배포와 같은 작업을 명령줄에서 일관되게 수행할 수 있다.
- 개발자는 인프라를 직접 구성하기보다 애플리케이션 구현과 검증에 집중한다.
-
Wasmtime 기반 런타임
- Spin은 Wasmtime 기반 런타임으로 WebAssembly 애플리케이션을 실행한다.
- 애플리케이션은 로컬 컴퓨터뿐 아니라 마이크로컨트롤러나 자원이 제한된 환경에서도 실행할 수 있다.
- 같은 실행 모델이 개발 환경과 클라우드·엣지 환경을 이어 준다.
-
언어별 SDK
- Spin은 HTTP 서비스·데이터베이스와 상호작용하는 일상 작업을 쉽게 만드는 언어별 SDK를 제공한다.
- SDK가 개발 생산성을 높이지만 Spin 자체는 특정 언어에 묶이지 않는다.
- WebAssembly 또는 WebAssembly System Interface(WASI)로 컴파일할 수 있는 언어라면 선택할 수 있으며, Rust·TypeScript·Python·Go가 대표적인 선택지로 제시된다.
- 발표자는 Spin 문서 사이트(spinframework.dev)를 추가 학습 자료로 안내했다.
2.3. Akamai Functions가 제공하는 실행 환경
-
글로벌 분산과 초저지연 시작
- Akamai Functions는 글로벌하게 분산된 서버리스 컴퓨팅 플랫폼으로 소개된다.
- 애플리케이션은 요청이 들어올 때 시작되며 평균 콜드 스타트 시간이 0.5밀리초보다 짧다고 제시된다.
- 플랫폼의 핵심 메시지는 콜드 스타트가 사실상 없는 실행 경험으로, 지역에 따라 다른 사용자도 가까운 서비스 리전에 연결할 수 있다는 것이다.
-
단일 명령 배포
- 플랫폼은 완전 관리형이며 개발자 중심으로 설계되어 별도의 운영 조절 항목을 만질 필요가 없다.
- Terraform 설정을 작성하거나 서버 수를 관리하지 않고 간단한 한 줄 명령으로 배포한다.
- 애플리케이션은 추가 비용 없이 글로벌하게 분산된다.
-
WebAssembly 샌드박스와 권한
- WebAssembly 샌드박스는 워크로드가 외부 자원에 접근할 수 있는 범위를 제한한다.
- 개발자가 명시적으로 권한을 부여하지 않으면 애플리케이션은 외부 리소스와 상호작용할 수 없다.
- 기본 격리가 보안 경계가 되므로 실행 환경마다 별도의 방어 코드를 반복해서 작성할 필요가 줄어든다.
-
내장 키-값 저장소
- 엣지 서버리스 플랫폼에는 상태를 보존할 지속성 계층이 필요하다.
- Akamai Functions는 멀티테넌트 내장 키-값 저장소를 제공한다.
- 별도로 자격 증명을 만들거나 저장소를 직접 운영할 필요가 없으며, 사용 의도를 밝히면 저장소가 애플리케이션에 자동으로 연결된다.
- 로컬 개발에서는 Spin이 SQLite를 이용해 저장소를 자동으로 만들고, Akamai Functions에서는 글로벌 분산 키-값 저장소를 사용한다.
3. wasmcp로 MCP 서버 만들기
wasmcp는 MCP 프로토콜과 비기능 요구사항을 직접 반복 구현하지 않고 업무 도구를 조립할 수 있도록 Spin과 통합된 CLI다.
3.1. 업무 로직과 비기능 요소의 분리
-
직접 구현하는 부분
- MCP 서버를 HTTP 위에 직접 구현하려면 HTTP 프로토콜과 MCP가 지정한 API를 모두 다뤄야 한다.
- wasmcp에서는 개발자가 도구(tools), 리소스(resources), 프롬프트(prompts) 같은 업무 로직에 집중한다.
- 도구의 입력과 결과가 애플리케이션의 핵심 기능이 되며 나머지 공통 기능은 조립 가능한 컴포넌트로 둔다.
-
wasmcp가 처리하는 부분
- 사용자 인증 같은 비기능 요구사항도 MCP 서버마다 필요한 요소다.
- OAuth와 OIDC를 이용한 인증은 wasmcp가 제공하는 구성 요소로 처리할 수 있다.
- 개발자는 완성된 컴포넌트를 가져와 최종 MCP 서버를 조립하고 Spin 또는 Akamai Functions에서 실행한다.
3.2. TypeScript MCP 서버 스캐폴딩
-
프로젝트 생성
wasmcp new명령으로 새 MCP 서버를 만든다.- 언어로 Rust·TypeScript·Python을 선택할 수 있고, 템플릿은 우선 도구에만 집중하는 기본 템플릿을 선택한다.
- 데모 프로젝트 이름은
hello이며, 생성 후 터미널에서cd hello로 이동하고npm install을 실행한다.
-
생성된 보일러플레이트
- 패키지 설치가 끝나면 기본 보일러플레이트가 바로 사용할 수 있는 코드로 정리된다.
- 입력으로 기대하는 스키마를 선언하고 제공할 도구 목록을 배열로 정의한다.
- 도구 설명은 사람과 LLM이 각각 언제 어떤 방식으로 호출해야 하는지 이해할 수 있도록 정확하게 작성해야 한다.
-
도구 호출과 입력 검증
callTool함수는 들어온 페이로드를 확인하고 실행할 도구를 결정한다.- 예제 도구의 핸들러는 모든 인자를 검증한 뒤 입력값 앞에 접두사를 붙여 반환한다.
- 복잡한 비즈니스 로직은 없지만, 입력 검증과 명확한 도구 설명이라는 MCP 도구의 기본 패턴을 보여 준다.
-
WebAssembly 컴포넌트 빌드
make명령은 JavaScript 코드를 WebAssembly로 컴파일한다.- 결과물은 도구 기능을 담은 WebAssembly 컴포넌트이지만 아직 완성된 MCP 서버는 아니다.
wasmcp compose명령은 인증 같은 구성 요소를 포함해 도구 컴포넌트를 완전한 MCP 서버로 합친다.- 데모에서는 인증이 필요하지 않다고 선택하고 필요한 컴포넌트를 가져와 서버를 구성한다.
3.3. 로컬 실행과 MCP Inspector 검증
-
Spin으로 로컬 서버 실행
- 조립이 끝난 MCP 서버는
spin up -f server.wasm으로 로컬에서 실행한다. - 서버는 로컬호스트 3000번 포트에서 대기한다.
- 로컬에서 먼저 확인하면 글로벌 배포 전에 프로토콜과 도구 호출이 올바른지 빠르게 검증할 수 있다.
- 조립이 끝난 MCP 서버는
-
MCP Inspector 연결
- 별도 터미널에서
npx로 MCP Inspector를 실행하면 브라우저 기반 검사 화면이 열린다. - Inspector는
localhost:3000을 MCP 서버로 가리키며, 연결 후 도구 목록을 조회할 수 있다. - 예제 도구에
foo를 입력해 실행하자 결과로foo가 돌아와 로컬 호출이 정상임을 확인한다. - 이 흐름은 단순한 Hello World지만, 실제 서버도 같은 방식으로 로컬 도구와 프로토콜을 검증할 수 있게 한다.
- 별도 터미널에서
3.4. Rust 기반 의사결정 로그 MCP 서버
-
동일한 MCP 모델의 Rust 구현
- 글로벌 배포 데모에서는 Hello World 대신 의사결정 로그(decision log) MCP 서버를 사용한다.
- 구현 언어는 Rust이며
lib.rs안의call_tool함수에서 MCP가 제공하는 CRUD 도구 중 실행할 기능을 분기한다. - Rust의 문법은 TypeScript와 다르지만 도구 정의와 호출이라는 의미는 동일하다.
-
키-값 저장소 기반 CRUD
list decisions같은 도구가 저장소를 사용해 의사결정 기록을 조회한다.- 로컬에서 Spin은 저장소 사용 의도를 인식하고 개발용 SQLite 키-값 저장소를 자동으로 만든다.
- Akamai Functions에서는 같은 코드가 별도의 저장소 설정 없이 글로벌 분산 키-값 저장소를 사용한다.
-
개발 명세와 작업 결합
- 매번 도구를 따로 만들고 조립하는 대신 애플리케이션 매니페스트에 작업을 연결하면 Spin 개발 경험을 유지할 수 있다.
spin build로 컴파일과 MCP 서버 조립을 하나의 개발 흐름으로 합칠 수 있다.- 이어서
spin aka deploy같은 배포 명령으로 빌드·업로드·글로벌 분산을 연결한다.
3.5. 약 60초 만의 Akamai Functions 글로벌 배포
-
배포 시작
spin aka deploy를 실행하면 MCP 서버 이름을 묻고 데모에서는ADR MCP라는 이름을 사용한다.- 터미널이 서비스 레지스트리와 상호작용할 수 있도록 권한을 허용한다.
- Spin 파일과 애플리케이션 매니페스트를 바탕으로 OCI 레이어를 생성해 Akamai Functions에 업로드한다.
-
각 서비스 리전의 검증
- Akamai Functions는 업로드된 두 파일을 모든 서비스 리전에 배포한다.
- 각 리전은 워크로드를 받았는지, 실행 가능한지 확인한 뒤 한 번 워크로드를 인스턴스화한다.
- 내부 상태 점검이 HTTP 200으로 모든 리전에서 돌아와야 배포가 완료된다.
- 전 세계 검증이 끝나면 플랫폼이 MCP 서버용 일반 서브도메인을 자동으로 발급한다.
-
공개 진입점과 추가 보호
- 약 60초 안에 MCP 서버가 글로벌하게 분산되고 공개 인터넷에서 접근할 수 있는 URL을 얻는다.
- 필요하면 Akamai Property Manager 같은 다른 제품을 앞단에 두어 추가 규칙과 보호 정책을 적용할 수 있다.
- 개발자는 리전별 서버를 직접 관리하지 않고도 글로벌 엔드포인트를 사용할 수 있다.
3.6. Zed에서 원격 MCP 서버 사용
-
클라이언트 연결
- MCP를 지원하는 어떤 클라이언트든 배포된 서버 URL을 사용할 수 있으며 데모 클라이언트는 Zed 에디터다.
- Zed에서 MCP 서버 추가 화면의 Remote 항목에 발급받은 URL을 넣고 서버를 등록한다.
- 등록 직후 다섯 개 도구가 보이며 View Tools에서 의사결정 CRUD 도구 목록을 확인한다.
-
자연어 요청과 권한 승인
- 프로젝트 문맥을 유지한 채 IDE 채팅에 의사결정을 기록해 달라는 요청을 보낸다.
- Zed는 의도를 파악하고
insert decision도구를 실행할지 사용자에게 먼저 묻는다. - 원시 입력을 확인하고 허용하면 요청이 Akamai Functions로 전달되어 의사결정이 기록된다.
- 이어서 모든 의사결정을 보여 달라고 요청하면 Zed는
list decisions도구를 선택해 저장된 항목을 읽는다. - 최종적으로 각 사용자의 요청은 가장 가까운 서비스 리전으로 라우팅된다.
4. Vercel AI SDK로 서버리스 AI 에이전트 만들기
AI 에이전트도 Spin 앱으로 만들 수 있으며, MCP 전용 CLI 대신 널리 쓰이는 에이전트 SDK를 그대로 가져올 수 있다.
4.1. TypeScript 게임 에이전트 구성
-
기존 SDK 활용
- TypeScript Spin 앱 템플릿을 만들고 Vercel AI SDK 의존성을 추가한다.
- SDK의 표준 에이전트 구성 방식을 유지하면서 Spin의 WebAssembly 실행 모델을 사용한다.
- 별도의 독점 에이전트 플랫폼에 맞춰 애플리케이션을 다시 작성할 필요가 없다.
-
모델과 도구
- 데모 모델은 전용 GPU가 장착된 Linode 인스턴스에서 실행되는 대규모 언어 모델이다.
- 게임 에이전트는 동전을 던지는 도구와 원하는 면 수를 지정해 주사위를 굴리는 도구를 제공한다.
- HTTP 핸들러는 설정을 불러오고 Linode의 모델을 가리키는 에이전트를 만든다.
- 에이전트의 정체성과 목적을 지시문으로 주고 도구를 등록하며, 수행할 수 있는 최대 단계 수에 제한을 둔다.
- 에이전트가 응답을 생성하면 HTTP 핸들러가 결과를 호출자에게 반환한다.
4.2. JavaScript 실행을 빠르게 만드는 메모리 스냅샷
-
컴파일 시 전역 영역 평가
- 해석형 언어를 컴파일할 때 Spin은 JavaScript 런타임과 사용자 정의 JavaScript를 함께 불러온다.
- 컴파일 시점에 전역 영역(global scope)을 평가하면 런타임뿐 아니라 의존성도 미리 로드된다.
- 평가가 끝난 상태를 메모리 스냅샷으로 만들어 WebAssembly 스토어에 기록하고 디스크에 저장한다.
-
속도와 패키징의 절충
- 스냅샷 덕분에 JavaScript로 작성한 WebAssembly 애플리케이션은 순수 네이티브 JavaScript 애플리케이션보다 콜드 스타트와 런타임 성능에서 유리해진다.
- 대가로 JavaScript 런타임을 사용자 코드와 함께 배포해야 한다.
- Spin은 약 10MB 크기의 최적화된 JavaScript 런타임인 StarlingMonkey를 사용해 이 추가 부담을 제한한다.
- 런타임과 의존성이 이미 로드된 상태에서 요청을 처리하므로 첫 요청의 초기화 비용을 줄인다.
4.3. 에이전트 배포와 실제 지연 시간 측정
-
단일 배포 흐름
- 기존 MCP 서버와 마찬가지로
spin aka deploy --no-confirm build흐름으로 에이전트를 빌드·업로드한다. - 플랫폼이 이름을 묻자 데모 애플리케이션 이름으로
game agent를 입력한다. - 배포가 끝난 URL을 에이전트 클라이언트에 연결해 실제 요청을 보낸다.
- 기존 MCP 서버와 마찬가지로
-
네트워크 진입점과 서비스 리전
- 동전 던지기 요청의 응답 헤더에는 사용자가 Akamai 네트워크에 진입한 Point of Presence가 Santa Clara로 표시된다.
- 에이전트가 처리된 가장 가까운 서비스 리전은 LAX로 표시된다.
- 엣지 네트워크는 사용자를 가까운 실행 위치로 연결하면서도 실제 모델 호출까지 포함한 애플리케이션을 처리한다.
-
측정값과 디버깅 농담
X-Envoy-Upstream-Service-Time헤더는 요청 수신부터 업무 로직 실행, LLM 호출, 응답 반환까지 걸린 시간을 보여 준다.- 한 번은 33~34밀리초가 표시됐지만 내부 서버 오류가 발생했다.
- 발표자는 화면 앞 30cm에 있는 사용자 오류가 원인이었다며 농담했고, 올바른 요청에서는 866밀리초가 측정됐다.
- 약 866밀리초는 에이전트가 LLM을 왕복 호출해 동전 결과가 tails인지 판단하는 전체 경로의 현실적인 값이다.
- 다시 실행한 요청에서 tails가 반복되고 한 번은 heads가 나왔으며, 전체 LLM 왕복은 약 820밀리초 수준으로 측정됐다.
5. 통합 개발 루프와 설계 원칙
애플리케이션 종류가 일반 업무 앱이든 MCP든 에이전트든 로컬 테스트와 단일 명령 배포라는 동일한 흐름을 유지한다.
5.1. 애플리케이션 종류를 가리지 않는 루프
-
언어 선택과 구현
- Rust·TypeScript·Python·Go처럼 WebAssembly로 컴파일할 수 있는 언어로 애플리케이션을 작성한다.
- Spin SDK가 HTTP·저장소 등 반복 작업을 지원하지만 애플리케이션은 특정 Akamai API에 종속되지 않는다.
- MCP는 도구·리소스·프롬프트를, 에이전트는 모델·도구·단계 제한을 구현한다.
-
로컬 검증
- Spin CLI로 로컬에서 애플리케이션을 실행하고 MCP Inspector나 클라이언트로 호출을 확인한다.
- 저장소가 필요하면 로컬에서는 SQLite 기반 자동 저장소를 사용한다.
- 로컬에서의 실패를 글로벌 배포 전에 발견해 피드백 루프를 짧게 유지한다.
-
글로벌 배포와 클라이언트 연결
spin aka deploy한 번으로 빌드한 애플리케이션을 업로드하고 서비스 리전에 배포한다.- 배포된 MCP 서버나 에이전트 URL을 Zed 같은 클라이언트에 지정한다.
- 추가 명령으로 메트릭과 로그를 조회하거나 애플리케이션을 업그레이드할 수 있다.
5.2. 네 가지 핵심 가치
-
이식성
- Spin 앱은 WASI를 준수하는 모든 런타임에서 실행할 수 있다.
- Akamai Functions는 여러 호환 런타임 중 글로벌 분산에 특화된 하나의 선택지다.
- 동일한 애플리케이션을 다른 실행 환경으로 옮길 여지가 남는다.
-
개방형 표준
- Spin은 CNCF 프로젝트로 운영된다.
- WASI와 WebAssembly는 Bytecode Alliance가 관리하는 개방형 표준 생태계에 기반한다.
- 특정 벤더의 독점 SDK보다 표준과 호환 런타임을 중심으로 설계할 수 있다.
-
속도
- 엣지의 가까운 실행 위치와 WebAssembly의 빠른 시작은 사용자 응답 시간을 줄인다.
- 인프라와 비기능 요구사항을 직접 구축하지 않아 개발자가 MCP와 에이전트를 더 빨리 출시한다.
- 실행 속도뿐 아니라 개발자의 time-to-market도 빨라진다.
-
운영 부담 없는 개발자 경험
- 기본 배포에는
spin aka deploy만 필요하며 서버 수나 Terraform을 직접 관리하지 않는다. - 메트릭·로그 조회·업그레이드 같은 운영 명령도 CLI에 포함된다.
- Spin 팀이 가장 중요한 지표로 삼는 것은 인프라 조작의 양이 아니라 개발자 경험이다.
- 기본 배포에는
5.3. 추가 자료와 마무리
-
참고 링크
- Spin 공식 문서는 https://spinframework.dev 에서 확인할 수 있다.
- Akamai Functions와 무료 계정·트라이얼 정보는 Akamai 개발자 허브와 제품 페이지에서 확인할 수 있다.
- 발표자는 https://developers.akamai.com 개발자 허브에서 관련 사례와 실험을 공유한다고 안내했다.
-
발표자와 행사
- Thorsten Hans는 Akamai 시니어 개발자 애드보케이트이며 LinkedIn, X, GitHub, 개인 사이트를 통해 추가 질문을 받을 수 있다.
- 발표는 2026년 샌프란시스코에서 열린 AI Engineer World's Fair에서 녹화됐다.
- 마무리 때 발표자는 추가 질문이 있으면 Akamai 부스를 찾아오라고 안내했다.
주요 발언 모음
“MCP와 에이전트는 다른 종류의 애플리케이션과 다르지 않다. 따라서 최상의 사용자 경험을 제공하려면 매우 빠른 응답 시간이 필요하다.”
“WebAssembly는 서버에서 컨테이너와 VM의 관계에 비유할 수 있다. 바이너리는 매우 작고, 배포하기 쉽고, 실행이 빠르며, 이식 가능하다.”
“개발자는 워크로드를 배포하고, 조절할 손잡이도 Terraform도 작성하지 않는다. 간단한 한 줄 명령으로 애플리케이션을 글로벌하게 분산한다.”
“개발자 경험은 Spin을 시작했을 때부터 지금까지 우리가 가장 높은 우선순위로 삼는 지표다.”
“Spin 앱을 가져가 WASI 호환 런타임 어디에서든 실행할 수 있다.”
핵심 데이터 & 수치
- 영상 발표 시간: 약 20분으로 예고됐고 실제 영상 재생 시간은 22분 37초다.
- 기존 콜드 스타트: 컨테이너·VM 환경에서 수 초부터 수 분까지 발생할 수 있다.
- Akamai Functions 시작 시간: 평균 콜드 스타트가 0.5밀리초보다 짧다고 제시된다.
- 글로벌 배포 시간: 모든 서비스 리전의 수신·실행 가능 확인·HTTP 200 상태 점검을 포함해 약 60초다.
- 로컬 MCP 포트:
localhost:3000에서 Spin MCP 서버를 실행했다. - Zed 도구 수: 원격 의사결정 MCP 서버를 등록한 뒤 다섯 개 CRUD 도구가 노출됐다.
- JavaScript 런타임 크기: 스냅샷과 함께 배포하는 StarlingMonkey 런타임은 약 10MB다.
- 에이전트 진입점: 요청의 Akamai Point of Presence는 Santa Clara로 표시됐다.
- 에이전트 서비스 리전: 가장 가까운 실행 리전은 LAX로 표시됐다.
- LLM 왕복 시간: 정상적인 동전 던지기 요청은 약 866밀리초, 반복 요청은 약 820밀리초였다.
- 비정상 측정값: 33~34밀리초가 표시된 요청은 내부 서버 오류가 난 사용자 오류 사례였다.
결론 및 시사점
- MCP와 에이전트의 지연 시간은 모델 선택만으로 결정되지 않는다: 사용자와 실행 환경의 거리, 컨테이너·VM 시작 지연, 모델 왕복 시간이 모두 응답 경험에 포함된다.
- 엣지 배포의 이점은 WebAssembly의 이식성과 결합될 때 커진다: 작은 바이너리와 샌드박스는 빠른 글로벌 분산과 권한 경계를 동시에 제공한다.
- wasmcp는 MCP를 업무 로직 중심으로 만든다: 도구·리소스·프롬프트를 구현하고 인증·프로토콜 같은 공통 기능을 조립 가능한 구성 요소로 위임한다.
- 개발 흐름은 로컬 검증에서 글로벌 배포까지 짧다: Spin CLI와 MCP Inspector로 검증한 뒤 한 줄 명령으로 배포하고, Zed 같은 클라이언트에서 즉시 사용할 수 있다.
- 에이전트에도 기존 SDK를 그대로 적용할 수 있다: Vercel AI SDK와 Linode GPU의 모델을 사용한 TypeScript 에이전트가 Spin 앱으로 패키징됐다.
- 메모리 스냅샷은 해석형 언어의 초기화 문제를 완화한다: 런타임과 의존성을 컴파일 시점에 평가해 첫 요청의 준비 비용을 줄이되 약 10MB 런타임을 함께 배포한다.
- 플랫폼의 핵심 선택 기준은 운영 기능보다 개발자 경험이다: 서버와 Terraform을 직접 조작하지 않고도 로그·메트릭·업그레이드까지 CLI로 처리하면 팀의 출시 속도가 높아진다.
- 표준 기반 설계는 장기적인 이동성을 남긴다: Spin·WASI·WebAssembly 생태계를 사용하면 특정 엣지 사업자에 배포하더라도 호환 런타임으로 옮길 가능성을 보존한다.
핵심 요약 (20줄)
MCP와 AI 에이전트는 빠른 응답이 필수인 일반 애플리케이션이며 단일 리전에 고정하면 글로벌 지연 편차가 커진다. 컨테이너와 VM은 수 초에서 수 분의 콜드 스타트를 만들 수 있고 과잉 프로비저닝은 비용과 환경 부담을 키운다. 독점 SDK와 고유 배포 단위는 다른 하이퍼스케일러로 옮길 때 복잡성과 비용을 높인다. 서버 측 WebAssembly는 작고 빠르며 이식 가능한 바이너리와 기본 샌드박스를 제공한다. 엣지 네이티브 AI 스택은 CNCF 프로젝트 Spin과 글로벌 런타임 Akamai Functions로 구성된다. Spin은 CLI, Wasmtime 기반 런타임, 언어별 SDK라는 세 기둥으로 개발 흐름을 만든다. Spin은 WebAssembly와 WASI로 컴파일할 수 있는 Rust·TypeScript·Python·Go 애플리케이션을 지원한다. Akamai Functions는 평균 0.5밀리초보다 짧은 콜드 스타트와 글로벌 분산 실행을 제공한다고 제시된다. WebAssembly 샌드박스는 개발자가 권한을 명시하지 않은 외부 자원 접근을 막는다. 내장 멀티테넌트 키-값 저장소는 별도 자격 증명 없이 애플리케이션의 상태를 보존한다. wasmcp는 도구·리소스·프롬프트에 집중하게 하고 OAuth·OIDC 같은 공통 인증 요소를 조립한다. TypeScript 데모는 wasmcp new, npm install, make, wasmcp compose 순서로 MCP 서버를 만든다. Spin MCP 서버는 localhost:3000에서 실행되고 MCP Inspector의 foo 호출에 foo로 응답한다. Rust 의사결정 로그 MCP는 로컬 SQLite와 Akamai의 글로벌 키-값 저장소를 같은 코드로 사용한다. spin aka deploy는 OCI 레이어를 업로드하고 모든 리전의 실행 가능성과 HTTP 200 상태를 확인한다. 글로벌 MCP 서버는 약 60초 만에 공개 URL을 얻고 Zed에서 다섯 개 CRUD 도구로 사용된다. Vercel AI SDK 기반 게임 에이전트는 Linode 전용 GPU 모델과 동전·주사위 도구를 호출한다. StarlingMonkey 약 10MB 런타임과 메모리 스냅샷은 JavaScript 초기화 비용을 줄인다. 에이전트의 전체 LLM 왕복 시간은 정상 요청에서 약 866밀리초와 820밀리초로 측정됐다. 이식성·개방형 표준·실행 속도·운영 부담 감소가 Spin과 Akamai Functions 조합의 핵심 가치다.
📁 Obsidian: /Users/flowkater/Obsidian/flowkater/flowkater/Study/YouTube다이제스트/2026-10-10-aiDotEngineer-zero-cold-starts-serverless-ai-agents-akamai-functions-thorsten-hans.md
