W dziedzinie nowoczesnych rozwiązań chmurowych architektura serverless jest modnym hasłem, choć jej praktyczne zastosowania często pozostają niezbadane. Celem tego artykułu jest wypełnienie tej luki poprzez zademonstrowanie aplikacji internetowej Price Tracker. Oprócz wiedzy teoretycznej, artykuł kładzie nacisk na praktyczne zastosowania, aby pokazać, jak te koncepcje mogą zostać wykorzystane w rzeczywistych scenariuszach.
Wprowadzenie do architektury serverless oraz chmury AWS
Architektura serverless to rewolucyjny paradygmat przetwarzania w chmurze, który umożliwia programistom tworzenie i uruchamianie aplikacji bez konieczności zarządzania serwerami. Takie podejście daje możliwość skupienia się na kodzie, a nie na infrastrukturze, co pozwala na większą elastyczność i innowacyjność.
AWS Cloud, dostarczyciel usług przetwarzania w chmurze, oferuje kompleksowy ekosystem do skutecznego wdrażania architektury serverless. Pakiet usług jak:
- Lambda,
- API Gateway,
- DynamoDB,
umożliwia programistom wdrażanie skalowalnych, wysoce dostępnych aplikacji. Dzięki wykorzystaniu AWS koncepcja serverless wykracza poza teorię, oferując solidną platformę, którą można użyć do rozwiązywania złożonych problemów.
O aplikacji
Aplikacja Price Tracker przeznaczona jest dla osób zainteresowanych obserwacją zmian cen produktów w czasie. Narzędzie automatycznie sprawdza zmiany cen, przechowuje je w bazie danych i wyświetla te informacje w formie wykresów. Jest to szczególnie przydatne w celach edukacyjnych, skupiających się na praktycznym zastosowaniu technologii serverless oraz tworzeniu aplikacji internetowych.
Przegląd architektury
Architektura aplikacji Price Tracker zbudowanej na platformie AWS stanowi przykład projektu serverless, który wykorzystuje możliwości oraz elastyczność zasobów chmury. Poniżej zaprezentuję wizualną reprezentację architektury wraz ze szczegółowym wyjaśnieniem.
System działa poprzez szereg skoordynowanych działań pomiędzy usługami AWS w celu zarządzania danymi:
- Tracking Lambda –funkcja stanowi serce operacji śledzenia cen. Jej zadaniem jest zebranie i zwrócenie odpowiednich danych o produkcie, który jest obserwowany: aktualnej ceny oraz znacznika czasu.
- EventBridge Rule – reguła skonfigurowana za pomocą narzędzia EventBridge odpowiada za uruchamianie funkcji Tracking Lambda w regularnych odstępach czasu. Taka konfiguracja zapewnia okresowe śledzenie przedmiotu, dzięki czemu proces gromadzenia danych jest spójny i zautomatyzowany.
- Handler Lambda – gdy funkcja Tracking Lambda zbierze dane, funkcja Handler Lambda przejmuje kontrolę. Przetwarza te dane i przechowuje je w tabeli DynamoDB. Oprócz tego funkcja jest również odpowiedzialna za generowanie wykresów obserwowanych produktów, które następnie przesyła do S3 bucket.
- Gateway Lambda i API Gateway – funkcja Gateway Lambda łączy się z bramą API Gateway, która działa jako interfejs użytkownika. Kiedy użytkownik wysyła żądanie do serwera funkcja generuje kod html i przekazuje go użytkownikowi jako odpowiedź na jego żądanie.
- S3 bucket (public) – aplikacja Price Tracker ma w kodzie html zawarte linki do wykresów ze zmianami cen. Wykresy są przechowywane w S3 bucket.
Hands-on
W części praktycznej można wybrać jedną z dwóch opcji – ręczną konfigurację aplikacji Price Tracker za pośrednictwem AWS Management Console (zalecane) lub opcję opartą na skryptach.
- metoda ręczna za pomocą konsoli zapewnia dogłębne zrozumienie krok po kroku, jakie operacje są wykonywane,
- opcja skryptowa jest przeznaczona dla programistów posiadających przynajmniej podstawową wiedzę z AWS; pozwala na szybką i zautomatyzowaną konfigurację środowiska AWS i uruchomienie projektu.
Niezależnie od tego, którą opcję wybierzemy, należy wykonać następujące kroki:
- Utwórz policies.
- Utwórz roles.
- Utwórz bucket (więcej informacji w sekcji: Uwagi dotyczące S3 bucket).
- Utwórz Tracking Lambda.
- Utwórz Handler Lambda.
- Dodaj Handler Lambda jako destinations do Tracking Lambda.
- Dodaj regułę EventBridge (wyzwalaj procedurę co dwie minuty).
- Utwórz Gateway Lambda.
- W API Gateway stwórz http endpoint, route oraz integration.
- Przetestuj aplikacje (wygenerowanie wykresu może zająć kilka minut).
Wymagania
- Docker, instalacja: docker.com.,
- Dostęp do AWS Management Console: link (opcja 1.),
- Skonfigurowane AWS CLI, instalacja: link, konfiguracja link (opcja 2.).
Uwagi dotyczące S3 bucket
- Nazwa S3 bucket musi być unikalna wśród wszystkich istniejących bucketów w Amazon S3, a nie tylko w obrębie Twojego własnego konta AWS lub określonego regionu AWS. Istnieje duża szansa, że nie można użyć domyślnie używanej nazwy „price-tracker-plots”. Z tego powodu nazwę można dostosować w pliku app.config. Po zmianie pliku app.config należy ponownie zbudować projekt.
- Aplikacja Price Tracker ma w kodzie html zawarte linki do wykresów ze zmianami cen. Z uwagi na to, że wykresy te znajdują się w S3 bucket, aby użytkownik końcowy ładując stronę miał do nich dostęp, dostęp do bucketu musi być publiczny.
Opcja 1.: AWS Management Console
- Pobierz repozytorium:
git clone [email protected]:czczajka/price-tracker-serverless.git
- Zmodyfikuj nazwę S3 bucket w pliku app.config (więcej informacji znajdziesz w sekcji: Uwagi dotyczące S3 bucket, punkt 1).
- Zbuduj wszystkie niezbędne artefakty:
./scripts/build.sh
- Obejrzyj film i odtwórz wszystkie kroki w nim zawarte.
Opcja 2.: zautomatyzowana, z wykorzystaniem AWS CLI
W drugim podejściu używamy skryptu, który wykorzystuje AWS CLI do wykonywania tej samej pracy w sposób zautomatyzowany. Jest to opcja dodatkowa oraz zawiera pewne rozwiązania na skróty, np.: wykorzystuje polecenie sleep pomiędzy poszczególnymi wywołaniami do AWS-a. Wynikiem końcowym działania skryptu jest adres URL, pod którym dostępna jest aplikacja Price Tracker.
Ważne
Aby pomyślnie uruchomić skrypty deploy_aws.sh i cleanup_aws.sh użytkownik, skonfigurowany z AWS CLI, musi posiadać wymagane uprawnienia do przeprowadzenia wszystkich potrzebnych operacji. W pliku policy/price-tracker-user.json znajduje się przykładowa polityka, którą można dołączyć do użytkownika.
Kroki do powtórzenia:
- Zmodyfikuj nazwę S3 bucket w pliku app.config (więcej informacji znajdziesz w sekcji: Uwagi dotyczące S3 bucket, punkt 1).
- Uruchom skrypt: ./scripts/deploy_aws.sh
- Przejdź do adresu URL (ostatnia linia zwracana ze skryptu) i sprawdź, czy działa strona poprawnie. Zanim wykres będzie dostępny, może minąć kilka minut.
- Uruchom skrypt: ./scripts/cleanup_aws.sh
- Dobrą praktyką jest sprawdzenie w AWS Management Console, czy wszystkie usługi zostały poprawnie usunięte za pomocą skryptu czyszczącego.
Podsumowanie
W artykule „Price Tracker: praktyczne zanurzenie się w aplikacjach serverless” zaprezentowałem proces tworzenia aplikacji internetowej do śledzenia cen produktów.
Obejmuje on podstawy przetwarzania serverless, podstawowe informacje o chmurze AWS, od konfiguracji usług takich jak Lambda i DynamoDB, planowanie wywołań z serwisem Event Bridge Rule, po wdrożenie ostatecznej aplikacji z wykorzystaniem API Gateway, demonstrując przy tym praktyczne zastosowanie technologii serverless w rzeczywistych scenariuszach.
***
Jeśli interesuje Cię temat narzędzi wykorzystywanych w IT, zajrzyj koniecznie również do innych artykułów naszych specjalistów.
Zostaw komentarz