WebAssembly, o Wasm, és una tecnologia que ha generat diverses opinions a la comunitat tecnològica. Alguns la consideren una alternativa a JavaScript, altres un sistema millorat d'execució al núvol, i altres un reemplaçament de Docker. No obstant, en aquest article ens centrarem en el seu ús dins de Kubernetes.
WebAssembly no és un llenguatge de programació com a tal, sinó un format de codi binari que pot ser generat a partir de llenguatges com Go o Rust. En aquest cas, hem optat per Rust per dur a terme la implementació d'un servidor HTTP que simula un endpoint de l'API de proves HTTPBin.
s van avaluar tres enfocaments diferents:
- Compilació tradicional de Rust a codi natiu
- Compilació a WebAssembly utilitzant un runtime incrustat com WasmEdge
- Compilació a WebAssembly utilitzant un runtime extern
Un dels principals motius pels quals WebAssembly destaca és la seva seguretat. A diferència d'executables tradicionals, Wasm no té accés directe al sistema host, cosa que el fa més segur. No obstant, per executar un servidor HTTP, cal obrir sockets de xarxa, una cosa que Wasm no pot fer directament. Aquí és on entra en joc la WebAssembly System Interface (WASI), que proporciona accessos estandarditzats per a operacions com accés al sistema de fitxers, xarxes i generació de nombres aleatoris.
Per executar WebAssembly a Kubernetes, s'ha de disposar d'un runtime compatible. Entre els més populars es troben Wasmtime, Wasmer i WasmEdge, optant per aquest últim a causa del seu enfocament al núvol. No obstant, executar WebAssembly en contenidors requereix configurar Kubernetes perquè pugui gestionar aquest tipus de càrregues de treball mitjançant un 'shim' que actua com a pont entre containerd i el runtime de Wasm.
Per a això, es van realitzar les següents configuracions:
- Instal·lació del runtime WasmEdge en un entorn basat en minikube
- Configuració d'un nou runtime a containerd
- Creació de pods i serveis capaços d'executar WebAssembly a Kubernetes
Els resultats van demostrar que els contenidors construïts amb WebAssembly són considerablement més lleugers en comparació amb imatges tradicionals. Mentre una imatge nativa tenia una mida de 8.71 MB, la versió basada en WebAssembly pesava només 1.15 MB. Aquesta reducció significativa de la mida té beneficis en temps de desplegament i seguretat.
A Q2BSTUDIO, empresa especialitzada en desenvolupament i serveis tecnològics, explorem constantment noves tecnologies per optimitzar implementacions al núvol i millorar la seguretat i eficiència dels nostres sistemes. WebAssembly representa un avenç important en la manera com s'executen aplicacions en entorns moderns, i la seva integració amb Kubernetes obre noves oportunitats per al desenvolupament de solucions escalables, segures i d'alt rendiment.
El futur de WebAssembly en ambients de producció encara té desafiaments, principalment en termes de suport natiu per part de proveïdors d'infraestructura al núvol. No obstant, a mesura que es continuïn integrant millores en els runtimes i la compatibilitat amb Kubernetes avanci, WebAssembly podria consolidar-se com una solució clau per millorar la seguretat i eficiència en l'execució d'aplicacions al núvol.





