AWS – Amazon Web Services – co to jest i w jaki sposób mogę to wykorzystać?

Czym jest AWS i jakie usługi oferuje? Często jest określany jako chmura, cloud lub dostawca usług (service). Ale co to tak właściwie dla nas znaczy i jakie usługi nam dostarcza?

Lista usług które nam dostarcza AWS jest bardzo długa. Postaram się opisać te najpopularniejsze z którymi można się zetknąć na samym początku i od których warto zacząć.

EC2 – Elastic Cloud Computing

Jest to chyba najpopularniejsza usługa Amazona. Możemy poprzez nią zażądać stworzenia dla nas maszyn wirtualnych. Po kilku minutach dostajemy świeży serwer na którym możemy uruchomić naszą aplikację, czy postawić stronę www. Maszyny rozliczane są za zużycie, czyli płacimy tylko za czas przez który działają. Jeśli ich nie potrzebujemy, usuwamy je z naszego konta i rachunek nie jest już nabijany. Od niedawna koszt maszyn naiczany jest co sekundę zamiast za każdą rozpoczętą godzinę.

W ramach usługi EC2 Amazon oferuje nam między innymi:

  • Load Balancery które pomogą rozłożyć ruch pomiędzy maszyny,
  • Automatyczne skalowanie – możemy ustawić zasady które mówią kiedy uruchomić lub zabić maszyny (np. gdy użycie procesora przez ostatnie 5min jest większe niż 50% dodaj 2 kolejne maszyny)
  • Firewall – możesz określać jakie grupy lub ip mogą się łączyć do maszyny
  • i wiele więcej…

S3 – Simple Storage Service

Kolejna bardzo popularna usługa – serwis do przechowywania plików. Teoretycznie możemy przechować nieskończoną ilość danych, ograniczeni jesteśmy tylko rozmiarem pojedynczego pliku który wynosi 5TB. Dane wysyłamy i pobieramy za pomocą rządań HTTP. Możemy również przy pomocy tej usługi hostować statyczną stronę WWW. Dzięki temu nie potrzebujemy dodatkowych serwerów które serwowały by statyczne pliki (np. obrazki). Często wykorzystywane jest to aby umieścić tam frontend aplikacji który łączy się z backendem uruchomionym na instancji EC2.

Tutaj też płacimy za zużycie, jednak cennik jest bardziej skomplikowany. Na cenę składa się ilość danych przechowywanych w usłudze oraz ilość pobrań/listowań/wysłań plików. Jednak ceny nie są wysokie, przykładowo zapłacimy $0.005 za 1000 pobrań pliku (słownie: pięć tysięcznych dolara za tysiąc pobrań pliku), a transfer w ramach sieci Amazona jest darmowy (np. przesyłanie do instancji w EC2).

RDS – Relational Database Service

Usługa pozwala nam stworzyć bardzo szybko bazę danych. Wybieramy tylko typ bazy (MySQL, PostgreSQL, Oracle….), wielkość maszyny (ilość ramu, procesora, dysk) i otrzymujemy gotową bazę dla naszej aplikacji, która będzie automatycznie updatowana oraz będzie tworzona automatycznie kopia zapasowa. Amazon niedawno udostępnił w ramach tej usługi w pełni zarządzaną przez nich bazę MySQL która się automatycznie skaluje w zależności od obciążenia.

DynamoDB

Kolejna usługa związana z przechowywaniem danych, tym razem jest to baza NoSQL. Jest zarządzana całkowicie przez Amazon więc nie musimy się martwić o backupy, maszyny i ilość danych w niej przechowywanych. Musimy jednak zadeklarować jak duży będziemy generować ruch (w zapytaniach na sekundę) i za to płacić. Przy dużym ruchu baza staje się dość szybko droga.

Route53

Route53 pozwala nam zarządzać domenami. Dzięki niej możemy zarejestrować domenę, oraz nią zarządzać. Przez zarządzanie mam na myśli wskazywanie zasobów które mają się pod nią znaleźć poprzez modyfikowanie wpisów w DNS (tworzenie subdomen, wskazywanie na który serwer ma prowadzić domena, tworzenie aliasów itp.). Serwis ten daje nam również możliwość monitorowania serwisów, poprzez odpytywanie zasobów znajdujących się pod naszą (sub-)domeną i wysyłanie powiadomień jeśli coś jest nie tak lub przełączenie ruchu w inne miejsce.

ECR – Elastic Container Registry

Jeśli tworzysz własne obrazy Dockerowe jest to miejsce gdzie możesz je bezpiecznie przechowywać i współdzielić z innymi osobami.

ECS – Elastic Container Service

ECS umożliwia uruchamianie i zarządzanie kontenerami Dockerowymi. Daje też możliwość łatwego skalowania aplikacji w zależności od aktualnych potrzeb. 

Lambda

Lambda umożliwia nam uruchamianie kodu bez potrzeby tworzenia infrastruktury. Wysyłamy tam stworzonego JARa lub wklejamy kawałek kodu w Pythonie/JavaScripcie i zostanie on uruchomiony kiedy będzie taka potrzeba. Usługa pozwala nam na konfigurację kiedy zachodzi taka potrzeba, przykładowo może być to stworzenie nowego pliku na S3 lub wywołanie odpowiedniego adresu URL. 

SQS – Simple Queue Service

SQS daje nam dostęp do systemu kolejek. Możemy wrzucać tam wiadomości z jakiegoś systemu i zostaną one zapisane w kolejce. Następnie inna aplikacja może podłączyć się do kolejki i pobierać znajdujące się tam wiadomości. 

SNS – Simple Notification Service

Usługa ta umożliwia nam wysyłanie powiadomień do dużej liczby urządzeń/aplikacji na raz. SNS obsługuje również wysyłanie notyfikacji push do urządzeń mobilnych czy wysyłanie powiadomień na e-mail lub SMS. 

Podsumowanie

Przedstawione usługi to tylko garstka z udostępnianych przez AWS serwisów. Amazon cały czas je udoskonala i pracuje nad dodawaniem nowych usług. Rozwiązanie to jest bardzo łatwe w użyciu i można szybko się przyzwyczaić do wygody. Jeśli potrzebujemy nowy serwer do przetestowania naszej aplikacji, wystarczy kilka kliknięć i dostajemy nową maszynę. Potrzebujemy jakiejś dodatkowej usługi, nowego narzędzia aby dostarczyć nową funkcjonalność w aplikacji? Kilka kliknięć i dostajemy gotowe do użycia rozwiązanie, bez potrzeby konfigurowania serwerów i aplikacji na nich. 

Jak zacząć?

Jeżeli chcesz przetestować usługi oferowane przez AWS, wystarczy się zarejestrować. Na początek Amazon daje nam tak zwany free tier, dzięki któremu możemy sprawdzić dużą część usług za darmo. W free tier możemy mieć przykładowo małą instancję EC2 (1 procesor, 1GB ramu i do 30GB dysku), jedną instancję bazy danych w RDS (20 GB powierzchni dyskowej), 5GB w usłudze S3 oraz wiele więcej. Niestety dostęp do free tiera wymaga podania karty kredytowej, więc trzeba uważać, aby nie przekroczyć limitów ponieważ później zostaniemy obciążeni kosztami. 

Michał Autor

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

This site uses Akismet to reduce spam. Learn how your comment data is processed.