Typy instancji EC2 - dobierz serwer do zadania
Uruchomienie instancji EC2 to jedno. Ale wybranie odpowiedniego typu to umiejętność, która odróżnia początkującego od kogoś, kto naprawdę rozumie chmurę. AWS oferuje ponad 600 typów instancji. Brzmi przytłaczająco? Spokojnie, za chwilę wszystko się wyjaśni.
Konwencja nazewnictwa
Każdy typ instancji ma nazwę, np. m5.large. Wygląda jak szyfr, ale jest prosty do odczytania:
- m - rodzina instancji (General Purpose)
- 5 - generacja (im wyższa, tym nowsza i lepsza)
- large - rozmiar (ilość vCPU i RAM)
Czasem pojawia się dodatkowa litera, np. m5a.large (procesor AMD), m5g.large (procesor AWS Graviton/ARM), m5d.large (z lokalnym dyskiem NVMe).
Rozmiary instancji
Rozmiary idą od nano do metal (cały fizyczny serwer!):
nano → micro → small → medium → large → xlarge → 2xlarge → ... → 24xlarge → metal
Każdy „skok" w górę to z reguły podwojenie vCPU i RAM. Przykład dla rodziny m5:
- m5.large: 2 vCPU, 8 GB RAM
- m5.xlarge: 4 vCPU, 16 GB RAM
- m5.2xlarge: 8 vCPU, 32 GB RAM
Rodziny instancji - Twój kompas
General Purpose (T, M)
Zbalansowany stosunek CPU, RAM i sieci. Idealne na start i dla większości workloadów.
- T3/T3a/T4g - „burstable". Mają bazową wydajność CPU i mogą „przyspieszyć" gdy potrzeba (za kredyty CPU). Świetne do dev/test, małych aplikacji, stron WWW
- M5/M6i/M7g - stała wydajność. Aplikacje produkcyjne, backendy, małe bazy danych
Compute Optimized (C)
Wysoki stosunek CPU do RAM. Do zadań wymagających surowej mocy obliczeniowej:
- Batch processing
- Modelowanie naukowe
- Game serwery
- Machine learning (inference)
- Encoding wideo
Memory Optimized (R, X, z)
Dużo RAM w stosunku do CPU. Dla aplikacji operujących na dużych zbiorach danych w pamięci:
- Bazy danych in-memory (Redis, Memcached, SAP HANA)
- Real-time przetwarzanie dużych zbiorów danych
- Analityka big data
Storage Optimized (I, D, H)
Szybki dostęp do dużych ilości danych na dysku lokalnym:
- Data warehousing
- Rozproszone systemy plików (HDFS)
- Bazy NoSQL wymagające niskiej latencji I/O
Accelerated Computing (P, G, Inf, Trn)
Instancje z GPU lub dedykowanym hardware do specjalistycznych zadań:
- Machine learning (training i inference)
- Rendering grafiki 3D
- Transkodowanie wideo
- Obliczenia finansowe
Firma e-commerce ma trzy różne workloady:
- Strona WWW (Ruby on Rails) - ruch zmienny, większość czasu niski → T3.medium (burstable, tanie)
- Cache sesji użytkowników (Redis) - wymaga dużo RAM → R6g.large (Memory Optimized)
- Generowanie raportów PDF (CPU-intensive) - batche nocne → C6i.xlarge (Compute Optimized)
Każdy workload ma inny profil. Jeden typ instancji dla wszystkiego? To jak jazda ciężarówką do sklepu po mleko.
AWS zaprojektował własne procesory ARM: Graviton2 i Graviton3 (oraz Graviton4). Instancje z Graviton (oznaczone literą „g", np. m7g, c7g, r7g) oferują:
- Do 40% lepszy stosunek ceny do wydajności vs odpowiedniki x86
- Lepszą efektywność energetyczną
- Pełną kompatybilność z większością aplikacji Linux
Jeśli Twoja aplikacja działa na Linuksie i nie wymaga specyficznych bibliotek x86, Graviton to prawie zawsze lepszy wybór cenowo.
- Nazwa instancji: rodzina + generacja + rozmiar (np. m5.large)
- General Purpose (T, M) - zbalansowane, do większości zadań
- Compute Optimized (C) - surowa moc CPU
- Memory Optimized (R, X) - dużo RAM
- Storage Optimized (I, D, H) - szybki I/O dyskowy
- Accelerated (P, G) - GPU i specjalistyczny hardware
- T = burstable (kredyty CPU), dobra na zmienne obciążenie
- Graviton (g) = procesory ARM od AWS, lepszy stosunek ceny do wydajności
Aplikacja wymaga stałego, wysokiego obciążenia CPU do renderowania wideo. Którą rodzinę instancji wybierzesz?
Co oznacza litera „g" w nazwie instancji m7g.large?
Masz bazę danych Redis (in-memory cache) wymagającą 128 GB RAM. Którą rodzinę wybierzesz?