Okiem JellyTech -> AWS (wybrane usługi)
Amazon Web Services - największa i najstarsza platforma, oferująca rozwiązania chmurowe. Przedstawiamy Wam subiektywny wybór kilkunastu usług, które naszym zdaniem dobrze poznać jeśli zarządzasz danymi, wdrażasz aplikacje czy wykonujesz testy. Zapraszamy do lektury.
Na początek kilka istotnych informacji.
AWS uważa się za aktualnego lidera wśród platform chmurowych. Na rynku nieprzerwanie od 2006 r. Na pozycji lidera plasuje się m.in. dlatego, że obecnie zajmuje 32% wszystkich rozwiązań chmurowych w ogóle i oferuje największy wachlarz dostępnych usług. Oferuje ponad 200 usług dotyczących przechowania i migracji danych, infrastruktury i bezpieczeństwa sieciowego, machine learningu, Internet of Things (IoT), monitoringu i innych. Czym on zatem jest? To kombajn narzędziowy całego IT. Pozwala na development, zarządzanie kontami i uprawnieniami w Cognito. Można AWS'em obsłużyć cały proces CI/CD.
Chmura Amazon Web Services obejmuje 99 stref dostępności (Availability Zones) w 31 regionach geograficznych na całym świecie, w tym 8 stref na terytorium Europy. W Polsce jeszcze nie doczekaliśmy się takiej strefy, choć słyszeliśmy zapowiedzi na ten temat.
Zarządzanie platformą jest możliwe za pomocą portalu webowego AWS Console. Infrastrukturą AWS wygodnie zarządza się też z poziomu command line.
No to teraz troszkę o zastosowaniu.
Chmura to narzędzie dedykowane dla administratorów. Rozwiązuje wiele bolączek związanych z infrastrukturą. Przez lata AWS wypracował pokaźną liczbę (jak pisaliśmy ponad 200-stu) usług i funkcjonalności, które pomagają administratorom i devopsom, choć nie tylko, na sprawne zarządzanie infrastrukturą właśnie.
My w artykule skupimy się na wspominanych zastosowaniach: przechowywanie danych, wdrażanie aplikacji i testowanie aplikacji. Dlaczego? Dla nas to taka baza. Dodatkowo o AWS mogłaby powstać druga Britannica 😉 Trzeba się zatem skupić na określonych usługach. Przygotowaliśmy słownik związany z tymi trzema obszarami.
Jakie mamy zatem podstawowe usługi związane z przechowywaniem danych i jaka jest ich główna charakterystyka:
- Amazon Simple Storage Service (S3) - usługa, która umożliwia przechowywanie i pobieranie danych w postaci plików, a także w formie obiektów, które mogą być używane w aplikacjach.
- Amazon Elastic Block Store (EBS) - usługa, która umożliwia przechowywanie danych na dyskach twardych wirtualnych maszyn EC2 oraz tworzenie woluminów dyskowych, które można podłączyć do maszyn wirtualnych.
- Amazon Glacier - umożliwia przechowywanie danych w postaci archiwalnej czyli takich, które są rzadko używane, ale muszą być przechowywane przez długi czas.
- Amazon RDS (Relational Database Service) - jest to usługa zarządzania relacyjnymi bazami danych, która umożliwia łatwe tworzenie i zarządzanie bazami danych, takimi jak MySQL, PostgreSQL, Oracle i wiele innych.
AWS oferuje też szereg usług, które pozwalają na wdrożenie aplikacji. Jakie?
- Amazon Elastic Compute Cloud (EC2) - to usługa, która umożliwia wdrażanie maszyn wirtualnych, a także skalowanie aplikacji w górę lub w dół w zależności od potrzeb.
- AWS Lambda - umożliwia uruchamianie kodu bez serwera, czyli w odpowiedzi na zdarzenia, takie jak żądania HTTP, zmiany w bazie danych, czy dodanie pliku do S3.
- AWS Elastic Beanstalk - to usługa, która umożliwia wdrażanie i zarządzanie aplikacjami webowymi i usługami mikroserwisów. Automatyzuje wiele zadań związanych z wdrażaniem aplikacji, takich jak konfiguracja środowiska, skalowanie, monitorowanie i zarządzanie aplikacją.
- Amazon ECS - umożliwia wdrożenie aplikacji w kontenerach, a także zarządzanie nimi w sposób skalowalny i elastyczny.
- AWS CodeDeploy - umożliwia automatyczne wdrażanie kodu na maszyny wirtualne, kontenery lub serwery fizyczne. To narzędzie, zapewni automatyczny rollback w przypadku awarii.
- Amazon Lightsail - oferuje prosty interfejs użytkownika oraz narzędzia do zarządzania aplikacjami, takimi jak bazy danych, kontenerami i urządzeniami sieciowymi.
- Amazon CloudFormation - to usługa, która umożliwia wdrażanie infrastruktury AWS w sposób zautomatyzowany, umożliwia tworzenie i zarządzanie stosami, które zawierają wszystkie potrzebne zasoby, takie jak EC2, RDS, S3 i wiele innych.
Na koniec testowanie aplikacji.
I tutaj AWS przychodzi z pomocą. Ma do tego dedykowane narzędzia i moduły w ramach usług o szerszych zastosowaniach:
- AWS Device Farm - usługa umożliwiająca testowanie aplikacji mobilnych na różnych urządzeniach i platformach, bez konieczności posiadania własnych urządzeń. Można przeprowadzać na niej testy automatyczne i manualne.
- AWS CodeBuild - narzędzie umożliwiające automatyczne budowanie aplikacji i wykonywanie testów jednostkowych. Można łatwo skonfigurować budowanie i testowanie aplikacji na różnych środowiskach.
- AWS Lambda – pisaliśmy już o niej, można łatwo przeprowadzać w niej testy jednostkowe kodu i monitorować wyniki.
- Amazon EC2 – również wspomniana wyżej usługa, która umożliwia wirtualizację serwerów, co pozwala na łatwe testowanie aplikacji na różnych konfiguracjach sprzętowych i systemach operacyjnych.
- I współpracujący zarówno z Lambdą jak i EC2 - AWS CodeDeploy - narzędzie umożliwiające automatyczne wdrażanie aplikacji na różnych środowiskach, można łatwo w nim skonfigurować proces wdrażania.
Zapewne interesujące byłoby jeszcze ile to może kosztować? 😉
AWS stosuje model płatności oparty na rzeczywistym użyciu zasobów, takich jak czas pracy maszyn wirtualnych, transfer danych, czy wywołania funkcji w usługach bezserwerowych. Naliczanie kosztów odbywa się zazwyczaj w konwencji Pay-as-You-Go, a koszty są naliczane za czas wykorzystania zasobów, przy czym niektóre usługi naliczają koszty co godzinę, a inne co minutę.
Popularną formą rozliczeń są także Reserved Instances, gdzie klienci mogą dokonać niskiej, jednorazowej płatności za zarezerwowaną pojemność i dedykowane hosty czyli uruchamianie swoich aplikacji na dedykowanych serwerach.
Można też po prostu podpisać jakby formę zobowiązania z tym dostawcą np. do stałej ilości wykorzystania mocy obliczeniowej. Ma to często swoje konsekwencje w postaci dwuletnich a nawet dłuższych umów o współpracę. Jak to jednak bywa przy takich umowach, możemy tu negocjować rabaty ;)
Część zasobów AWS należy do Free Tier - są to zasoby bezpłatne, ale zazwyczaj nadają się jedynie do eksperymentów z infrastrukturą. Można też spróbować opcji Spot Instances. Wtedy można licytować wolną moc obliczeniową Amazon EC2 i uruchamiać aplikacje po niższych kosztach.
Czy warto? 😉
Usługi AWS nie są tanie. Ale jeśli ktoś zapyta czy warto zainwestować w chmurę - odpowiedź będzie pozytywna. Za wynegocjowany poziom zobowiązania finansowego, w zamian dostaniemy skalowalność, bezpieczeństwo i globalną architekturę. Minusem zdaje się być swego typu uzależnienie od usług AWS. Po wybraniu tej chmury można napotkać trudności z późniejszym przeniesieniem danych. Dodatkowo AWS może być początkowo skomplikowany w obsłudze dla osób nieznających chmur obliczeniowych.
Subiektywne podsumowanie
Opisane wyżej usługi można wykorzystać w każdej organizacji oraz branży. AWS wywodzi się z e-commerce, ale dobrze sprawdza się również w finansach, medycynie, nauce. Wszędzie tam, gdzie potrzebujemy hostować stronę internetową lub aplikację, przechowywać dane, tworzyć kopie zapasowe, rozwiązania IoT i Big Data, zarządzać zasobami IT , zarządzać bazami, a nie chcecie wykorzystywać własnej infrastruktury, AWS przyjdzie z adekwatnym rozwiązaniem.
Wiemy, że nie wyczerpaliśmy jeszcze tematu. Sami w JellyTech pracujemy na wielu różnych usługach i weryfikujemy opłacalność użycia chmur dla Naszych klientów. Gdybyście mieli zatem jakieś pytania odnośnie AWS zapraszamy do kontaktu. Na koniec cytat z klasyka ;):
„Bądź uparty w wizji, ale elastyczny w szczegółach”.
Ave Jeff Bezos😉