dot dot dot
Back

Migracja polskiej firmy carsharingowej do AWS

Firma świadcząca usługi wypożyczania samochodów (carsharing). Firma dysponuje flotą ponad 2 000 samochodów w 60 punktach wynajmu na terenie całej Polski oraz przedstawicielstwami na wszystkich polskich lotniskach i na terenie Litwy.

Wyzwanie: 

Firma poprosiła nas o pomoc w migracji całej swojej infrastruktury do środowiska chmurowego i jednoczenie stworzeniu całkowicie nowej infrastruktury pod rozwój kolejnej wersji aplikacji. 

Do tej pory cała infrastruktura była przechowywana na serwerach on-premise. Firmie zależało na optymalizacji wydajności i optymalizacji kosztów, które generuje środowisko. 

Realizacja: 

Zaczęliśmy od warsztatów z deweloperami – zaplanowaliśmy krok po kroku strategię maksymalnego wykorzystania obecnego środowiska i zaplanowania nowego od podstaw. Tworząc strategię skupiliśmy się na wykorzystaniu najbardziej up-to-date technologii przy jednoczesnej maksymalnej wydajości kosztowej. 

Pierwszym etapem naszych prac było uporządkowanie tego, co zastaliśmy, czyli: zasoby, procesy a dokładniej, przygotowaliśmy bezpieczne podsieci, ukryliśmy elementy z publicznych podsieci, wszystko tak,  żeby dział techniczny firmy mógł spać spokojnie. 

Kolejnym etapem było stworzenie infrastruktury deweloperskiej z wykorzystaniem Terraform workspaces, tak żeby łatwo i szybko tworzyć nowe środowiska. 

Następnie “zdockeryzowaliśmy” tę aplikację i wtedy przyszedł czas na stworzenie orchestracji. Do tego wykorzystaliśmy Amazon Elastic Container Service (ECS). 

Stworzyliśmy infrastrukturę, która w automatyczny sposób się skaluje, jest ukryta wewnątrz prywatnych podsieci za VPN-em, czyli nikt z zewnątrz nie ma do niej dostępu. Poprawne działanie wszystkich mikroserwisów sprawdzane jest w zautomatyzowany oraz wieloetapowy sposób.

Napisaliśmy proces testowania, budowania aplikacji i uruchomiliśmy 2 środowiska developerskie oraz preprodukcyjne. Na wszystkich kontach wdrożyliśmy audyt SecurityHub dający możliwość jeszcze lepszego zabezpieczenia tych środowisk. Wdrażamy najlepsze praktyki AWS na każdym kroku, dbając o wydajność kosztową i przeciwdziałanie powstawania długu technologicznego. 

Wyniki: 

Zaprojektowaliśmy nową infrastrukturę w chmurze AWS. Zastosowaliśmy wszystkie sprawdzone rozwiązania skalowalności i wydajności. 

 

Wprowadziliśmy tzw. zarządzanie kontami (AWS Organizations). Polega to na stworzeniu konta głównego ze skonsolidowanym bilingiem oraz przyporządkowanych podkont. 

 

To rozwiązanie zapewniło, że wszystkie zmiany są na bieżąco synchronizowane i zapisywane w razie awarii lub włamania. 

Opotymalizacja kosztowa: 

 

Opensearch

W przygotowanej infrastrukturze znajdują się 2 klastry OpenSearch: do zbierania logów oraz do ramek z samochodów. W przypadku pierwszego utworzyliśmy indeksy per serwis co pozwoliło na określenie logujących największe ilości danych i ograniczenie ich na poziomie aplikacji, to zmniejszyło ilość wykorzystanego miejsca i zmniejszenie wielkości dysków, a co za tym idzie także typu instancji. W drugim przypadku analiza metryk pokazała że klaster przy mniejszym rozmiarze instancji wytrzyma obecne obciążenie. Udało się zejść z kosztów o ok. połowę (100$ do 54$ dziennie). Kolejnym krokiem będą testy i zmiana na instancje z ARM, które są bardziej optymalne kosztowo i także potencjalnie wydajnościowo.  

DynamoDB

Jedna z tabel miała włączony tryb on-demand, wynikało to z tego że przed migracją nie był znany ruch i zasoby. Analiza ruchu po go-live pozwoliła na oszacowanie potrzebnych zasobów WCU i RCU, co pozwoliło na obniżkę miesięcznych kosztów z 670$ na 128$.

RDS

Wdrażamy działania, które w dłuższej perspektywie przyczynią się do znaczącego obniżenia kosztów. 

Fargate ECS

W tym przypadku koszty się bardzo zmieniały, przeprowadziliśmy optymalizację kosztową, co przełożyło sie na wymierne korzyści w postaci zaoszczędzonej gotówki. 

Monitorowanie i zarządzanie operacyjne:

W tym projekcie kluczowymi elementami procesu migracji i optymalizacji było monitorowanie i zarządzanie operacyjne.

Monitorowanie:

Aby zapewnić solidną obserwowalność, wdrożono następujące środki:

Każde zadanie ma dodatkowy kontener Fluentd z niestandardowymi skryptami do szczegółowego monitorowania stanu zdrowia zadania, wizualizowanego w samodzielnie hostowanej Grafanie.

Zbieramy dwie główne grupy logów:

Logi aplikacji są agregowane w klastrze OpenSearch z rozszerzonymi pulpitami nawigacyjnymi ułatwiającymi analizę, z odpowiednio skonfigurowanymi indeksami na usługę i automatycznym przechowywaniem kopii zapasowych przy użyciu natywnych funkcji OpenSearch.

Dla logów usług AWS, takich jak Lambdy, API Gateway lub WAF, używamy CloudWatch Logs Insights, a dla logów ALB agregowanych w S3 wykorzystujemy zapytania Athena.

Szczegółowe monitorowanie każdego komponentu aplikacji, w tym konkretnych błędów na poszczególnych punktach końcowych lub usługach oraz standardowych metryk, takich jak CPU i pamięć, dostępne dzięki AWS CloudWatch i Telegraf.

Audytowanie za pomocą SecurityHub:

SecurityHub zostało zintegrowane we wszystkich kontach, aby zwiększyć środki bezpieczeństwa, ułatwiając wykrywanie nowych problemów i rozwiązywanie już istniejących. Audytowanie to obejmowało najlepsze praktyki AWS, przyczyniając się do efektywności kosztowej i zapobiegając gromadzeniu się długu technicznego.

AWS Organizations:

Na początkowym etapie projekt zakładano jako znacznie mniejszy. Zarządzanie kontami zostało wprowadzone za pomocą AWS Organizations, tworząc główne konto z konsolidowanym rozliczaniem oraz kilka wyznaczonych subkont. W miarę wzrostu projektu nie widzieliśmy potrzeby zmiany podejścia, ponieważ AWS Organizations spełniało nasze potrzeby. Nowe konta były i są rzadko dodawane, a jeśli są, łatwo radzimy sobie z ich konfiguracją za pomocą gotowych modułów Terraform i koncepcji workspaces, stosowanych za pośrednictwem procesów GitLab CI/CD, więc nie widzieliśmy konieczności migracji do Control Tower.

Terraform i Git:

Infrastruktura została utworzona przy użyciu Terraform, skonfigurowanego przy użyciu workspaces dla wielośrodowiskowej konfiguracji z wersjonowaną konfiguracją. Była wdrażana za pomocą procesów GitLab CI/CD, z odpowiednim testowaniem na środowiskach deweloperskich przed zastosowaniem w produkcji. To podejście zapewniało, że infrastruktura mogła być łatwo replikowana i zarządzana oraz umożliwiało szybkie i efektywne tworzenie środowisk.

CloudTrail:

Użyliśmy CloudTrail z konfiguracją wieloregionową do śledzenia aktywności na koncie. Pozwalało nam to weryfikować różne podejrzane działania na kontach użytkowników i usług AWS oraz ogólnie pomagało w debugowaniu różnych zdarzeń.

WYKORZYSTALIŚMY TECHNOLOGIE:

OpenSearch
DynamoDB
Amazon RDS
Amazon Fargate
Amazon ECS
AWS Organizations
DOCKER
Amazon EC2
previous next
scroll