Projekt, wdrożenie i opieka nad infrastrukturą LINK Mobility

18 listopada 2021

Link Mobility_AWS_wdrożenie

LINK Mobility to lider komunikacji mobilnej i rozwiązań CPaaS w Europie pod względem liczby wysłanych wiadomości SMS. W czerwcu 2020, Grupa miała 33 tys. klientów w Europie, a w 2019 wysłała 9,5 miliarda wiadomości. Do grupy LINK Mobility należy firma LINK Mobility Poland Sp. z o.o., właściciel marki SMSAPI. SMSAPI to platforma do masowej wysyłki wiadomości SMS, MMS i VMS poprzez panel klienta lub prosty i łatwy w integracji interfejs SMS API umożliwiający integrację z własnymi systemami informatycznymi m.in. e-commerce lub CRM. 

Ze względu na chęć wdrożenia technologii Kubernetes, potrzebę elastycznego skalowania infrastruktury oraz globalny zasięg usług świadczonych przez Klienta, chmura AWS była dla LINK Mobility pierwszym i jedynym wyborem. Ponadto w planach Firmy, było wykorzystanie narzędzia Terraform do powielania, z lekkimi modyfikacjami, wdrożonej w Polsce infrastruktury dla oddziałów na całym świecie.

Konfiguracja konta AWS

Konto AWS zostało przygotowane przez Klienta. Po naszej stronie pozostało określenie i wykorzystanie odpowiednich ról i łańcuchów zaufania do odpowiednich kont organizacji. Skonfigurowaliśmy role dostępowe zaangażowanych stron, konta serwisowe wykorzystywane przez automatykę, wdrożyliśmy zachowywanie informacji o dostępie i wykorzystaniu AWS API (AWS CloudTrail) oraz elementy wykorzystywane przez narzędzia IaC (AWS S3, tabela Amazon Dynamo DB) w celu zachowania i ochrony stanu infrastruktury.

Projekt infrastruktury

Pracę rozpoczęliśmy od zaprojektowania infrastruktury w wersji deweloperskiej. Całość została zdefiniowana i zrealizowana za pomocą narzędzia Terraform. Infrastrukturę produkcyjną zrealizowaliśmy w trzech strefach AZ, co w połączeniu z opcją Multi-AZ dla RDS pozwoliło nam uzyskać pełne HA w przypadku awarii którejkolwiek strefy.

 

 

 

"Projekt został zrealizowany w oparciu o metodykę DevOps oraz koncepcję Infrastructure as Code, dzięki czemu zminimalizowaliśmy nakłady konieczne do powielania środowiska w innych regionach. Nowa infrastruktura zapewnia optymalny poziom kosztów, spełniając jednocześnie niezbędne standardy w zakresie m.in. zasad bezpieczeństwa systemów chmurowych.

Hostersi okazali się niezwykle proaktywnym partnerem, który nie tylko wdrażał wskazane rozwiązania, ale proponował optymalne narzędzia i technologie, które sprawiły, że efekt wdrożenia jest dla nas w pełni satysfakcjonujący."

Grzegorz Lentzy, IT Director LINK Mobility

Wirtualna sieć VPC

Ze względu na pełną separację środowiska produkcyjnego utworzyliśmy niezależne od siebie sieci VPC, przeznaczone na komponenty aplikacji i usługi przez nie wykorzystywane. Sieć wirtualną rozszerzyliśmy o obszar prywatny (podsieci prywatne), tj. bez bezpośredniego dostępu z Internetu, z którego ruch wychodzący przychodzi przez bramy NAT (NAT Gateways). Sieć produkcyjną (zarówno obszar prywatny jak i publiczny) wyposażyliśmy w trzy podsieci, każdą w innym Data Center (AZ). Dodatkowo w obszarze prywatnym, przygotowaliśmy tunel VPN site-to-site, służący do szyfrowanego dostępu obszaru prywatnego cloud, bezpośrednio z obszaru corporate office (i tylko z tego obszaru).

Platforma Kubernetes

Klaster Kubernetesowy zrealizowaliśmy za pomocą Amazon Elastic Kubernetes Service (EKS), który oprócz zalet charakterystycznych dla platformy Kubernetes, zapewnia optymalizacje kosztową wykorzystywanych zasobów (autoskaling klastra), gwarantuje wsparcie szybkiego i częstego deploymentu nowych aplikacji, obsługuje wiele środowisk składających się ze zdokeryzowanych mikroserwisów, kontroluje też działanie oraz samo-naprawianie dodatkowych funkcjonalności.

 

Ponadto w celu zapewnienia planowanych funkcjonalności klastra, zainstalowaliśmy również:

  • Ingress-controller do obsługi ingresów wraz z optymalizacją kosztów w postaci pojedynczego load balancera NLB dla wszystkich obsługiwanych ingresów
  • Autoskaler cluster w celu automatycznego skalowania grup maszyn wraz z reschedulingiem podów
  • Aktualizator wpisów DNS external-dns w celu automatycznej obsługi adresów hostów zdefiniowanych w ingressach.

Wszystkie powyższe narzędzia wdrożyliśmy przy użyciu i pod kontrolą narzędzia Helm.

Warstwa danych

Biorąc pod uwagę przede wszystkim wymagania związane ze zgodnością z realizowanymi przez Klienta praktykami w zakresie funkcjonowania i utrzymania oprogramowania, uruchomiliśmy bazy w formie kubernetesowych podów, wykorzystujących dyski EBS poprzez PresidentVolumeClaim. Jest to forma zgodna ze wzorcem architektury mikroserwisowej, w której dany mikroserwis posiada własną bazę danych, a zespół odpowiedzialny za mikroserwis jest również odpowiedzialny za jej utrzymanie i konfigurację. Zaletą tego typu infrastruktury jest również separacja na poziomie wykorzystania zasobów sprzętowych odpowiednich baz danych, należących do odpowiadających im mikroserwisów.

W związku z newralgiczną rolą bazy danych MySQL, zdecydowaliśmy, że w obydwu środowiskach zrealizujemy ją w formie usługi Amazon RDS, co pozwoliło nam ujednolicić procedury związane z backupem, restorem oraz obsługą baz danych przez aplikacje.

Szyny danych RabbitMQ

Realizacja szyny danych, podobnie jak w przypadku bazy danych, została wykonana zgodnie z wymaganiami związanymi ze zgodnością z obecnymi praktykami. Tym samym uruchomiliśmy instancję RabbitMQq w formie kubernetesowych podów, wykorzystujących (o ile uruchomione są w trybie „disc”) dyski EBS poprzez PersistentVolumeClaim. Jest to forma zgodna ze wzorcem architektury mikroserwisowej w której dana grupa mikroserwisów posiada własna szynę danych, a poszczególne zespoły odpowiadają również za jej utrzymanie i konfigurację. Zaletą takiej architektury jest również separacja na poziomie używania zasobów sprzętowych odpowiednich szyn danych należących do odpowiadających im grup mikroserwisów. Koszty tak zrealizowanej szyny są składowymi kosztów klastra Kubernetes, a ochrona danych dyskowych realizowana jest przez Velero.

Magazyn obiektów i inne usługi zarządzane

Jako magazyn obiektów (pliki statyczne, kopie, archiwalne logi, pliki stanu infrastruktury) wykorzystaliśmy usługę AWS S3. Ponadto użyliśmy również:

Amazon KMS – do szyfrowania danych w usługach AWS w integracji z natywnymi metodami uwierzytelniania i autoryzacji w AWS.

System Manager Parameter Store – do przechowywania dynamicznych parametrów dostępnych dla aplikacji przy użyciu natywnych dla AWS IAM oraz KMS, w tym szyfrowanych sekretów, parametrów inicjalizacyjnych itp.

Amazon Route 53 – jako usługę DNS, pozwalającą na utrzymanie i zarządzanie strefami DNS, zarówno publicznymi jak i prywatnymi dla danej sieci VPC.

 

AWS Certificate Manager – usługa DNS pozwalająca na tworzenie i zarządzanie certyfikatami SSL, które posłużą do zapewnienia zaufanego ruchu SSL dla usług wystawionych na Load Balancerze.

Monitoring i allerting

Monitoring klastrów EKS wraz z resztą usług AWS, zrealizowaliśmy za pomocą usługi DataDog, która posiada zarówno natywną integrację z Kubernetesem jak i z platformą AWS, dzięki czemu do monitoringu wystarczy jeden pulpit (single pane of glass) co znacząco skraca czas reakcji na awarie i analizy incydentów. W ramach projektu PoC (dla środowiska deweloperskiego) wdrożyliśmy w klastrze Kubernetes agenta DataDog w celu oceny jego przydatności, funkcjonalności oraz kosztów takiego rozwiązania. Realizację alrteingu (akcji wywoływanych poprzez przekroczenie określonego poziomu przez wskazane metryki) oparliśmy na rozwiniętej i elastycznej funkcjonalności platformy DataDog.

Wdrożenie aplikacji

Proces instalacji aplikacji na platformie Kubernetes zrealizowaliśmy za pomocą menadżera pakietów Helm, który jest obecnie najczęściej wykorzystywany do zarządzania aplikacjami w środowisku Kubernetes. Helm oferuje funkcjonalności pozwalające wykorzystywać go w sposób zautomatyzowany (pipelines), umożliwia umieszczanie nowych wersji aplikacji, cofanie do wersji poprzednich, czy usuwanie ich w ustandaryzowany sposób, korzystając z definicji aplikacji lub całego ich zestawu w formie tzw. Chartów, czyli definicji wszystkich komponentów niezbędnych w klastrze do działania aplikacji.

Podsumowanie

Dla LINK Mobility wdrożyliśmy elastyczną, skalowalną (wertykalnie i horyzontalnie) infrastrukturę, zgodną z metodologią DevOps oraz koncepcją Infrastructure as Code, dzięki czemu zminimalizowaliśmy nakłady konieczne do powielania środowiska w innych regionach. Całe Środowisko oparte jest o platformę Kubernetes i narzędzia IaC (Terraform). Zachowaliśmy również optymalny poziom kosztów, utrzymując jednocześnie dobre praktyki w zakresie m.in. zasad bezpieczeństwa systemów chmurowych.

Case Studies
Referencje

Bardzo sprawny kontakt z pracownikami Hostersi pozwolił nam pomyślną realizację naszego projektu i osiągnięcie założonych celów biznesowych. Jesteśmy pełni uznania dla kompetencji specjalistów Hostersi i jakości świadczonych przez nich usług.

Beata Kaczor
Dyrektor Zarządzający
W skrócie o nas
Specjalizujemy się w dostarczaniu rozwiązań IT w obszarach projektowania infrastruktury serwerowej, wdrażania chmury obliczeniowej, opieki administracyjnej i bezpieczeństwa danych.