1. Wyzwanie

Klient – firma od wielu lat wspierająca zdrowy i aktywny tryb życia pracowników wielu firm w Polsce. Wdrożenie – w roli głównej Keycloak, jako rozwiązanie Single Sign On (SSO) dla środowiska.

2. Zakres prac

DevOpsi sp. z o.o. poproszona została o wsparcie w zakresie: 

  • analizy przedwdrożeniowej;
  • instalacji klastra Kubernetesa na infrastrukturze Klienta; 
  • instalacji klastra Postgresa; 
  • testów wydajnościowych; 
  • przygotowania obrazu Keycloak’a; 
  • wdrożenia produkcyjnego; 
  • w kolejnym etapie – również utrzymania całości wdrożonego rozwiązania.

3. Analiza przedwdrożeniowa

Na tym etapie Klient otrzymał od nas wsparcie w podjęciu ostatecznej decyzji w wyborze Keycloak’a jako rozwiązania Single Sign On (SSO), scentralizowanego serwera uwierzytelniania. Dodatkowo w toku warsztatów wypracowaliśmy umiejscowienie Keycloak’a w całej architekturze systemów Klienta. Ustaliliśmy również pełną architekturę infrastrukturalną, którą w kolejnym etapie odwzorowaliśmy na środowisku developerskim Klienta.

3. Infrastruktura

  • Na środowisku developerskim uruchomiliśmy kompletny klaster Kubernetesa. Skonfigurowaliśmy autoskalowanie, tak aby środowisko było przygotowane na nagłe skoki ruchu.
  • W następnej kolejności zainstalowaliśmy oraz uruchomiliśmy klaster Postgres’a.
  • Na 3 node’ach Kubernetesa i klastrze Postgresa został zainstalownay Keycloak. Wcześniej odpowiednio scustomizowaliśmy obraz Keycloak’a zgodnie z wymaganiami Klienta (są to m.in customowe algorytmy szyfrowania). 
  • Przy wzmożonym ruchu Kubernetes dodawał automatycznie dodatkowe node’y aby rozłożyć ruch równomiernie i zapewnić zakładaną wydajność systemu.

4. Customowe modyfikacje Keycloaka

W ramach zleconych prac utworzyliśmy dedykowany SPI, czyli wtyczkę do Keycloak’a, która rozszerza jego podstawowe funkcjonalności. Wtyczkę utworzyliśmy zgodnie z zaleceniami producenta w środowisku JVM. Weryfikowała ona i znakowała informację na temat zgód, i w zależności od potrzeb, wykonywała odpowiednie akcje. Po naszej stronie również należało wykonanie testów, przygotowanie paczki instalacyjnej oraz instrukcji wdrożenia.

5. Testy wydajnościowe Keycloaka

Częścią zamówionych prac było wykonanie testów wydajnościowych całej usługi. Założenia do testów były jasne: 

– usługa miała wytrzymać określony ruch Unikalnych Użytkowników na minutę przy ruchu narastającym;

– mieliśmy określić punkt przeciążenia, czyli maksymalną ilość UU/min, przy której zasoby infrastruktury będą niewystarczające.

Na potrzeby testów zaimportowaliśmy do Keycloaka kilka milionów Unikalnych Użytkowników. Dzięki temu  idealnie odwzorowaliśmy warunki produkcyjne. 

Do testu obciążeniowego został przygotowany jednakowy test przy pomocy Apache JMeter, który zakładał zwiększenie ilości sesji/logowań co minutę. 

Testy uruchomiliśmy z 3 niezależnych lokalizacji naszej infrastruktury.  Test obciążeniowy zakończył się sukcesem. Środowisko działało bez zarzutu.

Test przeciążeniowy również został przygotowany w Apache JMeter. Polegał on na uruchomieniu 8000 wątków, które automatycznie logowały userów z puli kilku milionów użytkowników. Testy przeciążeniowe również zakończyły się sukcesem – kilkakrotnie udało się przebić założenia testów obciążeniowych.

Podczas testów całość infrastruktury była monitorowania przy pomocy aplikacji Prometheus i Grafana.

Po zakończeniu testów Klient otrzymał kompletną ich dokumentację. 

6. Wyzwania

Największe wyzwania, z którymi musieliśmy się zmierzyć dotyczyły:

  • zabezpieczenia odpowiednich zasobów sprzętowych, tak aby zapewnić odpowiednie skalowanie i wydajność przy zwiększaniu ruchu podczas testów;
  • zapewnienie odpowiedniego ruchu w czasie testów wydajnościowych.

Nasze doświadczenie związane wcześniejszymi wdrożeniami Keycloak’a, klastrów k8s oraz Postgres’a pozwoliły nam na bezproblemowe sprostanie wyzwaniami i zakończenie wdrożenia pełnym sukcesem.

7. Podsumowanie

Projekt od początku wymagał od nas szczególnej uwagi i zastosowania zindywidualizowanych rozwiązań.  Wiedzy i doświadczenia zespołowi DevOpsi – który był odpowiedzialny za wykonanie projektu wdrożenia – nie brakowało, dlatego byliśmy pewni końcowego sukcesu. Na tyle dużego, że Klient zaproponował nam kontynuowanie współpracy w utrzymaniu całego rozwiązania, zapewnieniu jego wsparcia oraz dalszym rozwoju środowiska.

Newsletter