← Wszystkie wpisy

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.