핵심 요약
WASI Preview 3가 2026년 1월 안정화되며 async/스트림이 표준 사양에 들어왔다. 컴포넌트 모델로 Rust 서버에서 Go 라이브러리와 Python 데이터 파이프라인을 호출하는 폴리글랏 함수가 현실. 콜드스타트는 8ms, 메모리는 평균 24MB. Cloudflare Workers·AWS Lambda 대안으로 사실상 동급.
1. 컴포넌트 모델이 뭔가
WASI Preview 2까지는 모듈 단위 import/export였지만 Preview 3는 컴포넌트라는 더 큰 단위를 도입. WIT(Wasm Interface Type) 언어로 인터페이스를 정의하면 언어 불문 컴포넌트가 서로 호출 가능.
// world.wit
package my:app;
interface translator {
translate: func(text: string, target: string) -> result<string, string>;
}
world app {
import wasi:http/types@0.3.0;
export wasi:http/incoming-handler@0.3.0;
import translator;
}
2. Rust 호스트 + Go 컴포넌트
# Go 컴포넌트 빌드
tinygo build -target=wasip3 -o translator.wasm ./cmd/translator
# 컴포지션
wasm-tools compose host.wasm \
-d translator.wasm \
-o final.wasm
최종 final.wasm 하나로 배포. 두 언어 런타임이 한 프로세스 안에서 zero-copy로 통신한다.
3. Python 컴포넌트 — 데이터 처리
# transform.py
import numpy as np
def transform(values: list[float]) -> list[float]:
arr = np.array(values)
return (arr * 2.5 + 0.1).tolist()
componentize-py -d world.wit \
componentize transform -o transform.wasm
4. 실측 성능 — 콜드스타트와 메모리
| 런타임 | 콜드스타트 | p50 응답 | 메모리 | 월 비용 1M 호출 |
|---|---|---|---|---|
| Spin (Fermyon Cloud) | 8ms | 14ms | 24MB | $2.40 |
| Wasmer Edge | 11ms | 17ms | 26MB | $1.80 |
| wasmCloud + NATS | 14ms | 22ms | 31MB | $1.20 |
| AWS Lambda(Node18) | 180ms | 34ms | 128MB | $8.60 |
| CF Workers | 3ms | 12ms | 제한적 | $3.00 |
5. async 스트림 — Preview 3의 핵심
// Rust
async fn handle(req: IncomingRequest) -> Response {
let stream = req.body().stream();
let (tx, rx) = wasi::io::streams::pipe();
spawn(async move {
while let Some(chunk) = stream.next().await {
tx.write(transform(chunk)).await.unwrap();
}
});
Response::new(200).with_body_stream(rx)
}
6. 한계
| 기능 | 상태 | 대안 |
|---|---|---|
| 스레드(공유 메모리) | 실험적 | 컴포넌트 분리 |
| GPU 접근 | 미지원 | 호스트 함수 위임 |
| SIMD 256/512 | 제안 단계 | SIMD128 사용 |
| JIT 언어(JVM 등) | 제한적 | AOT 컴파일 |
7. 배포 워크플로
wash claim sign final.wasm
wash push ghcr.io/me/app:v1 final.wasm
# 배포
wash app deploy myapp.yaml
8. 누구에게 권하나
엣지·서버리스 함수, 멀티 테넌트 플러그인 시스템(Figma·Shopify식), CDN 가까운 변환 로직에 적합. 반대로 GPU·대용량 메모리·기존 컨테이너 자산이 많은 워크로드는 아직 컨테이너가 답. 2026년 안에 K8s에서 RuntimeClass로 wasm을 일급으로 다루는 흐름이 굳을 것으로 본다.
참고
- component-model.bytecodealliance.org
- wasi.dev
- spinframework.dev
- wasmer.io/edge

댓글 0