Dobre pytanie! Pracuję w zespole ZeroVM i mam nadzieję, że mogę pomóc wyjaśnić sprawę!
Czy ZeroVM zapewnia kontener podobny do Dockera?
Nie, nie bardzo. Docker używa LXC i innych funkcji jądra w celu zapewnienia środowiska piaskownicy. ZeroVM działa całkowicie w przestrzeni użytkownika i izoluje pojedynczą aplikację.
W skrócie, ZeroVM działa najpierw poprzez sprawdzenie poprawności aplikacji do uruchomienia, a następnie po prostu jej wykonanie. Po uruchomieniu aplikacja działa w zasadzie bez dodatkowego obciążenia - za nią nie ma maszyny wirtualnej.
Aby sprawdzić poprawność aplikacji, należy ją skompilować krzyżowo w specjalnej formie kodu maszynowego x86. Ta specjalna forma ma fajną właściwość, którą można zweryfikować statycznie jako „bezpieczną”. Między innymi „bezpieczny” oznacza, że kod nie przeskakuje na adresy poza określonym segmentem pamięci dostarczanym przez ZeroVM. Program nie może również wywoływać normalnych wywołań systemowych, może jedynie wywoływać bardzo wąski interfejs syscall zapewniany przez ZeroVM. Ta walidacja pochodzi z projektu klienta natywnego Google .
Jak korzystać z ZeroVM do uruchamiania Wordpress? Jakie korzyści to zapewni?
Zasadniczo można kompilować krzyżowo program C, którym jest interpreter PHP. ZeroVM mógłby wtedy uruchomić interpreter PHP w piaskownicy i nakarmić go plikami PHP, które tworzą WordPress. ZeroVM zapewnia system plików tylko do odczytu w pamięci, który można wykorzystać do odczytu bazy danych SQLite. To dałoby ci stronę WordPress tylko do odczytu - niezbyt ekscytującą :-)
Jednak, jak widzę, nie jest to główny przypadek użycia ZerovM. Istniejące aplikacje obciążające bazę danych muszą zostać przepisane, aby można je było używać z ZeroVM. ZeroVM jest bardziej przeznaczony do systemów o dużej skalowalności, w których chcesz przetwarzać wiele elementów danych równolegle.
Wyobraź sobie, że masz 1 000 000 wiadomości e-mail, które musisz przeszukać. Wiadomości e-mail są przechowywane w magazynie blokowym, takim jak OpenStack Swift lub Amazon S3 . Oznacza to, że pliki fizyczne są przechowywane na pewnej liczbie serwerów pamięci. Tradycyjnie, aby przeszukać całą pocztę, trzeba pobrać całą pocztę do pewnej liczby węzłów obliczeniowych. Dzięki ZeroVM i jego integracji z Swift możesz wysłać kod do danych . Jest to możliwe, ponieważ kod jest mały (niektóre megabajty) w porównaniu do nieporęcznego obrazu maszyny wirtualnej, a także dlatego, że można bezpiecznie wykonywać niezaufany kod w piaskownicy ZeroVM.
Dlatego ZeroVM jest przeznaczony dla wysoce skalowalnych architektur, w których każde żądanie działa na różnych fragmentach danych.
W przypadku witryny WordPress może to oznaczać, że każdy post na blogu należy przechowywać w osobnej części danych i mieć dedykowaną instancję ZeroVM odpowiedzialną za każdy post. Obecnie system plików jest tylko do odczytu, ale planuje się, aby był on do odczytu i zapisu, a instancja ZeroVM odpowiedzialna za dany post na blogu mogłaby wówczas obsługiwać takie komentarze jak komentarze. Potrzebny byłby moduł równoważenia obciążenia z przodu, który byłby w stanie odpowiednio kierować ruchem. Rezultatem jest zupełnie inna architektura niż obecny WordPress, ale bardziej skalowalna. Właściwie wdrożenie tego jest obecnie zadaniem czytelnika.