Amazon è una delle compagnie più attive nel settore dei servizi di cloud computing. Il tuo team di ingeneri sviluppa da anni soluzioni per il Serverless Computing ovvero quella categoria di cloud computing service che fornisce una piattaforma per la gestione dello sviluppo e della distribuzione di servizi ed applicazioni.
I sistemi serverless, o FaaS (Function as a service), si occupano di eseguire funzionalità in risposta a determinati eventi. Il gestore del servizio imposta delle regole da attivare ed eseguire a seguito di eventi, esterni o derivati da comportamenti dell’utente, come i click del mouse. È dunque possibile creare delle regole e delle azioni, testarle, connetterle con altre azioni ed eseguire il debug di queste ultime cosi da creare dei protocolli e generare servizi e applicazioni che rispondano a tali regole per adattarsi ai bisogni dell’utente.
Un sistema serverless è tale quando il network di questi servizi non è incentrato su dei server, ma viene dislocato tra i vari utenti e il lavoro di gestione del network viene eseguito dagli stessi utilizzatori.
Ad esempio il servizio di AWS Lambda si occupa di fornire una piattaforma in cui eseguire il proprio codice senza la necessità di mantenere o gestire un server. Si pagano solo le risorse effettivamente utilizzate. Con Lambda, si può eseguire il codice praticamente per qualsiasi tipo di applicazione o servizio di back-end, il tutto senza costi di amministrazione e senza problemi di gestione dell'infrastruttura server. Basta solo caricare il codice e Lambda si prende cura di tutto ciò che è necessario per eseguire e scalare l'applicazione o il servizio.
Con gli anni gli ingegneri di Amazon si sono resi conto che i sistemi Faas sono li per restare e che tale tecnologia diventerà presto uno standard. Tanto che è stato anche lanciato un servizio correlato, AWS Fargate, un engine di elaborazione per Amazon ECS che permette di eseguire sistemi di container senza dover gestire server o cluster. Dunque, dopo aver coperto la richiesta di un sistema di gestione dei container per i sistemi serverless, adesso il team di Amazon ha rilasciato una nuova tecnologia dedicata invece alla virtualizzazione su tali sistemi: Firecracker.
Firecracker sfrutta KVM (Kernel-based Virtual Machine), un'infrastruttura di virtualizzazione del kernel Linux. Tramite Firecracker è possibile lanciare ed eseguire micro-virtual machines (microVMs) in un ambiente virtualizzato e in una frazione di secondo. Questo sistema gode degli stessi vantaggi di sicurezza e della workload isolation presenti nelle macchine virtuali tradizionali, ma può sfruttare le risorse in modo simile a quanto avviene con i sistemi di container.
Il progetto è completamente open source, dunque il suo codice può essere facilmente implementato su altri progetti. Per assicurare performance elevate e un basso overhead, Firecracker infatti consuma mediamente 5 MiB di memoria per ogni MicroVM, gli sviluppatori hanno scelto di realizzarlo completamente in Rust.
Ecco le altre caratteristiche di Firecracker in breve:
- Simple Guest Model: i guest sono stati implementati all'interno di una semplice virtualized device model cosi da minimizzare la superficie d'attacco.
- Process Jail: i processi di Firecracker sono imprigionati tramite cgroups e seccomp BPF, dunque hanno accesso ad un ristretto numero di system call.
- Static Linking: il processo di Firecracker è statically linked e può essere avviato da un jailer per assicurare che l'ambiente di host sia sicuro.
Via Amazon AWS