← Wszystkie realizacje
Realizacja

Usprawnienie środowisk programistycznych i QA w Sova dzięki AWS CloudFormation i Fargate

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%.

70% szybsze wdrożenia
95% niższy koszt środowiska QA
Usługi AWS
  • AWS CloudFormation
  • Amazon ECS
  • AWS Fargate
  • AWS Cloud Map
  • Elastic Load Balancing
  • Amazon CloudFront

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.

O firmie Sova Assessment Limited

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.

Wyzwanie

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:

  • być łatwe do wdrożenia przez zespół QA, najlepiej z użyciem istniejących narzędzi,
  • dawać programistom dostęp do warstwy danych na potrzeby konfiguracji i debugowania,
  • umożliwiać szybkie tworzenie wielu środowisk, każdego w oparciu o konkretną gałąź gita.

Rozwiązanie

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.

Diagram architektury, widok ogólny

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.

Diagram architektury, wykrywanie usług

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.

Korzyści

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.