[Cloud Nord] WASM et Faas
Câest quoi un Faas ? Un outil qui vous permet dâexĂ©cuter des fonctions sur un systĂšme serverless. Mais câest quoi le serverless ? Un moyen dâexĂ©cuter du code sans se soucier de lâenvironnement dâexĂ©cution, et en nâutilisant les ressources que quand câest nĂ©cessaire. Les deux ne sont pas identiques, mais lâun permet lâautre.
Tout ça se place dans une vaste gamme de modĂšles dâexĂ©cution (On Prem, IaaS, PaaS, FaaS, SaaS). Dans tous les cas, lâobjectif est de se focaliser sur la valeur mĂ©tier plutĂŽt que sur lâinfra. Un bon FaaS propose des caractĂ©ristiques clĂ©s. Des avantages (pas de serveur, lâautoscaling, payement Ă la consommation, haute disponibilitĂ©, polyglote avec des capacitĂ©s dâitĂ©ration rapide et le support dâĂ©vĂ©nements) et des inconvĂ©nients (le dĂ©marrage Ă froid, le temps dâexĂ©cution limitĂ©, le cĂŽtĂ© stateless, la complexitĂ© du debug, le vendor lock-in, lâorchestration complexe).
Et pour Laurent, une bonne plateforme a le temps de dĂ©marrage le plus court possible, sâintĂšgre dans le systĂšme existant et fournit la sĂ©curitĂ© et le scale to zero.
En 2008, vous aviez plusieurs mĂ©thodes pour sĂ©parer vos process : la virtualisation, la conteneurisation, ou mĂȘme mettre vos process dans la mĂȘme machine. Le dernier est Ă©videment moins sĂ©curisĂ©.
Aujourdâhui, vous pouvez faire de la microvirtualisation (comme AMazon Firecracker), de la conteneurisation (comme gVisor), ou mĂȘme du WebAssembly.
Donc WebAssembly, câest bien. Mais pourquoi ne pas en faire tout le temps ?
Sans doute parce que la communication avec lâextĂ©rieur (dans la mĂȘme machine) est vraiment pĂ©nible (on communiquait initiallement avec des tableaux dâoctets). Bon, il y a eu des tentatives (notament chez wasmCloud), mais la plus prometteuse est wasip2 qui fournit un IDL standard (dĂ©fini par la bytecode alliance) et qui permet donc une interropĂ©rabilitĂ© correcte entre composants WASM. Dans les clients de Couchbase, il y a American Express qui dĂ©ploie du WASM Ă lâĂ©chelle, et qui a inspirĂ© la dĂ©mo de Laurent. wasCloud (qui hĂ©bergera la dĂ©mo de Laurent) a bluffĂ© Laurent, en particulier grĂące Ă NATS (une variante de Kafka qui apporte des propriĂ©tĂ©s hyper-intĂ©ressantes). Mais Laurent prend quand mĂȘme le temps de nous prĂ©senter toute lâarchitecture de wasmCloud. Cette plateforme vous permet dâavoir des composants standards hĂ©bergĂ©s potentiellement hĂ©bergĂ©s dans des environnements fournissant des capacitĂ©s diffĂ©rentes. Puisquâon parlait de NATS, celui-ci fournit une galaxie de modes dâinterconnexion entre providers, avec mĂȘme des capacitĂ©s de dĂ©connexion.
Bon alors comment ça marche ?
Comme vous avez des capacitĂ©s qui sont implĂ©mentables diffĂ©remment, au moment de la dĂ©finition de votre application, vous devez dĂ©finir les capacitĂ©s dont vous avez besoin pour pouvoir les intĂ©grer correctement dans votre systĂšme. wasmCloud fournit wash qui va vous permettre dâautomatiser le tĂ©lĂ©chargement des composants et capacitĂ©s dĂ©diĂ©es pour que vous puissiez utiliser wasmCloud comme k8s.
Câest le moment de la dĂ©mo (qui ne dĂ©marre pas forcĂ©ment bien, la faute Ă un environnement ⊠complexe). Mais une fois que la dĂ©mo dĂ©marre, on dĂ©couvre un code Rust (parce que seuls les langages qui compilent bien avec llvm se portent bien en WASM) particulier : on ne peut pas y utiliser de dĂ©pendance qui ne soit pas compilĂ© pour WASM; le code est donc extrĂȘmement bas niveau.
Par contre, une fois que ça marche, câest terriblement rapide.
Conclusion: Jâavais vu des talks il y a quelques annĂ©es sur WASM, qui paraissait intĂ©ressant, sans pour autant que je puisse comprendre Ă quoi ça pouvait servir. Avec cette prĂ©sentation, je comprends que WASI permet de faire des FAAS efficaces, mais il ne faut pas se leurrer, le vrai usage est trĂšs spĂ©cifique.
#cloudnord #conférence #wasm