SoDA

Spyrosoft opracował mikroserwisową platformę zbudowaną w całości przy użyciu Azure

Spyrosoft zawsze sięgamy po najnowsze technologie, które mogą pomóc naszym klientom w zbudowaniu najlepszych produktów. Tym razem użyliśmy serwisów z platformy Microsoft Azure do unowocześnienia zestawu webowych i mobilnych aplikacji korzystających z danych geosprzestrzennych.

Według raportu ‘Forecast: Public Cloud Services, Worldwide, 2018–2024, 2Q20 Update’ opublikowanego przez firmę Gartner, użycie publicznych platform chmurowych będzie — podobnie jak w ostatnich latach — wzrastać tak, by w latach 2021–2022 osiągnąć wartość odpowiednio 306,948 oraz 354,062 milionów USD. Nie jest to szczególnie zaskakujący fakt, jeśli spojrzymy na to, jakie zalety oferują te platformy. Są to m.in. ich niezawodność związana z tym, że fizyczne centra serwerowe są rozrzucone po całym świecie, a dane na nich umieszczone są w trybie rozproszonym, co powoduje, że nawet w przypadku nieprzewidzianych okoliczności w jednym miejscu, informacje są bezpieczne. Do plusów należy też łatwość ich skalowania — wirtualne maszyny można uruchamiać lub wyłączać w dowolnym momencie, w zależności od aktualnych potrzeb oraz możliwości danego projektu. Warto też wspomnieć o tym, że rozwiązania chmurowe takie jak Microsoft Azure są przyjazne środowisku — Microsoft zadeklarował, że ich centra będą do 2025 w całości zasilane energią odnawialną, a do 2030 będą w całości zero-waste, już teraz wprowadzając szereg programów, które pozwolą na osiągnięcie tych celów.

Programiści w Spyrosoft od dawna używają szeregu serwisów Microsoft Azure, które wykorzystywane są w kluczowych projektach realizowanych dla naszych klientów. Należą do nich m.in.:

  • Azure Active Directory B2C
  • Azure Kubernetes Service
  • Azure PostgreSQL
  • Azure Content Delivery Network
  • Azure Cognitive Services
  • Azure Service Bus
  • Azure Functions
  • Azure DevOps
  • Azure Cognitive Search
  • Azure Traffic Manager

Poniżej znajdziecie opis jednego z takich projektów, który pozwoli na lepsze zrozumienie, jak szerokie zastosowanie mogą mieć produkty Microsoft Azure.

Wyzwanie

Jednym z naszych klientów jest brytyjska firma, która zajmuje się tworzeniem map. W swoim portfolio posiada też zestaw mobilnych i webowych aplikacji, które pozwalają użytkownikom na eksplorowanie dalszych i bliższych okolic w ciekawy, interaktywny sposób, a także na zamawianie spersonalizowanych map i innych produktów.

Ponad 2 lata temu nasi klienci zwrócili się do nas z projektem zaktualizowania zestawu ich istniejących aplikacji webowych i mobilnych, stworzenia kilku nowych aplikacji oraz przeniesienia ich infrastruktury do Azure. Potrzebowali też nowej platformy, która będzie dostarczała API i dane dla tych wszystkich aplikacji w zunifikowany sposób. Wszystkie produkty oraz infrastruktura były już utrzymywane przy pomocy technologii chmurowej dostarczanej przez inną firmę. Platforma zawierała kilka serwisów, które napisane były w Java oraz po kilka w PHP oraz JavaScript.

Postanowiliśmy, że dostosujemy lub napiszemy od nowa istniejące komponenty zgodnie z duchem Cloud Native, co skróci czas dostarczania nowych funkcjonalności oraz umożliwi korzystanie z najnowszych technologii.

Rozwiązanie

Aby umożliwić modernizację oraz wprowadzenie nowych komponentów, pierwszym wymaganym krokiem była migracja danych personalnych oraz kont użytkowników z istniejącego rozwiązania hostowanego on-premise. Był to kluczowy krok do zwiększenia bezpieczeństwa danych użytkowników oraz wprowadzenia autentykacji oraz autoryzacji przy pomocy OAuth 2.0. Istniejący ekosystem posiadał dane prawie 1,5 milionów użytkowników z Wielkiej Brytanii. W całym procesie kluczowe były dla nas bezpieczeństwo danych użytkowników oraz zmian po stronie aplikacji typu legacy, które z tego systemu korzystały. ‘Uznaliśmy, że w takim razie najlepszym wyjściem w tym przypadku będzie migracja danych za pomocą strategii one at a time’ — mówi Łukasz Macuga, Tech Lead/Architect w Spyrosoft.

Łukasz Macuga, Tech Lead/Architect at Spyrosoft

Do migracji wykorzystaliśmy Azure Active Directory B2C, a sama metoda polegała na migracji użytkownika w momencie logowania. Ta technika migracji wymagała więcej czasu na sfinalizowanie, ale było to konieczne w celu zapewnienia transparentności tej zmiany dla użytkowników aplikacji.

Główny klaster aplikacji jest zbudowany przy wykorzystaniu Azure Kubernetes Service, gdzie zostały skonfigurowane 4 środowiska. Jest w nim hostowane ponad 30 usług.

Do przechowywania danych używamy głównie Azure Storage Account, gdzie Azure Blob Storage jest wykorzystywany do przechowywania elementów związanych z importami danych oraz przechowywania plików audio, video i obrazów użytkowników. Do przechowywania danych operacyjnych używamy serwisu Azure PostgreSQL, czyli baz Postrgres-As-A-Service, które dają bardzo dobre możliwości przetwarzania danych geoprzestrzennych. Statyczne dane udostępniane przez platformę są dostarczane przy pomocy Azure Content Delivery Network, dzięki czemu możemy zminimalizować opóźnienia oraz w przyszłości zapewnić pełną dostępność danych dla użytkowników z różnych części świata.

Kolejnym i jednym z najciekawszych wykorzystywanych przez nas serwisów jest Azure Cognitive Services, który służy nam do walidowania treści dostarczanych przez użytkowników pod względem ich zawartości i pozwala na wczesne wychwytywanie treści, które nie spełniają standardów platformy.

Jako communication/message bus, wykorzystujemy Azure Service Bus, który pomaga nam w asynchronicznym przetwarzaniu danych i organizowaniu komunikacji pomiędzy mikroserwisami, na których jest oparta cała architektura systemu.

W przypadku usług (API), które obsługują trudne do przewidzenia natężenia ruchu wdrożyliśmy Azure Functions, co umożliwia dynamiczne skalowanie w miarę potrzeb.

Jak mówi Łukasz Macuga, ‘wbrew obiegowej opinii, usługi Azure oferują wysokiej jakości SDK dla Javy, które są rozwijane w transparenty sposób. Nie napotkaliśmy żadnych problemów podczas korzystania z Javy na platformach Azure’.

Rezultaty

Po przeniesieniu platformy na Azure Kubernetes Service, naszym programistom udało się uzyskać przyrost jej niezawodności oraz znacznie zredukować downtime.

Zredukowany został też czas potrzebny na obsługę funkcjonalności, z których korzystają na co dzień użytkownicy:

  • Czas logowania zmniejszył się z powyżej 10 sekund do poniżej 1 sekundy.
  • Czas rejestracji został zmniejszony z 12 sekund do poniżej 1 sekundy.

Dzięki dobrej kompatybilności API Azure oraz Azure DevOps z opensource’owymi rozwiązaniami byliśmy w stanie skonfigurować całą infrastrukturę przy pomocy metody Infrastracture-as-a-Code przy użyciu narzędzia Terraform oraz zarządzać klastrem aplikacji korzystając z metody GitOps. Całkowita automatyzacja pozwala nam z kolei na szybkie i łatwe dostarczanie nowych funkcjonalności.

Kolejne kroki

Kolejne kroki w rozwoju platformy stworzonej dla naszego klienta to rozszerzenie oferty na inne kraje, poza Wielką Brytanią. W tym celu nasi programiści zaimplementowali usługę Global Location Search przy pomocy Azure Cognitive Search, która w przyszłości będzie obsługiwać globalne wyszukiwanie lokalizacji. Do końca roku 2020 planujemy wdrożenie infrastruktury/aplikacji w Australii. Kolejne kraje, które uruchomimy w 2021, to Stany i Kanada.

Dzięki zastosowaniu serwisu Azure Traffic Manager jesteśmy w stanie dostarczyć oraz obsługiwać aplikacje o wysokiej wydajności, które docelowo mają być dostępne w każdym miejscu na świecie. Sam Azure Traffic Manager będzie nam też służył do zarządzania ruchem sieciowym z użyciem strategii przekazywania tego ruchu oraz obsługiwania ewentualnych nagłych wzrostów ruchu, które mogłyby zagrozić stabilności aplikacji i ograniczyć ich dostępność dla użytkowników.

Najnowsze artykuły

Najnowsze artykuły

Case study Cańbi: W jakim celu mierzyć produktywność programistów?

Case study BlueRider.Software: Authentic Authism, czyli jak zrozumieć autyzm dzięki technologii

LinkedIn partnerem SoDA. Dołącz do nowego cyklu webinarów