Migracja platformy
Kubernetes, modne hasło?
Po latach analizowania naszej platformy, studiowania praktyk Site Reliability Engineering od Google i eksperymentowania z ich narzędziami zdecydowaliśmy, że Kubernetes, oparty na architekturze dystrybucji Borg od Google, najlepiej pasuje do kolejnej iteracji naszej platformy Lighthouse.
Czym jest Kubernetes?
Kubernetes to technologia open-source oparta na wewnętrznej architekturze Borg od Google, którą wykorzystywali wewnętrznie przez wiele lat, a później udostępnili publicznie. To technologia z najwyższej półki, która wykorzystuje moc orkiestracji kontenerów.
Orkiestracja kontenerów to pojemne pojęcie, ale choć jest złożone, nie jest trudne do zrozumienia.
Zacznijmy od elementów składowych:
Kontener zawiera wyłącznie oprogramowanie i zależności, których potrzebują Państwo, by uruchomić swoją aplikację. Oznacza to, że oprogramowanie działa we własnym środowisku bez potrzeby pobierania czy importowania zewnętrznych zależności. Przypomina to maszynę wirtualną, z tą różnicą, że zawiera tylko to, czego potrzebuje, a przez to jest lekkie i proste.
W skrócie: jeśli działa na moim komputerze, to działa i na Państwa komputerze, bo kontener dostarcza niezależnie wszystko, co potrzebne.
Gdzie uruchamiamy nasze kontenery?
Zazwyczaj kontenery potrzebują własnych środowisk, w których działają. Jeśli tworzą Państwo oprogramowanie na jednej maszynie, aplikacja zwykle będzie działać w czymś takim jak Docker. Jeśli jednak chcą Państwo uruchamiać wiele obrazów na wielu węzłach lub w klastrze, wówczas Kubernetes jest preferowaną opcją.
Kubernetes jest najbardziej elastyczną opcją, bo cała konfiguracja (nie tylko kontenery), środowisko, konfiguracje aplikacji i konfiguracje sieci mogą być zdefiniowane jako kod.
Dlaczego to dobrze?
Przechowując nasze konfiguracje w kodzie, możemy mieć jedno źródło prawdy i trzymać konfiguracje w Git. Pozwala nam to wdrażać zmiany znacznie łatwiej, bezpieczniej oraz z większą szybkością i efektywnością.
Daje nam to wiele korzyści:
Skalowalność: możemy łatwo skalować w górę, a nasze obciążenie może być rozłożone na wiele węzłów, co poprawi wydajność
Dostępność: wiąże się to również z niezawodnością, bo jeśli jeden pod lub kontener nie działa albo węzeł padnie, to pozostają inne kontenery, które przejmą obciążenie
Prostota: świetnie wpisuje się w nasz model pracy oparty na extreme programming i continuous delivery, który skupia się na małych, iteracyjnych zmianach
Kontrola: posiadanie wszystkiego w kodzie ułatwia kontrolowanie tego, jak i gdzie to działa
Obserwowalność: zyskujemy więcej wglądu w to, jak i gdzie to działa, a ponieważ naszą domeną jest dostarczanie wglądów, gromadzone informacje trafiają do naszego produktu i wzbogacają informacje, które dostarczamy
Technologia: ponieważ mamy lepszy dostęp i wszystko jest uproszczone, łatwiej będzie nam integrować się z nowymi przełomowymi technologiami, takimi jak uczenie maszynowe, big data, AI i cokolwiek jeszcze nadejdzie.
Nie jest to wyczerpujące, ale w niewielki sposób ilustruje moc, którą udostępni przyjęcie tej technologii, gdy wspólnie zmierzamy ku bardziej niezawodnej przyszłości.