Zamierzasz rozpocząć nowy projekt, a może masz zamiar opracować nowe funkcje? Przed podjęciem jakichkolwiek działań warto dowiedzieć się jak najwięcej o różnych zewnętrznych narzędziach, które mogą być dla nas przydatne.
Dwie podstawowe i prawdopodobnie najpopularniejsze usługi AWS to EC2 i S3. W skrócie: dzięki EC2 możesz skonfigurować swoje projekt i pokazać go światu, podczas gdy S3 służy do przechowywania danych dowolnego rodzaju. W tym artykule chciałbym jednak przyjrzeć się innym mniej lub bardziej popularnym narzędziom AWS, z których zwykle korzystamy w Codest.
Cloudfront
Jest to narzędzie stworzone specjalnie do bardzo szybkiego dostarczania zasobów do wielu użytkowników. I wiele nie oznacza setek lub tysięcy, ale miliony żądań dla pojedynczego zasobu. Na przykład, chcesz umożliwić umieszczenie grafiki, css, html lub javascript na dowolnej stronie. Chcesz też mieć pełny wpływ na zawartość, którą zasób udostępnia - musisz coś zmienić i chcesz, aby ta zmiana nastąpiła na wszystkich stronach z Twoim plikiem. I tu z pomocą przychodzi AWS Cloudfront, ze wszystkimi swoimi możliwościami, które sprawią, że końcowy użytkownik otrzyma Twój zasób tak szybko, jak to tylko możliwe.
Cloudfront oferuje również szereg statystyk. Na przykład - strony, które były najczęściej wymagane, urządzenia, z których wykonano żądanie zasobu, statusy http itp.
Oczywiście narzędzie to jest dość drogie, ale im więcej zapytań do cloudfront będzie kierowanych, tym mniej zapłacimy za usługę. Dlatego warto rozważyć to rozwiązanie w przypadku, gdy chcemy umieścić zasoby na stronach o naprawdę dużym lub nawet ogromnym ruchu.
Partia
Mówiąc najprościej, jest to usługa pozwalająca na wykonywanie dużej liczby zadań bezpośrednio w AWS. Wystarczy przygotować skrypt wykonawczy i obraz dockera, a AWS Batch zajmie się resztą. Batch dynamicznie utworzy instancje na EC2, przydzieli odpowiednie miejsce dla zadań i uruchomi je w tym samym czasie. Nie musisz się martwić, że w Twojej instancji EC2 zabraknie miejsca lub pamięci, ani że będziesz musiał ciągle myśleć o tym, kiedy i jak zadanie może zostać uruchomione. Do komunikacji między skryptem w obrazie docker a usługą wystarczy utworzyć interfejs API i gotowe. Jeśli chcesz korzystać z Batch, powinieneś również przygotować swoje repozytorium docker w usłudze Amazon Elastic Container Registry (ECR).
Warto również wspomnieć o innej usłudze, która czerpie korzyści z kontenerów docker. Nazywa się ona Elastic Container Service (ECS). Jego główną różnicą w porównaniu do Batch jest to, że musisz samodzielnie skonfigurować i skalować instancję EC2, podczas gdy Batch wykonuje całą pracę za Ciebie. Koszty Batch zależą od tego, które instancje EC2 są dozwolone do użycia, ponieważ w tym przypadku płacisz tylko za uruchomione instancje.
Lambda
AWS Batch wykonuje pracę poprzez uruchomienie obrazów docker, podczas gdy kolejna usługa - AWS Lambda - pozwala na bezpośrednie uruchomienie skryptu. Nie ma potrzeby konfigurowania żadnego serwera, usługa kod jest uruchamiana wirtualnie, a co jeszcze lepsze, możesz również zwrócić jakąś wartość w wybrany przez siebie sposób.
Kiedy można go użyć? Załóżmy, że chcemy dokonać pewnych obliczeń na naszej stronie internetowej w oparciu o parametry z przeglądarki, a być może dodatkowo obliczenia te wymagają dodatkowych zapytań do innych miejsc w sieci. W takim przypadku wystarczy utworzyć endpoint w Lambdzie, dodać swój skrypt i użyć tego endpointu na stronie. To naprawdę proste.
Koszty Lambda są liczone tylko wtedy, gdy skrypt jest uruchomiony, gdy punkt końcowy nie jest używany, nic nie płacisz.
SNS
Simple Notification Service, jak sama nazwa wskazuje, jest narzędziem specjalnie opracowanym do wysyłania powiadomień. Można go łatwo wykorzystać do komunikacji między różnymi usługami AWS. Na przykład, masz grupę mikrousług i chcesz, aby jedna z nich kierowała pozostałymi - uruchamiała niektóre z nich lub wykonywała pewne akcje. W tym konkretnym przypadku możesz wysyłać powiadomienia z głównej usługi i obsługiwać odbieranie wiadomości w innych mikroserwisach, które preferujesz. Przy okazji warto również wspomnieć o Amazon Simple Queue Service (SQS), który może stworzyć bardzo ciekawe połączenie wraz z SNS.
W przypadku SNS (a także SQS) płatność jest dostarczana tylko za wykonane żądania: wysyłanie wiadomości do SNS, wysyłanie wiadomości z SNS do innych usług i inne dodatkowe żądania z puli API SNS.
RDS
Amazon Relational Database Service to po prostu zewnętrzna baza danych. Dzięki tej usłudze AWS umożliwia łatwą konfigurację, użytkowanie i skalowanie relacyjnej bazy danych. Przykładowo, jeśli spodziewasz się, że Twoja baza danych będzie miała dość spory rozmiar i z dnia na dzień będzie się coraz bardziej rozrastać, a także planujesz regularnie wykonywać na niej mniej lub bardziej skomplikowane operacje, np. przetwarzanie i kopiowanie danych do innej bazy, to warto rozważyć to rozwiązanie. Dostępne silniki bazodanowe to PostgreSQL, MySQL i MariaDB.
Łatwo zgadnąć, że koszty RDS są związane z rozmiarem bazy danych i jej wykorzystaniem, więc trudno powiedzieć, czy będzie to bardzo kosztowne, czy nie.
Podsumowanie
AWS nieustannie się zmienia, niezależnie od tego, czy chodzi o ulepszanie istniejących usług, czy tworzenie czegoś nowego. Warto nie tylko być na bieżąco z ich innowacjami technologicznymi, ale także poznać już istniejące rzeczy.
Przydatne linki