Przyszło nam się mierzyć, nie tylko z ograniczeniami natury biznesowej czy technicznej, ale także prawnej, związanej ze specyfiką sektora bankowego. Warto też zaznaczyć, że zamawiający zatrudnia zespół wysokiej klasy specjalistów z praktycznie każdej dziedziny IT, który na bieżąco weryfikował i testował nasze propozycje.
Technologiczne aspekty projektu musiały wpisywać się w ogólnie przyjętą przez klienta strategię rozwoju systemów teleinformatycznych rozbudowy aplikacji. Zaczynaliśmy pracę, mając postawione jasne technologiczne i biznesowe cele, jakie należało osiągnąć. Wśród najważniejszych technologicznych założeń należy wymienić:
Realizując projekt widzieliśmy już jakie są preferencje naszego klienta co do technologii czy kierunku, w którym chciałby rozwijać swoją infrastrukturę, co nie znaczy, że skupiliśmy się jedynie na dopracowaniu jego wizji. Wręcz przeciwnie! Każdy z pomysłów był poddawany gruntownej analizie i uzupełnieniom o dodatkowe propozycje.
W zaproponowanym rozwiązaniu platformę compute dla aplikacji stanowią kontenery, a dokładniej klastry Kubernetes. Nie są one jednak uruchamiane natywnie na poszczególnych hostach, lecz wewnątrz maszyn wirtualnych. Rozwiązanie takie pozwala łączyć ze sobą pozytywne aspekty zarówno wirtualizacji jak i konteneryzacji. Ważnym aspektem w tym projekcie jest także zapewnienie zgodności z uwarunkowaniami prawnymi dla sektora finansowego w Polsce. Wirtualizacja pozwala na stałe przepisanie zasobów maszyny wirtualnej do konkretnej aplikacji, projektu czy departamentu. Zapewniona jest w ten sposób, izolacja zasobów sprzętowych dla każdej aplikacji, w każdym z centrów przetwarzania danych, w każdej ze stref bezpieczeństwa. Mechanizmy te są dobrze znane, udokumentowane i akceptowane przez instytucje nadzoru finansowego, zatem ich wykorzystanie stanowi podstawę bezpieczeństwa i pozytywnego przejścia niezbędnych audytów. Jednocześnie wykorzystywane są wszystkie zalety mikrosegmentacji, które daje konteneryzacja.
Jako system orkiestracji zapewnia on możliwość wdrażania aplikacji w oparciu o pody, serwisy (w tym mikroserwisy) i całe deploymenty. Zapewnia on zaawansowany mechanizm skalowania i wysoką dostępnością aplikacji na nim uruchomionych. Nie bez znaczenia jest też fakt, że jest to natywnie dostępny system Konteneryzacji we wszystkich wiodących usługach chmury publicznej – Azure Kubernetes Services (AKS) czy Amazon Elastic Kubernetes Service (EKS).
W opisywanym projekcie, ze względów bezpieczeństwa przyjęto założenie, że klastry Kubernetes nie są rozciągane pomiędzy centrami danych. Jeżeli aplikacja logicznie ma być pomiędzy nie rozciągnięta, to powoływane są niezależne klastry zarówno w każdym z centrów przetwarzania danych czy chmurze publicznej. Jednocześnie w przyszłości możliwe jest rozciągnięcie klastrów, gdyby wymagania biznesowe i techniczne uległy zmianie.
Polega on na tym, że po powołaniu do życia infrastruktury, zarówno zwirtualizowanej, jak i skonteneryzowanej, nie dokonuje się ich modyfikacji. Oznacza to, że w przypadku awarii lub aktualizacji, uruchamia się nowe klastry Kubernetes , a następnie usuwa stare. Takie podejście pozwala na wprowadzenie modelu opisywanego jako Chaos Engineering, w tym, przede wszystkim, metodologii Choas Monkey i Chaos Testing.
Planowana platforma konteneryzacyjna, miała być oparta o infrastrukturę zapewniającą odpowiednią redundancję warstwy kontrolnej (control plane).
W przygotowanej koncepcji, każdy klaster Kubernetes zarządzany jest przez minimum trzy węzły z zachowaniem zasady nieparzystości węzłów zarządzających, celem zapewnienia kworum. Samo etcd, czyli kluczowy komponent pozwalający zachować stan klastra oraz jego konfigurację, skonfigurowany zostanie w modelu Stacked etcd, w którym kontener obsługujący magazyn etcd uruchamiamy jest w każdym z węzłów tworzących warstwę control-plane. Rozwiązanie takie zmniejsza liczbę węzłów, którymi trzeba zarządzać w ramach klastra. Wymaga to jednak synchronizacji danych pomiędzy węzami, aby zapewnić spójność przechowywanych informacji. Z punktu widzenia wymogów bezpieczeństwa jest to jednak rozwiązanie preferowane – przestrzeń dyskowa dla etcd zawiera się w przestrzeni dyskowej wskazanego węzła klastra.
Budowa infrastruktury w oparciu o Kubernetes bardzo dobrze wpisuje się w strategię naszego klienta pozwalającą na tworzenie katalogu usług w swojej infrastrukturze, czyli zestawu klocków, z których następnie budowane są aplikacje oraz powiązanych z nimi zestawu niezbędnych działań konfiguracyjnych na infrastrukturze teleinformatycznej. Klocki te, w dalszej przyszłości, pozwalają na elastyczne alokowanie zasobów, odporność na awarię, a także szacowanie kosztów, które muszą zostać poniesione na wdrożenie i utrzymanie aplikacji.
Zarówno wirtualizacja jak i konteneryzacja niosą za sobą konkretne wymagania dotyczące rozwiązań storage.
W realizowanym projekcie rekomendowaliśmy użycie oprogramowania NetApp Trident.
Jest to rozwiązanie open-source zaprojektowane od podstaw, aby pomóc spełniać specyficzne wymagania dotyczące trwałości aplikacji kontenerowych. Trident dostarcza nie tyle dostęp do przestrzeni dyskowej, co interfejs tłumaczący skomplikowane wymagania kontenerów i działających w nich aplikacji, w zautomatyzowaną i zorganizowaną odpowiedź infrastruktury. Co ważne, oprogramowanie obsługuje systemy do zarządzania danymi znane z lokalnych centrów przetwarzania danych, takie jak ONTAP, Element czy SANtricity, ale także usługę Azure NetApp Files, czy Cloud Volumes w AWS. Integracja z Kuberetes realizowana jest przez odpowiedni plugin.
Kubernetes na żądanie aplikacji zdefiniowane w PVC przypisuje jej PV, który pasuje do określonych w PVC wymagań. Sama pamięć typu storage nie jest podłączona do węzłów Kubernetes aż do momentu zainicjowania poda. Po utworzeniu instancji kontenera na hoście kubelet, montuje urządzenia magazynujące bezpośrednio w kontenerze.
NetApp ma dodatkową zaletę – pozwala na uruchomienie wirtualnej instancji macierzy w chmurze publicznej, umożliwiając tym samym, proste przenoszenie danych pomiędzy lokalnymi instalacjami w centrum przetwarzania danych a cloudem.
Administrator uzyskuje jednolite narzędzie do zarządzania zasobami dyskowymi dla wszystkich środowisk. Takie rozwiązanie wpisuje się nie tylko w wymagania wysokiej dostępności, lecz także długoterminowej strategii tworzenia hybrydowych rozwiązań opartych, zarówno o lokalne centra przetwarzania danych, jak i chmurę publiczną.
Świat aplikacji niewątpliwie zmierza w kierunku mikrosegmentacji realizowanej, między innymi poprzez konteneryzację. Infrastruktura teleinformatyczna musi podążać za tymi zmianami. Aplikacja nie działa przecież zawieszona w próżni, a samej infrastruktury nie budujemy by stała bezczynnie. Konteneryzacja stawia przed architektami i administratorami zupełnie nowe spektrum wyzwań.
W tym artykule ledwo liznęliśmy czubka góry lodowej.