"WebAssembly는 진정한 Write-Once-Run-Anywhere임"
"2030년이 되면 아무도 쿠버네티스를 기억하지 못하게 될것"
이동성 (Portability)
- 컨테이너는 소프트웨어 개발의 많은 문제를 해결했으며, VM보다 사용성이 뛰어났음
- 하지만 현재 컨테이너는 복잡한 도구와 프로그램-컨테이너-Linux의 강한 결합으로 인해 다루기 번거로워짐
- 개발자는 코드 작성과 기능 배포에 집중하고 싶어 하며, Docker 학습은 방해 요소가 됨
- WebAssembly(WASM)는 이미 일부 영역에서 컨테이너를 대체하고 있으며, "한 번 작성하면 어디서나 실행 가능"한 경험을 제공함
- 여러 언어를 WASM으로 컴파일할 수 있으며, 시스템 인터페이스 부족이 널리 채택되는 것을 막고 있지만, 이는 곧 해결될 것
- 현재 WASM의 주요 한계는 파일 접근, 네트워킹 등의 시스템 인터페이스 부족이지만, 이는 시간이 지나면 해결될 문제임
JVM과의 비교
- WASM이 JVM과 비슷한 "한 번 작성하면 어디서나 실행" 개념을 제공하지만, JVM은 웹 브라우저에서 실행되지 않음
- 웹 브라우저는 중요한 애플리케이션 배포 대상이며, 이로 인해 많은 개발자가 JVM을 피하게 됨
- 최근에는 GraalVM, Kotlin Native, Scala Native 등의 정적 바이너리 컴파일러가 JVM의 대안으로 떠오르는 추세임
마이크로서비스 (Microservices)
- 마이크로서비스 아키텍처에서는 HTTP, RPC 또는 메시지 브로커를 사용하여 서비스를 연결함
- 네트워크 통신의 비용과 신뢰성 문제는 주요 단점이지만, 대부분의 기업은 장점이 더 크다고 판단함
- AWS Lambda와 같은 서버리스 플랫폼이 등장하면서, 마이크로서비스는 개별 함수 단위로 배포할 수 있게 됨
- Cloudflare Workers는 V8 샌드박스 내에서 실행되며, 네트워크 요청 없이 동일한 런타임에서 함수 호출이 가능함
- 이는 마이크로서비스의 개발 장점과 모놀리식 아키텍처의 런타임 성능을 동시에 제공함
- Wasmer 등 다른 업체들도 WASM 기반 솔루션을 개발 중임
WASM의 도입 (Adoption)
- WASM은 아직 초기 기술이지만 빠르게 발전하고 있으며, 지원도 증가하는 추세임
- 현재 모든 환경에서 완벽하게 작동하지는 않지만, Cloudflare와 같은 플랫폼을 통해 미래를 미리 경험할 수 있음
- Python, Ruby, PHP와 같은 동적 언어 사용자라면 WASM의 발전을 기다리면서 Go나 Rust 같은 컴파일 언어를 추가로 학습하는 것이 유리함