AWS Lambda a Amazon EC2: co wybrać?

Amazon jest jednym z liderów w dziedzinie świadczenia różnorodnych usług w chmurze, oferując kilkadziesiąt usług, a ich liczba wciąż rośnie. Amazon EC2 to jedna z najpopularniejszych usług Amazona i główny element platformy chmurowej Amazon, która została wprowadzona w 2006 roku. Amazon EC2 jest obecnie szeroko stosowany, ale rośnie również popularność innej usługi Amazona o nazwie Lambda (wprowadzonej w 2014 roku). Dzisiejszy wpis na blogu porównuje platformy AWS Lambda i EC2, aby pomóc Ci dokonać właściwego wyboru dla Twojego środowiska.

< span data-sheets-value="{" 1 ":2," 2 ":"

"}” data-sheets-userformat=”{" 2 ":17089," 3 ":{" 1 ":0}," 9 ":1," 10 ":1," 12 ":0," 17 ":1}”>

NAKIVO do tworzenia kopii zapasowej AWS EC2

NAKIVO do tworzenia kopii zapasowej AWS EC2

Tworzenie kopii zapasowej instancji Amazon EC2 na platformie EC2, w usłudze AWS S3 oraz na miejscu. Ochrona przed oprogramowaniem wymuszającym okup. Szybkie odzyskiwanie instancji i obiektów aplikacji.

Czym jest AWS EC2?

AWS EC2 (Amazon Web Services Elastic Compute Cloud) to usługa umożliwiająca korzystanie z maszyn wirtualnych, zwanych instancjami EC2, w chmurze oraz zapewniająca skalowalność. W dowolnym momencie można zmieniać ilość miejsca na dysku, wydajność Procesora, pamięć itp. Można wybrać obraz bazowy z niezbędnym, preinstalowanym systemem operacyjnym (OS), takim jak Linux lub Windows, a następnie skonfigurować większość ustawień systemu operacyjnego oraz zainstalować niestandardowe aplikacje. Masz dostęp użytkownika głównego do swoich instancji Amazon EC2 i możesz tworzyć dodatkowych użytkowników. Zarządzaj wszystkim, czego potrzebujesz, i w pełni kontroluj swoje instancje EC2, w tym restartuj je i wyłączaj. Kategoria usługi internetowej AWS EC2 znana jest jako Infrastructure as a Service. AWS EC2 może być wykorzystywany do hostingu w chmurze – można wdrażać serwery jako maszyny wirtualne (instancje) w chmurze.

Czym jest AWS Lambda?

AWS Lambda to platforma obliczeniowa, która pozwala na uruchamianie fragmentu kodu napisanego w jednym z obsługiwanych języków programowania – Java, JavaScript lub Python – po uruchomieniu wyzwalacza powiązanego z wydarzeniem. Nie ma potrzeby konfigurowania serwera wirtualnego ani środowiska w celu uruchomienia napisanej aplikacji. Wystarczy wstawić kod programu (zwany w tym przypadku funkcją Lambda ) w interfejsie AWS Lambda, powiązać funkcję Lambda ze zdarzeniem i uruchomić aplikację w chmurze w razie potrzeby, bez konieczności zajmowania się zarządzaniem serwerem i konfiguracją środowiska. W ten sposób można skupić się na aplikacji, a nie na zarządzaniu serwerem — dlatego AWS Lambda jest określana jako bezserwerowa.

Zdarzeniem, po którym uruchamiana jest aplikacja, może być przesłanie pliku do zasobnika Amazon S3, wprowadzenie zmian w tabelach DynamoDB, otrzymanie żądania HTTP do usługi API Gateway itp. Po skonfigurowaniu funkcji do uruchamiania w momencie wystąpienia zdarzenia aplikacja będzie uruchamiana automatycznie po każdym nowym zdarzeniu.

Jeśli chodzi o klasyfikację, Lambda jest implementacją modelu Function as a Service (FaaS) firmy Amazon. W poniższej tabeli można zobaczyć poziom zarządzania dla każdego typu usługi, począwszy od korzystania z serwerów fizycznych, i porównać je. Najniższe poziomy (wymagane zarządzanie przez użytkownika) są zaznaczone kolorem zielonym, a wyższe poziomy (zarządzanie zapewniane przez dostawcę) są zaznaczone kolorem niebieskim. Tak więc, korzystając z serwerów fizycznych, można zarządzać sprzętem i wszystkimi wyższymi poziomami. Korzystając z usług typu „Infrastruktura jako usługa” (IaaS), takich jak AWS EC2, można zarządzać systemami operacyjnymi na udostępnionych maszynach wirtualnych (instancjach EC2). Na poziomie Platformy jako Usługi (PaaS) można uruchamiać aplikacje, które przed uruchomieniem muszą zostać skompilowane. Korzystając z Funkcji jako Usługi (FaaS), takiej jak AWS Lambda, nie trzeba kompilować aplikacji – wystarczy wstawić kod do interfejsu udostępnionego przez MSP (dostawcę usług zarządzanych). SaaS (Software as a Service), o którym mowa w tabeli dla porównania, pozwala jedynie na korzystanie z gotowych aplikacji (stworzonych przez dostawców) w chmurze za pomocą cienkiego klienta lub przeglądarki internetowej.

AWS Lambda vs EC2 - comparing the management level for cloud services

AWS EC2 vs Lambda: Przypadki użycia

AWS EC2 ma szeroki zakres przypadków użycia, ponieważ podczas korzystania z tej usługi można skonfigurować niemal wszystko. Najczęstsze przypadki użycia AWS EC2 to:

  • Hosting stron internetowych
  • Tworzenie i testowanie aplikacji lub złożonych środowisk
  • Obliczenia o wysokiej wydajności
  • Odzyskiwanie awaryjne

Ogólne przypadki użycia AWS Lambda:

  • Automatyzacja zadań
  • Przetwarzanie obiektów przesłanych do Amazon S3
  • Analiza logów w czasie rzeczywistym
  • Filtrowanie i przekształcanie danych w czasie rzeczywistym

Rozważmy konkretny przykład. Wyobraź sobie, że Twoja strona internetowa korzysta z zasobnika Amazon S3 do przechowywania treści, w tym zdjęć, filmów, plików audio itp. Gdy zostanie przesłany nowy plik graficzny lub wideo, musisz utworzyć miniaturę dla swojej strony internetowej, która będzie służyć jako link do pełnowymiarowego obrazu lub pliku wideo. Ręczne tworzenie miniatur może być żmudnym i czasochłonnym zadaniem. W tym przypadku można utworzyć funkcję Lambda, która automatycznie zmieni rozmiar obrazu na podstawie przesłanego zdjęcia, zmieni nazwę tego obrazu i zapisze docelowy obraz w odpowiednim katalogu. Funkcję Lambda można skonfigurować tak, aby była wykonywana bezpośrednio po przesłaniu oryginalnego pliku obrazu do zasobnika Amazon S3 używanego przez witrynę internetową.

AWS EC2 vs Lambda: Zasada działania

EC2 . Jak być może pamiętasz, korzystając z AWS EC2, pracujesz z maszynami wirtualnymi (VM) znanymi jako instancje EC2. Do instancji EC2 można dodawać wirtualny sprzęt (dyski wirtualne, interfejsy sieciowe, procesory, pamięć), a także uruchamiać, zatrzymywać i restartować instancję VM. Instancje EC2 mogą współpracować z dwoma typami pamięci masowej – Elastic Block Storage (EBS) i zasobnikami S3. Możesz skorzystać z gotowego obrazu z zainstalowanym systemem operacyjnym lub stworzyć własny obraz Amazon Machine Image (AMI). Usługa chmury EC2 zapewnia automatyczne skalowanie i równoważenie obciążenia. Instancje EC2 mogą współpracować z większością innych usług internetowych Amazon, takich jak S3, ECS, Route53, CloudWatch itp. .

Lambda . Podczas korzystania z AWS Lambda Twoja aplikacja (funkcja Lambda) działa w kontenerze, co jest dla Ciebie całkowicie niewidoczne. Kontener zawiera kod i biblioteki. Zasoby są dostarczane przez Amazon zgodnie z potrzebami aplikacji, a skalowanie odbywa się automatycznie i płynnie. Nie można kontrolować ani kontenera, w którym działa aplikacja, ani instancji EC2, na której kontener ten działa (nie wiadomo o nich nic, ponieważ infrastruktura bazowa jest niedostępna dla użytkowników Amazon Lambda). Zobacz tabelę powyżej.

AWS Lambda można uznać za framework usługi EC2 Container Service (ECS), który wykorzystuje kontenery do uruchamiania fragmentu kodu reprezentującego aplikację. Cykl życia każdego kontenera jest krótki. Działająca funkcja Lambda nie zapisuje swojego stanu. Jeśli chcesz zapisać wyniki, powinny one zostać umieszczone w jakimś magazynie danych, na przykład w zasobniku Amazon S3. Możliwe jest skonfigurowanie sieci wirtualnej dla funkcji Lambda, na przykład w celu połączenia z Amazon RDS (Amazon Relational Database Service). Lambda składa się z wielu części: warstw, środowiska funkcji i modułu obsługi. Wyzwalacze to elementy uruchamiające Lambda. Lambda to pojedyncza funkcja, która jest wykonywana na żądanie wyzwalaczy.

Pełna lista dostępnych wyzwalaczy:

  • API Gateway
  • AWS IoT
  • Alexa Skills Kit
  • Alexa Smart Home
  • Application Load Balancer
  • CloudFront
  • CloudWatch Events
  • CloudWatch Logs
  • CodeCommit
  • Cognito Sync Trigger
  • DynamoDB
  • Kinesis
  • S3
  • SNS
  • SQS

API Gateway to specjalna usługa, która pozwala programistom łączyć różne aplikacje spoza AWS z aplikacjami AWS i innymi zasobami.

AWS EC2 vs Lambda: wersje/migawki

EC2 . Złożony system migawki jest dostępny dla woluminów EBS (Elastic Block Storage) instancji AWS EC2. Można tworzyć przyrostowe migawki i przywrócić do pożądanego stanu instancji EC2. Migawki wielowoluminowe mogą być wykorzystywane do krytycznych obciążeń, na przykład baz danych korzystających z wielu woluminów EBS.

Lambda . Wsparcie dla wygodnego systemu przechowywania wersji funkcji Lambda umożliwia łatwe zarządzanie funkcjami Lambda. Każdej przesłanej kopii kodu można przypisać numer wersji, a następnie dodać aliasy odwołujące się do odpowiedniej wersji kodu. Numer każdej wersji zaczyna się od 1 i jest przyrostowo zwiększany. Funkcje Lambda można na przykład podzielić na wersje alfa, beta i produkcyjne. Nazwa zasobu Amazon (Amazon Resource Name) jest przypisywana do każdej wersji funkcji Lambda podczas publikacji i nie można jej później zmienić.

AWS EC2 vs Lambda: Bezpieczeństwo

EC2 . Należy dbać o swoje instancje EC2 i wszystkie komponenty w nich zawarte. Można ręcznie skonfigurować zaporę ogniową dla instancji EC2 – Amazon udostępnia zaporę ogniową VPC (Virtual Private Cloud) do kontroli ruchu i zapewnienia bezpieczeństwa instancji EC2 w chmurze. Można ręcznie zainstalować i skonfigurować oprogramowanie antywirusowe dla instancji EC2, utworzyć role IAM, określić uprawnienia, utworzyć grupy zabezpieczeń itp. AWS Systems Manager Patch Manager pozwala na automatyczną instalację aktualizacji systemu operacyjnego i poprawek bezpieczeństwa. Można skonfigurować AWS tak, aby przed instalacją poprawki lub aktualizacji wykonał migawkę, aby zapobiec ewentualnym problemom. W razie potrzeby należy utworzyć pary kluczy, aby uzyskać dostęp do instancji EC2. Podczas korzystania z AWS EC2 należy zwracać większą uwagę na bezpieczeństwo niż podczas korzystania z AWS Lambda.

Lambda . Istnieją uprawnienia do usług AWS, do których Lambda ma dostęp domyślnie. Rola IAM służy do definiowania usług, które muszą być dostępne dla funkcji Lambda. Dla każdej funkcji Lambda należy skonfigurować rolę IAM, w imieniu której funkcja Lambda będzie uruchamiana. Oznacza to, że po skonfigurowaniu roli IAM będzie można połączyć funkcję Lambda z określonymi usługami Amazon bez użycia kluczy lub innych parametrów autoryzacyjnych.

Możliwe jest skonfigurowanie szyfrowania między funkcją Lambda a S3, a także między bramą API a Lambda za pomocą klucza KMS. Podczas tworzenia funkcji Lambda tworzony jest domyślny klucz szyfrujący. Zaleca się jednak utworzenie własnego klucza KMS.

W porównaniu z instancjami EC2 funkcje Lambda nie wymagają aktualizacji zabezpieczeń ani poprawek. Podstawowe kontenery i systemy operacyjne są aktualizowane automatycznie przez Amazon. Jest to zaleta korzystania z funkcji Lambda pod względem bezpieczeństwa.

AWS EC2 a Lambda: wydajność i dostępność

EC2 . Po uruchomieniu instancji EC2 działa ona do momentu ręcznego zatrzymania lub zaplanowania zadania wyłączenia. Gdy instancja EC2 jest uruchomiona, aplikacja jest na niej uruchamiana niemal natychmiast. Można uruchamiać jednocześnie dowolną liczbę aplikacji, o ile pozwala na to wydajność instancji EC2. Uruchamianie aplikacji na instancjach EC2 to dobre rozwiązanie, gdy aplikacje muszą działać regularnie przez cały dzień.

Lambda . Funkcja Lambda jest zawsze dostępna, ale nie działa cały czas. Domyślnie funkcja Lambda jest nieaktywna. Gdy aktywowany jest wyzwalacz powiązany z wydarzeniem, uruchamia się Twoja aplikacja (funkcja Lambda). Maksymalny czas działania funkcji Lambda (limit czasu) jest ograniczony do 900 sekund (15 minut). W związku z tym uruchamianie aplikacji długotrwałych w AWS Lambda nie jest dobrym pomysłem. Jeśli musisz uruchamiać aplikacje, których pomyślne wykonanie wymaga więcej niż 900 sekund, lub aplikacje o zmiennym czasie wykonania, rozważ użycie AWS EC2. Kolejnym ograniczeniem dla uruchomionej funkcji Lambda jest maksymalna ilość pamięci, która wynosi 3008 MB.

W zależności od regionu można jednocześnie uruchomić od 1000 do 3000 instancji Lambda. Skontaktuj się z pomocą techniczną AWS, jeśli chcesz uruchamiać więcej instancji jednocześnie.

Opóźnienie między wysłaniem żądania a wykonaniem aplikacji wynosi do 100 milisekund w przypadku AWS Lambda, w przeciwieństwie do aplikacji działających na instancjach EC2, które nie mają takiego opóźnienia. 100 ms to nie jest długo, ale dla niektórych typów aplikacji ten czas może mieć kluczowe znaczenie. Jeśli Twoja aplikacja musi pobrać dane z zasobnika Amazon S3, przed uruchomieniem aplikacji może być potrzebne dodatkowe 1–3 sekundy. Pamiętaj o tym opóźnieniu, planując użycie AWS Lambda do uruchamiania aplikacji.

Czas zimnego startu jest wadą funkcji Lambda. Opóźnienie występuje, gdy funkcja nie jest uruchamiana przez dłuższy czas, a uruchomienie kontenera i funkcji w Amazon Cloud wymaga czasu. Wykorzystanie AWS Lambda do uruchamiania aplikacji może być dobrym rozwiązaniem w przypadku nierównomiernego obciążenia, gdy aplikacje muszą być uruchamiane o różnych porach dnia z długimi przerwami między ich uruchomieniami.

AWS Lambda vs EC2: Model cenowy

Zarówno usługa chmury EC2, jak i Lambda działają na zasadzie płatności zgodnie z rzeczywistym zużyciem. Przyjrzyjmy się jednak szczegółom i różnicom.

EC2 . Płacisz za czas, w którym instancja AWS EC2 jest uruchomiona, niezależnie od tego, czy funkcja/aplikacja jest wykonywana. Cena za godzinę zależy od wydajności Procesora, ilości pamięci, wydajności karty graficznej oraz pojemności pamięci masowej wykorzystywanej przez instancję EC2. Jeśli Twoja funkcja lub aplikacja musi być zawsze dostępna ze względu na dużą liczbę regularnych żądań, korzystanie z instancji AWS EC2 może być bardziej opłacalne finansowo.

Lambda . Płacisz za liczbę uruchomień aplikacji oraz czas potrzebny do zakończenia ich wykonywania. Cena za każdą sekundę działania aplikacji zależy od ilości pamięci przydzielonej dla aplikacji i wynosi 0,00001667 USD za każdy gigabajt na sekundę. Czas wykonywania aplikacji liczy się od momentu jej uruchomienia do zwrotu wyniku lub zatrzymania po upływie limitu czasu. Czas jest zaokrąglany w górę do najbliższej liczby będącej wielokrotnością 100 ms. Jeśli potrzebujesz dostępności na żądanie, cena za korzystanie z AWS Lambda do uruchamiania funkcji/aplikacji może być korzystniejsza.

Wnioski

AWS EC2 to usługa reprezentująca tradycyjną infrastrukturę chmury (IaaS), która pozwala uruchamiać instancje EC2 jako maszyny wirtualne, konfigurować środowiska i uruchamiać niestandardowe aplikacje.

AWS Lambda to implementacja usługi Function as a Service firmy Amazon, która pozwala na uruchamianie aplikacji bez konieczności martwienia się o infrastrukturę bazową. AWS Lambda zapewnia architekturę bezserwerową i umożliwia uruchamianie fragmentu kodu w chmurze po aktywacji wyzwalacza zdarzenia. Korzystając z AWS Lambda, zyskujesz skalowalną, niewielką i niedrogą funkcję z kontrolą wersji. Możesz skupić się na pisaniu kodu, a nie na konfigurowaniu infrastruktury.

Jeśli obliczyłeś, że Twoja aplikacja ma dużo czasu bezczynności na instancji EC2, która działa cały czas, rozważ użycie AWS Lambda, dzięki czemu nie musisz płacić za czas bezczynności, jeśli nie ma żądań uruchomienia aplikacji. Jeśli występuje duża liczba regularnych żądań uruchomienia aplikacji, lepszym rozwiązaniem może być wdrażanie aplikacji na instancji EC2, która działa cały czas.

Korzystanie z AWS EC2 jest dobrym rozwiązaniem w przypadku aplikacji o wysokiej wydajności, aplikacji działających przez długi czas oraz aplikacji, które nie mogą mieć opóźnień w momencie uruchomienia. Jeśli korzystasz z instancji AWS EC2, nie zapomnij wykonać ich kopii zapasowej, aby uniknąć utraty danych. NAKIVO Backup & Replication to kompleksowe rozwiązanie do ochrony danych, które może chronić instancje EC2, a także maszyny wirtualne VMware vSphere, maszyny wirtualne Hyper-V i serwery fizyczne.

Wypróbuj NAKIVO Backup & Replication

Wypróbuj NAKIVO Backup & Replication

Skorzystaj z bezpłatnej wersji próbnej, aby poznać wszystkie funkcje rozwiązania w zakresie ochrony danych. 15 dni za darmo. Bez żadnych ograniczeń dotyczących funkcji ani pojemności. Nie trzeba podawać danych karty kredytowej.

People also read