Mysterious Code skonteneryzował środowiska programistyczne i QA Sova na AWS, zapewniając 70% szybsze wdrożenia i obniżając koszt każdego środowiska QA o 95%.
Sova mierzyła się z poważnym wyzwaniem w procesach programistycznych i zapewniania jakości (QA), ograniczana przez niewielką liczbę środowisk testowych i rosnące koszty. Wykorzystując swoją wiedzę o AWS i dogłębne zrozumienie infrastruktury Sova, Mysterious Code opracował rozwiązanie, które usprawniło te procesy i jednocześnie ograniczyło wydatki. Polegało ono na konteneryzacji warstwy aplikacji i danych Sova, wdrażanej przez AWS CloudFormation na AWS Fargate. Każde środowisko QA powstawało dynamicznie, w miarę potrzeb zespołu QA, z 70% krótszym czasem wdrożenia i 95% oszczędnością kosztów w porównaniu z tradycyjnymi środowiskami testowymi.
Sova to platforma do oceny kompetencji, która usprawnia sposób, w jaki Twoja organizacja ocenia talenty. Pomagają zatrudniać i rozwijać najlepszych, różnorodnych pracowników, oszczędzając czas i pieniądze, abyś mógł osiągać więcej mniejszym nakładem.
Sova stała przed palącym problemem: jej szybko pracujące zespoły programistyczne i QA zmagały się z ograniczoną liczbą środowisk testowych, co utrudniało równoległe tworzenie i testowanie wielu funkcji. Powiększenie puli środowisk było możliwe, ale wiązało się ze znacznymi kosztami, ponieważ każde środowisko musiało wiernie odwzorowywać produkcję. Choć jest to kluczowe przy testach end-to-end przed wydaniem, taka złożoność była zbędna w codziennej pracy programistycznej i zadaniach QA.
Bez opłacalnego rozwiązania dla usprawnionej, zadaniowej pracy programistycznej i QA Sova ryzykowała zahamowanie innowacji i wzrostu. Bieżący rozwój spowalniały opóźnione wyniki QA, co wydłużało pętlę informacji zwrotnej.
Od strony technicznej rozwiązanie musiało:
Skoro Sova już działała na AWS, wykorzystanie chmury było naturalnym wyborem. AWS oferował najbardziej opłacalne i niezawodne rozwiązanie, zgodne zarówno z celami biznesowymi, jak i programistycznymi. Znajomość aplikacji Sova i jej infrastruktury AWS stawiała Mysterious Code w wyjątkowej pozycji do podjęcia tego wyzwania.
Rozwiązanie polegało na konteneryzacji aplikacji Sova wraz z jej warstwą danych, zarządzaną na produkcji przez różne usługi AWS. Dzięki kontenerom mogliśmy wykorzystać AWS CloudFormation do wdrożenia wielu usług ECS, działających na AWS Fargate, przed którymi stał Application Load Balancer.
Dzięki regułom host-header w listenerze ALB każde utworzone środowisko QA otrzymywało własną
subdomenę, łatwo dostępną dla wszystkich członków zespołu. Ponieważ środowiska były wdrażane
dynamicznie za jednym load balancerem, stworzyliśmy autorskie rozwiązanie dynamicznie nadające
wartość priority regule load balancera. Zrealizowaliśmy to za pomocą CloudFormation Custom
Resource opartego na AWS Lambda, który znajduje kolejny wolny priorytet i zwraca go do użycia przez
stos CloudFormation.
Dla zasobów statycznych wykorzystaliśmy buckety S3 z dystrybucjami CloudFront. Każde środowisko otrzymywało własny katalog w buckecie, co upraszczało zarządzanie zasobami i ich usuwanie po zamknięciu środowiska.
Aby zapewnić dostęp do warstwy danych, wykorzystaliśmy prywatną przestrzeń nazw DNS w AWS Cloud Map, dzięki czemu każdą utworzoną usługę ECS można było wywołać przyjazną nazwą DNS, rozwiązywaną w dedykowanym VPC. Ponieważ programiści mieli już dostęp do środowisk AWS przez VPN, mogli teraz sprawnie korzystać z zasobów każdego środowiska QA w miarę potrzeb. Cloud Map ułatwił też komunikację między aplikacją a usługami danych w ramach ECS.
Wykorzystując istniejące narzędzia CI/CD, usprawniony pipeline pozwalał zespołowi QA bez wysiłku wdrażać nowe stacki CloudFormation dla środowisk QA. Każde środowisko, zamknięte w pojedynczym stosie, można było łatwo usunąć, gdy przestawało być potrzebne.
Wdrożone rozwiązanie umożliwiło zespołom Sova równoległe testowanie wielu funkcji, zwiększając tempo realizacji zadań. Czas wdrożeń skrócił się o 70%, a dzięki integracji z platformą zarządzania zadaniami zespołu środowisko jest automatycznie usuwane, gdy jego zadanie zostaje oznaczone jako „Gotowe”, więc nie pozostają żadne nieużywane środowiska. Każde niezależne środowisko QA kosztuje mniej niż 5% tego, co kosztowałoby pełne środowisko testowe, co daje firmie spokój i lepszą kontrolę nad całością wydatków.