Każde wdrożenie e-commerce jest systemem naczyń połączonych, działających w ramach różnych aplikacji. Z biegiem lat liczba dostępnych rozwiązań wzrasta lawinowo, a wraz z nimi rosną wyzwania stawiane przed firmami hostingowymi i software'owymi. Zapewnienie klientowi dostępu do najnowszych technologii jest kluczowe dla rozwoju jego biznesu. Jest to także czynnik przyciągający najlepszych pracowników. Jak korzystać z tych możliwości bez wpływu na stabilność całego procesu wytwarzania oprogramowania? Jak kierować zmianami i ich wdrożeniem? Na pomoc przychodzi kapitan Kubernetes!
Przesiadka z jachtów na statek pasażerski
W wieloletniej historii firmy oferowane przez nas rozwiązania hostingowe były różne - serwery współdzielone funkcjonowały równolegle z serwerami dedykowanymi, a te z kolei wypierane były przez rozwiązania typu cloud. Codzienna administracja tego typu hostingiem nie jest kłopotliwa, jednak ma pewne ograniczenia związane, na przykład, z wersjonowaniem konfiguracji. Mozolnie wdrażane usługi nie mogły być łatwo i szybko wycofane w przypadku wykrycia awarii. Utrudnione było również diagnozowanie pojawiających się problemów, ze względu na ograniczenia dostępowe. Większość takich awarii musiała być diagnozowana i naprawiana przez dedykowanych administratorów. Hamowało to automatyzację procesów w firmie, szczególnie procesów wytwarzania oprogramowania, a przede wszystkim jego dostarczanie na produkcję (CI/CD).
Dział R&D odpowiedzialny za analizę tych problemów postawił sprawę jasno - potrzebujemy pełnej konteneryzacji naszych systemów, potrzebujemy uniwersalnego i elastycznego podejścia do konfiguracji, chcemy mieć nieograniczone możliwości technologiczne. Wszystko wskazywało na to, że nasze potrzeby może zaspokoić rozwijana przez Google platforma Kubernetes.
Co Kubernetes może dla Ciebie zrobić?
„Użytkownicy oczekują od współczesnych serwisów internetowych dostępności non-stop, a deweloperzy chcą móc instalować nowe wersje swoich serwisów kilka razy dziennie. Używając kontenerów można przygotowywać oprogramowanie w taki sposób, aby mogło być instalowane i aktualizowane łatwo, nie powodując żadnych przestojów. Kubernetes pomaga uruchamiać te aplikacje w kontenerach tam gdzie chcesz i kiedy chcesz. Potrafi znajdować niezbędne zasoby i narzędzia wymagane do ich pracy. Kubernetes może działać w środowiskach produkcyjnych, jest otwartym oprogramowaniem zaprojektowanym z wykorzystaniem nagromadzonego przez Google doświadczenia w zarządzaniu kontenerami, w połączeniu z najcenniejszymi ideami społeczności."
https://kubernetes.io/
Budowa statku i inwestycje
Kubernetes był nowością dla wszystkich. Pierwsze kroki stawialiśmy tworząc małe rozwiązania proof-of-concept, które miały usprawnić wytwarzane przez nas oprogramowanie. Nie obyło się jednak bez problemów, a koncepcje były wielokrotnie zmieniane. Głównym priorytetem było wprowadzenie do firmy praktyk CI/CD oraz przyspieszenie lokalnego uruchamiania projektów.
„Fascynacja Dockerem wynikała stąd, że był on postrzegany jak swego rodzaju plik 'exe'. To znaczy, że mam swoją aplikację, która zawiera w sobie wszystko czego potrzebuje do życia. Można to było łatwo przenosić, odtwarzać, izolować. Kubernetes jest tego naturalnym rozwinięciem. Rozbudowane sklepy internetowe to nie tylko php, mysql i dane. To kilkanaście/kilkadziesiąt różnych zależności softwarowych, w różnych wersjach, z różną replikacją i ruchem pomiędzy nimi”.
Michał Grabowski
Merce.com
Podczas prac okazało się, że należy podjąć konkretne biznesowe decyzje, ponieważ dotychczasowe efekty nie spełniały naszych oczekiwań. Pojawiły się problemy z wydajnością, dostępem do danych oraz ich przechowywaniem, a niestandardowe rozwiązania w projektach wydawały się niemożliwe do wdrożenia. Postawienie na półśrodki spowodowałyby, że w tym artykule pisalibyśmy o niekończącej się historii. Poszliśmy na całość - decyzją biznesu było zbudowanie i hostowanie własnych produkcyjnych klastrów Kubernetes i przeniesienie tam naszych najnowszych projektów.
Wiązało się to z dużą inwestycją w zasoby ludzkie i sprzętowe. Dział R&D poświęcił tysiące godzin na rozwój klastrów i automatyzację wszystkich procesów. Patrząc wstecz, chyba nikt z nas nie spodziewał się takiego nakładu pracy i tak dużych efektów. Dziś nasz programista jest w stanie postawić skomplikowany projekt w ciągu minut. Jego kod wysyłany jest na testowy klaster Kubernetesa i tam testowany na wiele sposobów. Decyzją i kliknięciem Project Managera jest uruchamiany na serwerze stagingowym lub produkcyjnym, gdzie wymieniane są odpowiednie wersje oprogramowania. Całość jest w pełni skalowalna (automatycznie i manualnie) oraz projektowana z myślą o wysokiej dostępności.
Załoga na pokład!
Klienci i programiści 'merce mają do dyspozycji kilka klastrów Kubernetes, na które składa się aktualnie około 100 node'ów. Uruchamiamy na nich sukcesywnie nowe projekty, testujemy i wprowadzamy kolejne wersje oprogramowania. Wyzwania, takie jak podniesienie wersji MySQL, przepięcie Solr w tryb cloud, dodanie globalnego monitoringu czy przygotowanie zasobów na zwiększony ruch, nie są dla nas problemem. Dla klientów to gwarancja spokoju i stabilności. Ciągle planujemy dalsze udoskonalenia naszej infrastruktury, skupiając się na wydajności poszczególnych mikroserwisów. Ważny jest dla nas zerowy (lub bliski zera) downtime poszczególnych usług. Czuwa nad tym wszystkim nasz wyspecjalizowany i dedykowany dział pracowników, który łączy kompetencje programistyczne, sieciowe i DevOpsowe. Jesteśmy gotowi na nieznane, z kursem obranym na rozwój!
Czy Kubernetes jest narzędziem "dla wszystkich"?
Patrząc z perspektywy klienta - zdecydowanie tak. Jeśli chodzi o firmy softwarowo-wdrożeniowe - niekoniecznie. Dla firm z niezaawansowanymi projektami może się to okazać swego rodzaju 'overkillem', generującym duże koszty. Dla dużych firm Kubernetes wyznaczył pewien trend, który z pewnością zostanie utrzymany przez najbliższe lata. Wszystko zależy od stopnia skomplikowania produktu i wizji na przyszłość. Należy też wziąć pod uwagę ilość dostępnych specjalistów na rynku - a tych jest niewielu. Pewien nakład pracy można zastąpić korzystając z gotowych rozwiązań przygotowanych przez hostingodawców, takich jak Amazon czy OVH. Wiąże się to jednak z dodatkowymi kosztami dla klientów końcowych.
Nasze case study pokazuje, że inwestycje w prace badawczo-rozwojowe są kluczowe dla pozycji na rynku IT. Kubernetes nie tylko jest rezultatem tych prac, po czasie stał się ich fundamentem i kluczowym narzędziem do wprowadzania nowości technologicznych.
Janusz Maciejewski
DevOps ‘merce