W przeszłości, moc obliczeniowa była zależna od lokalnej infrastruktury sprzętowej. Aktualnie, gdy twoje oprogramowanie działa w chmurze, ta odpowiedzialność spoczywa na usłudze internetowej Elastic Compute Cloud (EC2).
EC2 oferuje elastyczną moc obliczeniową w środowisku chmurowym. Użytkownicy mają możliwość wypożyczania wirtualnych maszyn, czyli instancji, na których uruchamiają swoje aplikacje. Instancje te mogą być dostosowane pod kątem konfiguracji, systemów operacyjnych, mocy obliczeniowej i pojemności pamięci.
EC2 stanowi kluczowy element Amazon Web Services (AWS), dzięki czemu jest szeroko stosowany w niemal każdym projekcie realizowanym w chmurze. Wyjątkiem jest sytuacja, gdy preferujesz architekturę bezserwerową, gdzie EC2 nie znajduje zastosowania.
Najważniejsze elementy EC2
Źródło: docs.aws.amazon.com
Każda instancja AWS EC2, którą wykorzystasz w projekcie, musi być oparta na innych komponentach AWS, które definiują dokładne parametry konfiguracji.
#1. Instancje
Instancja EC2 to wirtualna maszyna funkcjonująca w chmurze. Można ją skonfigurować i uruchomić w różnorodnych konfiguracjach. Konieczne jest określenie systemu operacyjnego, jaki będzie używany na instancji, oraz jej mocy obliczeniowej, obejmującej procesor i pamięć RAM.
Dodatkowo, można zdefiniować ilość pamięci, która zostanie na stałe przypisana do instancji EC2.
#2. Obrazy maszyn Amazon (AMI)
AMI to gotowe szablony, które zawierają wszystkie niezbędne informacje do prawidłowego uruchomienia instancji. To tutaj wybierasz system operacyjny, na którym będą działać twoje aplikacje, określasz konfigurację serwera aplikacji oraz wybierasz aplikacje, które mają zostać zainstalowane.
#3. Elastyczny magazyn blokowy (EBS)
EBS to usługa pamięci masowej, która zapewnia trwałe woluminy do użytku z instancjami EC2. To w tym miejscu przechowywane są wszystkie dane aplikacji, jak również informacje o użytkownikach, podczas korzystania z aplikacji uruchomionych na instancjach EC2.
#4. Grupy zabezpieczeń
Każda instancja EC2 wymaga kontrolowanego dostępu ze względów bezpieczeństwa. Dotyczy to komunikacji z zewnętrznego świata do instancji EC2 (ruch wychodzący) oraz komunikacji pomiędzy usługami AWS w obrębie infrastruktury chmurowej (ruch przychodzący).
#5. Pary kluczy
Aby podnieść poziom bezpieczeństwa, generuje się pary kluczy publicznych i prywatnych, które są wykorzystywane do bezpiecznego łączenia się z instancjami EC2.
#6. Elastyczne adresy IP
Aby umożliwić dostęp do nowej instancji EC2 z internetu zewnętrznego lub z poziomu własnej infrastruktury chmurowej, konieczne jest przypisanie instancji EC2 statycznego adresu IP. Od tego momentu wirtualna maszyna z instancją EC2 staje się dostępna.
#7. Grupy rozmieszczenia
Umożliwiają tworzenie logicznych grup instancji, zaprojektowanych, aby zapewnić połączenia sieciowe o niskich opóźnieniach i dużej przepustowości. Mają zastosowanie zarówno ze względów organizacyjnych, jak i wydajnościowych.
#8. Automatyczne skalowanie
Ta usługa, charakterystyczna dla różnych dostawców usług w chmurze, automatycznie dostosowuje liczbę instancji EC2 w grupie w zależności od aktualnego zapotrzebowania na moc obliczeniową. Automatyczne skalowanie umożliwia mnożenie instancji EC2 lub dostosowanie ich mocy obliczeniowej, aby obsłużyć zwiększone obciążenie.
W przypadku niższego zapotrzebowania możliwe jest zredukowanie liczby lub mocy instancji. Głównym celem jest uniknięcie spowolnień podczas szczytowego obciążenia, a także oszczędność kosztów w okresach mniejszej aktywności.
#9. Moduły równoważenia obciążenia
Usługa ta rozdziela ruch przychodzący pomiędzy wiele instancji EC2, co przekłada się na większą dostępność i skalowalność systemu.
#10. Wirtualna chmura prywatna (VPC)
VPC to wydzielona, wirtualna sieć, która zapewnia bezpieczne i izolowane środowisko dla instancji EC2. Pozwala na organizowanie instancji EC2 w obrębie tych samych lub różnych VPC, a następnie na definiowanie reguł ruchu przychodzącego i wychodzącego pomiędzy nimi, co przekłada się również na kontrolę komunikacji między instancjami EC2 w infrastrukturze chmurowej.
Często niektóre instancje EC2 powinny być prywatne i dostępne tylko dla kodu aplikacji, podczas gdy inne muszą być dostępne przez Internet. VPC jest idealnym rozwiązaniem dla tego typu potrzeb.
Główne cechy EC2
Źródło: aws.amazon.com
Instancje EC2 oferują skalowalną moc obliczeniową w chmurze AWS. Firmy mogą szybko uruchamiać wirtualne maszyny z wymaganą mocą obliczeniową i pojemnością pamięci, bez konieczności inwestowania w fizyczny sprzęt. Jest to istotna zaleta infrastruktury chmurowej, a EC2 odgrywa tu kluczową rolę.
Instancje EC2 są często używane do hostowania różnorodnych aplikacji lub stron internetowych w chmurze. Mogą obsługiwać zadania wsadowe, przetwarzanie w czasie rzeczywistym, aplikacje internetowe lub mobilne.
Zastosowanie EC2 jest bardzo szerokie. Można wykorzystywać je do obliczeń, uczenia maszynowego, gier, środowisk programistycznych lub testowych. W każdym z tych przypadków instancje EC2 oferują szereg korzyści.
Istotne jest również to, że instancje EC2 można łatwo tworzyć i usuwać w zależności od potrzeb. Dzięki temu oszczędza się koszty związane z infrastrukturą programistyczną i testową w czasie, gdy nie jest ona potrzebna. Możliwość szybkiego uruchamiania i zamykania połączeń z infrastrukturą ma wiele zastosowań biznesowych.
Podstawy przetwarzania w chmurze
W kontekście omówienia EC2, warto krótko wyjaśnić, czym jest przetwarzanie w chmurze.
Przetwarzanie w chmurze to model dostarczania zasobów obliczeniowych przez Internet, na żądanie i jako usługa. Pozwala na dostęp do mocy obliczeniowej, infrastruktury i aplikacji bez konieczności inwestowania we własny sprzęt. Opiera się na kilku zasadach:
- Użytkownicy mają dostęp do zasobów na żądanie, w dowolnym momencie, bez potrzeby przechodzenia przez długi proces zakupu.
- Zasoby chmury są dostępne z każdego miejsca i urządzenia (laptopy, komputery, tablety, telefony).
- Zasoby obliczeniowe są współdzielone i dynamicznie alokowane w odpowiedzi na zmieniające się wymagania.
- Zasoby można szybko skalować w górę lub w dół, w zależności od aktualnego zapotrzebowania.
- Przetwarzanie w chmurze opiera się na modelu płatności za faktyczne zużycie, gdzie użytkownicy płacą tylko za zasoby, z których rzeczywiście korzystają. Ponadto zużycie energii jest monitorowane w czasie rzeczywistym.
Modele usług przetwarzania w chmurze
Przetwarzanie w chmurze można podzielić na trzy główne modele:
Modele wdrażania przetwarzania w chmurze
Przetwarzanie w chmurze różni się również sposobem, w jaki udostępniane i wykorzystywane są zasoby:
Elastyczność EC2
Źródło: aws.amazon.com
Elastyczność jest kluczową cechą przetwarzania w chmurze. Oznacza zdolność infrastruktury chmurowej do dynamicznego przydzielania i zwalniania zasobów obliczeniowych w odpowiedzi na zmieniające się potrzeby. Elastyczność pozwala na skalowanie infrastruktury w górę lub w dół, bez konieczności inwestowania w dodatkowy sprzęt.
Skalowalność to kolejny ważny aspekt chmury – oznacza zdolność systemu do obsługi rosnącego obciążenia bez utraty wydajności.
Na przykład, w przypadku nagłego wzrostu ruchu na stronie internetowej spowodowanego wprowadzeniem nowego produktu, skalowalność umożliwia szybkie zwiększenie zasobów, aby obsłużyć wzmożony ruch.
Skalowalność osiągana jest poprzez wykorzystanie elastycznych zasobów, takich jak maszyny wirtualne, pamięć masowa i sieć, które można szybko i łatwo dostosować.
Automatyczne skalowanie jest funkcją, która wykorzystuje możliwości skalowania i automatyzuje je w oparciu o zdefiniowane parametry obciążenia. Automatycznie dostosowuje liczbę wykorzystywanych zasobów obliczeniowych. Eliminuje to konieczność ręcznego monitorowania i dostosowywania zasobów. Skalowanie może być oparte na różnych metrykach, takich jak wykorzystanie procesora, ruch sieciowy czy czas odpowiedzi aplikacji.
Zasoby przydzielane są dynamicznie i w czasie rzeczywistym, co pozwala na optymalizację wykorzystania infrastruktury. Zasoby są alokowane tylko wtedy, gdy są potrzebne i zwalniane, gdy nie są już używane.
Dynamiczna alokacja zasobów jest kluczową cechą chmury obliczeniowej, ponieważ umożliwia osiągnięcie wysokiego poziomu wydajności przy minimalizacji kosztów.
Korzyści z EC2
Niektóre z zalet EC2 są oczywiste. W podsumowaniu, kluczowe korzyści to:
Elastyczność
EC2 umożliwia łatwe skalowanie zasobów obliczeniowych w górę lub w dół, w zależności od aktualnych potrzeb. Instancje można uruchamiać, usuwać, wstrzymywać i wznawiać w dowolnym momencie. Ponadto, zawsze istnieje możliwość tworzenia kopii zapasowych.
Efektywność kosztowa
Elastyczność EC2 przekłada się na oszczędność kosztów związanych z infrastrukturą. Poprawna konfiguracja instancji EC2 zapewnia, że działają tylko wtedy, gdy są potrzebne, minimalizując niepotrzebne wydatki.
Wysoka dostępność
EC2 oferuje infrastrukturę o wysokiej dostępności, minimalizując przestoje i zapewniając stały dostęp do aplikacji i usług.
Niezawodność
EC2 to niezawodna infrastruktura, która działa bez przerw i zapewnia stałą dostępność i wydajność aplikacji i usług.
Dostępność
Dostęp do EC2 możliwy jest z dowolnego miejsca i urządzenia, takiego jak komputer, laptop, tablet lub smartfon. Możliwe jest również wprowadzenie dowolnych ograniczeń dostępu.
Globalny zasięg
EC2 jest dostępny w wielu regionach na całym świecie, co umożliwia wdrażanie aplikacji i usług bliżej użytkowników oraz przestrzeganie lokalnych przepisów dotyczących ochrony danych.
Zwinność
EC2 oferuje elastyczną infrastrukturę, która pozwala na szybkie reagowanie na zmieniające się warunki rynkowe i przyspieszenie innowacji.
Bezpieczeństwo danych
EC2 zapewnia bezpieczną infrastrukturę, która chroni dane i aplikacje przed nieautoryzowanym dostępem i zagrożeniami cybernetycznymi.
Zgodność
EC2 spełnia wiele standardów i przepisów branżowych, w tym HIPAA, PCI DSS i RODO.
Współpraca
EC2 tworzy środowisko współpracy, w którym zespoły mogą pracować nad projektami oraz dzielić się zasobami i danymi.
Wyzwania związane z EC2
Korzystanie z EC2 wiąże się również z pewnymi wyzwaniami, które warto rozważyć.
#1. Zarządzanie kosztami
Model kosztowy AWS jest złożony, a ceny EC2 nie są tu wyjątkiem. Należy uważnie zarządzać wykorzystaniem zasobów, aby uniknąć nieoczekiwanych kosztów. Niezbędne są narzędzia do ciągłego monitorowania kosztów, takie jak AWS Cost Explorer czy AWS Trusted Advisor.
#2. Bezpieczeństwo
Choć EC2 zapewnia bezpieczną infrastrukturę, to użytkownik jest odpowiedzialny za ochronę swoich aplikacji i danych. Konieczne jest wdrożenie odpowiednich praktyk bezpieczeństwa, takich jak silne hasła, szyfrowanie danych i kontrola dostępu.
#3. Zgodność
Korzystając z EC2, należy upewnić się, że użytkowanie jest zgodne ze standardami i przepisami branżowymi. Wymaga to regularnego przeglądania dokumentacji dotyczącej zgodności AWS oraz współpracy z ekspertami ds. zgodności AWS.
#4. Wydajność
Na wydajność EC2 mogą wpływać różne czynniki, takie jak opóźnienia sieci, operacje we/wy dysku czy wykorzystanie procesora. Należy monitorować wydajność infrastruktury i korzystać z narzędzi optymalizacji, takich jak AWS CloudWatch i AWS X-Ray.
#5. Dostępność
Chociaż EC2 oferuje infrastrukturę o wysokiej dostępności, konieczne jest zapewnienie, aby aplikacje i usługi również były zaprojektowane z myślą o wysokiej dostępności. Warto wykorzystać usługi AWS, takie jak Elastic Load Balancing czy Auto Scaling.
#6. Transfer danych
Transfer danych między instancjami EC2 a innymi usługami AWS może generować dodatkowe koszty, o czym należy pamiętać. Nie dotyczy to tylko wymiany danych z Internetem. Warto używać Amazon S3 i Amazon CloudFront, aby zminimalizować koszty transferu danych.
#7. Uzależnienie od dostawcy
Warto mieć na uwadze potencjalne uzależnienie od dostawcy podczas korzystania z EC2. Należy projektować aplikacje i usługi w sposób umożliwiający ich przenoszenie między różnymi dostawcami usług w chmurze. Wykorzystanie otwartych standardów i API zapewnia interoperacyjność i niezależność od konkretnej platformy.
EC2 i przyszłe trendy
Źródło: aws.amazon.com
Jakie trendy i innowacje będą kształtować przyszłość EC2? Oto kilka z nich.
Bezserwerowość
Przetwarzanie bezserwerowe to stosunkowo nowy paradygmat, który zyskuje na popularności. Programiści mogą uruchamiać kod bez konieczności zarządzania serwerami. Usługi AWS Lambda lub AWS Step Functions są przykładem bezserwerowych usług, które mogą być oparte na EC2.
Uczenie maszynowe
EC2 to dobra infrastruktura do uruchamiania modeli uczenia maszynowego, prognoz i innych obciążeń. W ciągu kilku minut można generować rozbudowane jeziora danych. AWS oferuje również gotowe usługi uczenia maszynowego, takie jak Amazon SageMaker i Amazon Rekognition, które bazują na EC2.
Przetwarzanie brzegowe
Przetwarzanie brzegowe to paradygmat przetwarzania danych bliżej źródła, a nie w centralnym centrum danych. Operacje ładowania danych są wykonywane w miejscu ich generowania. Następnie dane, za pośrednictwem usług buforowania, są przesyłane do centralnego magazynu danych. AWS oferuje szereg usług przetwarzania brzegowego, takich jak AWS Greengrass i AWS IoT, które mogą być wdrożone w oparciu o EC2.
Konteneryzacja
Konteneryzacja polega na pakowaniu aplikacji i usług w kontenery, które można łatwo wdrażać i zarządzać. Zapewnia kompatybilność przy przemieszczaniu usług między instancjami lub infrastrukturami. AWS oferuje usługi konteneryzacji, takie jak Amazon ECS i Amazon EKS, oparte na EC2.
Obliczenia kwantowe
Obliczenia kwantowe to paradygmat wykorzystujący zjawiska mechaniki kwantowej do wykonywania obliczeń. AWS oferuje usługi obliczeń kwantowych, takie jak Amazon Braket, które mogą współdziałać z EC2.
Podsumowanie
EC2 to fundamentalny element każdej poważnej infrastruktury chmurowej. Choć zazwyczaj pojawia się na liście 3 usług generujących najwyższe koszty, to jest to uzasadnione.
EC2 stanowi szkielet infrastruktury chmurowej, na którym opierają się wszystkie pozostałe usługi. Zrozumienie EC2 jest kluczowe dla sukcesu w świecie przetwarzania w chmurze.
Warto również zapoznać się z najlepszymi praktykami dotyczącymi bezpieczeństwa AWS EC2.
newsblog.pl
Maciej – redaktor, pasjonat technologii i samozwańczy pogromca błędów w systemie Windows. Zna Linuxa lepiej niż własną lodówkę, a kawa to jego główne źródło zasilania. Pisze, testuje, naprawia – i czasem nawet wyłącza i włącza ponownie. W wolnych chwilach udaje, że odpoczywa, ale i tak kończy z laptopem na kolanach.