- Spin은 서버리스 WebAssembly(Wasm) 애플리케이션을 어디서나 구축, 배포 및 실행할 수 있는 오픈 소스 개발 도구
- 작은 크기의 이식 가능한 바이너리, 낮은 시작 지연 시간, 높은 처리량을 제공하여 다양한 환경에서 애플리케이션을 실행할 수 있는 장점이 있음
Spin 3.0 하이라이트
- Wasm의 경량성과 빠른 시작 시간, 안전성 덕분에 서버 측 사용 사례에 적합하며, 컨테이너가 느리거나 큰 경우, 샌드박싱이 필수적인 경우, 서버리스 사용 사례에 유리
- WebAssembly Component Model은 다양한 프로그래밍 언어 간의 상호 운용성을 표준화하여 개발자에게 더 많은 가능성을 제공
- 컴포넌트 의존성 - 다중 언어 프로그래밍의 용이함
- Spin 3.0은 Rust로 작성된 라이브러리를 JavaScript 애플리케이션에서 의존성으로 사용하는 등의 개발 워크플로우를 도입함.
- OCI 레지스트리에서 컴포넌트를 저장, 검색, 가져올 수 있어 npm/NuGet/crates.io와 같은 경험을 제공함.
- 선택적 배포 - 하나로 빌드하고 선택적으로 배포
- Spin 애플리케이션의 일부 컴포넌트를 로컬 또는 SpinKube를 통해 실행할 수 있음.
-
spin up --component-id
플래그를 사용하여 실행할 컴포넌트를 지정할 수 있으며, 플랫폼 엔지니어가 특정 요구 사항을 충족하는 노드에서 선택적으로 컴포넌트를 실행할 수 있는 새로운 시나리오를 제공함.
- WASI 표준과의 깊은 통합
- Spin 프로젝트는 WASI API에 기여하고 이를 Spin에 통합하여 커뮤니티의 요구를 충족하고자 함.
- WASI Key-Value 및 WASI Config API가 Spin에서 공식적으로 지원됨.
- OpenTelemetry(OTel) 통합 - 관측 가능성 포함
- Spin 3.0은 OpenTelemetry(OTel) 관측 가능성을 공식적으로 지원하여 Grafana, Jaegar, Prometheus와 같은 도구와 통합할 수 있음.
-
spin otel
플러그인을 통해 관측 가능성 스택 설정이 용이함.
- Spin Factors - 주요 런타임 리팩터링
- Spin의 내부 구조를 Spin Factors라는 기능으로 대대적으로 리팩터링하여 모듈성을 강화함.
- Spin 런타임을 확장하는 것이 더 쉬워졌으며, 프로젝트를 포크해야 하지만 가능함.
- 데모 - Spin 3.0 활용
- Spin 3.0의 컴포넌트 의존성 기능을 활용하여 Rust로 이미지 변환 컴포넌트를 구축하고, 이를 JavaScript/TypeScript 컴포넌트에서 의존성으로 사용하는 예시를 제공함.
-
spin deps
플러그인을 사용하여 OCI 레지스트리에 컴포넌트를 게시하고, 다른 언어로 작성된 Wasm 컴포넌트에서 이를 소비할 수 있음.
- 생태계 현황
- 여러 CLI 플러그인과 트리거 플러그인이 등장하고 있으며, SpinKube 프로젝트의 새로운 릴리스도 있음.
- 선택적 배포를 포함한 새로운 기능이 추가됨.