0Pricing
Cloud & IT Cert Prep · Lekcja

Pojemność aprowizowana a tryb On-Demand

Wybiorą między aprowizowaną przepustowością z automatycznym skalowaniem a trybem On-Demand na podstawie przewidywalności ruchu i kosztów.

Pojemność aprowizowana a tryb On-Demand to bezpłatna lekcja Cloud & IT Cert Prep na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Cloud & IT Cert Prep, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cloud & IT Cert Prep zawiera 4 lekcji w sumie.

Wyjaśnienie jednostek przepustowości DynamoDB

DynamoDB mierzy przepustowość za pomocą jednostek przepustowości odczytu (RCU) i jednostek przepustowości zapisu (WCU). Jedna RCU umożliwia wykonanie jednego silnie spójnego odczytu na sekundę (lub dwóch ostatecznie spójnych odczytów) dla elementów o rozmiarze do 4 KB. Jedna WCU umożliwia wykonanie jednego zapisu na sekundę dla elementów o rozmiarze do 1 KB.

W przypadku większych elementów koszt skaluje się proporcjonalnie: zapis elementu o rozmiarze 10 KB kosztuje 10 WCU, a silnie spójny odczyt elementu o rozmiarze 10 KB kosztuje 3 RCU (ceil(10/4) = 3). Zrozumienie jednostek przepustowości jest niezbędne do szacowania kosztów i diagnozowania błędów ograniczania przepustowości ProvisionedThroughputExceededException.

Tryb przepustowości provisioned

W trybie Provisioned Capacity określają Państwo dokładną liczbę RCU i WCU, które powinna obsługiwać tabela. DynamoDB rezerwuje tę przepustowość i pobiera za nią opłaty niezależnie od tego, czy jest wykorzystywana. Jeśli aplikacja przekroczy przydzieloną przepustowość, żądania są ograniczane i zwracają wyjątek ProvisionedThroughputExceededException.

Tryb provisioned jest idealny dla obciążeń o przewidywalnym, stabilnym ruchu. Koszt jednostkowy jest niższy niż w trybie On-Demand, a koszty można dodatkowo zmniejszyć, kupując DynamoDB Reserved Capacity (zobowiązania na 1 rok lub 3 lata z rabatem do 76%).

# Create a table with provisioned capacity
aws dynamodb create-table \
  --table-name Products \
  --attribute-definitions AttributeName=ProductId,AttributeType=S \
  --key-schema AttributeName=ProductId,KeyType=HASH \
  --provisioned-throughput ReadCapacityUnits=100,WriteCapacityUnits=50

Tryb przepustowości on-demand

W trybie On-Demand DynamoDB automatycznie skaluje się, aby obsłużyć dowolny poziom ruchu, bez konieczności planowania przepustowości. Opłaty są naliczane za każde żądanie: za faktycznie zużyte RRU (jednostki żądań odczytu) i WRU (jednostki żądań zapisu). Nie ma przepustowości provisioned do zarządzania ani ograniczania ruchu z powodu limitów przepustowości provisioned.

Tryb On-Demand jest idealny dla: nieprzewidywalnych obciążeń lub nagłych skoków ruchu, nowych tabel o nieznanym ruchu oraz środowisk programistycznych i testowych z rzadkim dostępem. Koszt pojedynczego żądania jest wyższy niż w trybie provisioned, dlatego w przypadku stabilnych obciążeń o dużej przepustowości tryb provisioned jest bardziej ekonomiczny.

# Create a table in on-demand mode
aws dynamodb create-table \
  --table-name Events \
  --attribute-definitions AttributeName=EventId,AttributeType=S \
  --key-schema AttributeName=EventId,KeyType=HASH \
  --billing-mode PAY_PER_REQUEST

Przełączanie między trybami przepustowości

Tabelę można w dowolnym momencie przełączać między trybem Provisioned i On-Demand za pomocą konsoli lub CLI. Tryb można jednak zmienić tylko raz na 24 godziny. Po przełączeniu na On-Demand tabela zachowuje wcześniejszą szczytową przepustowość provisioned jako początkowy poziom przepustowości, co chroni przed natychmiastowym ograniczaniem ruchu, jeśli jest on już duży.

Popularna strategia polega na używaniu trybu On-Demand podczas początkowego uruchamiania, gdy wzorce ruchu są nieznane, a następnie przełączeniu na tryb Provisioned z funkcją Auto Scaling, gdy ruch stanie się przewidywalny, co pozwala zmniejszyć koszty.

# Switch a table to on-demand billing mode
aws dynamodb update-table \
  --table-name Products \
  --billing-mode PAY_PER_REQUEST

Auto Scaling DynamoDB w trybie provisioned

Funkcja Auto Scaling DynamoDB automatycznie dostosowuje wartości RCU i WCU provisioned do rzeczywistego ruchu. Należy określić docelowy procent wykorzystania (np. 70%) oraz zakres minimalnej i maksymalnej przepustowości. Zasada Application Auto Scaling monitoruje zużytą przepustowość tabeli i dostosowuje przepustowość provisioned, aby utrzymać docelowy poziom wykorzystania.

Auto Scaling reaguje na utrzymujące się zmiany ruchu, a zwiększenie przepustowości może zająć kilka minut. Funkcja ta nie radzi sobie dobrze z nagłymi skokami ruchu — w takich sytuacjach należy ręcznie wcześniej zwiększyć przepustowość albo użyć trybu On-Demand.

# Register table as an auto scaling target
aws application-autoscaling register-scalable-target \
  --service-namespace dynamodb \
  --resource-id 'table/Products' \
  --scalable-dimension dynamodb:table:ReadCapacityUnits \
  --min-capacity 10 \
  --max-capacity 1000

Przepustowość buforowa

DynamoDB zachowuje do 5 minut niewykorzystanej przepustowości provisioned jako przepustowość buforową. Gdy ruch w tabeli na krótko przekroczy przydzielony poziom, DynamoDB korzysta z puli buforowej, aby obsłużyć dodatkowe żądania bez ich ograniczania. Po wyczerpaniu puli buforowej kolejne żądania przekraczające limit są ograniczane.

Przepustowość buforowa jest krótkoterminowym zabezpieczeniem, a nie zamiennikiem prawidłowego planowania przepustowości. Należy monitorować metryki CloudWatch ConsumedReadCapacityUnits i ConsumedWriteCapacityUnits, aby wykryć, kiedy obciążenie stale zużywa przepustowość buforową, i odpowiednio dostosować przepustowość provisioned.

Ograniczanie przepustowości i obsługa błędów

Gdy przepustowość provisioned zostanie przekroczona (a bufor wyczerpany), DynamoDB zwraca wyjątek ProvisionedThroughputExceededException. Zestawy AWS SDK zawierają wbudowaną logikę ponawiania prób z wykładniczym zwiększaniem odstępów i losowym rozrzutem, która automatycznie ponawia ograniczone żądania.

Aby zdiagnozować ograniczanie przepustowości, należy sprawdzić metryki CloudWatch SystemErrors i ThrottledRequests. Jeśli ograniczane są konkretne klucze partycji, podczas gdy ogólne wykorzystanie tabeli pozostaje niskie, oznacza to problem gorącej partycji — należy przeprojektować klucz partycji, dodać klucz sortowania albo użyć dzielenia zapisów na fragmenty.

Szacowanie wymaganej przepustowości

Aby oszacować przepustowość dla trybu Provisioned:

  • Obliczyć szczytową liczbę zapisów na sekundę × średni rozmiar elementu / 1 KB (zaokrąglając w górę) = wymagana liczba WCU
  • Obliczyć szczytową liczbę odczytów na sekundę × średni rozmiar elementu / 4 KB (zaokrąglając w górę) = wymagana liczba RCU (dla odczytów silnie spójnych); w przypadku odczytów ostatecznie spójnych zmniejszyć wynik o połowę
  • Dodać 20–30% zapasu powyżej wartości szczytowej, aby obsłużyć skoki ruchu, zanim zostanie zużyta przepustowość buforowa

Przykład: 1000 zapisów/s elementów o rozmiarze 2 KB = 2000 WCU. 5000 odczytów/s elementów o rozmiarze 8 KB (ostatecznie spójnych) = ceil(8/4) × 5000 / 2 = 5000 RCU.

Przepustowość zarezerwowana jako sposób na obniżenie kosztów

DynamoDB Reserved Capacity umożliwia zakup stałej liczby RCU i WCU na okres 1 roku lub 3 lat, z płatnością z góry i znacznym rabatem (do 76%) w porównaniu z cenami On-Demand. Zarezerwowana przepustowość obejmuje wszystkie tabele w trybie provisioned w danym Regionie i jest automatycznie uwzględniana w opłatach godzinowych.

Reserved Capacity dotyczy wyłącznie trybu Provisioned — nie można jej używać w trybie On-Demand. Jest to najlepsza opcja obniżenia kosztów w przypadku stabilnych, przewidywalnych obciążeń, które można wiarygodnie prognozować na okres 1–3 lat.

Porównanie trybów: przewodnik po decyzjach egzaminacyjnych

W przypadku pytań SAA-C03 dotyczących trybu przepustowości należy korzystać z poniższego przewodnika:

  • On-Demand: nieprzewidywalny ruch, nowa aplikacja, rzadki dostęp, obciążenie z nagłymi skokami, potrzeba całkowitego wyeliminowania zarządzania przepustowością
  • Provisioned: stały i przewidywalny ruch, nacisk na koszty, gotowość do zarządzania przepustowością, możliwość skorzystania ze zniżek Reserved Capacity
  • Provisioned + Auto Scaling: przewidywalny poziom bazowy z pewną zmiennością, potrzeba automatycznego dostosowywania bez ręcznych zmian

Na egzaminie słowa kluczowe takie jak 'spiky', 'unpredictable' lub 'minimal operational overhead' wskazują na On-Demand, natomiast 'steady traffic' lub 'cost optimisation' wskazują na Provisioned.

Przepustowość adaptacyjna

Funkcja Adaptive Capacity DynamoDB automatycznie przekierowuje przepustowość z chłodnych partycji do gorących partycji w czasie rzeczywistym. Jeśli jeden klucz partycji otrzymuje więcej ruchu niż przydzielony mu udział, przepustowość adaptacyjna pobiera przepustowość z niedostatecznie wykorzystywanych partycji, aby obsłużyć gorącą partycję — pod warunkiem że całkowita przepustowość tabeli nie zostanie przekroczona.

Przepustowość adaptacyjna jest zawsze włączona i nie wymaga konfiguracji. Ogranicza problemy z throttlingiem gorących partycji przy umiarkowanie nierównomiernych wzorcach dostępu. W przypadku obciążeń o silnie nierównomiernym rozkładzie (np. gdy jeden klucz partycji otrzymuje 90% ruchu) przepustowość adaptacyjna nie wystarczy — należy przeprojektować klucz partycji albo użyć dzielenia zapisów na fragmenty.

Szybkie sprawdzenie

Sprawdź swoją wiedzę na temat zagadnień AWS Solutions Architect (SAA-C03) omówionych w tej lekcji.

Podsumowanie lekcji

W tej lekcji poznali Państwo następujące zagadnienia: tryb Provisioned ustawia stałe wartości RCU/WCU dla przewidywalnych obciążeń przy niższym koszcie, tryb On-Demand skaluje się automatycznie w przypadku nieprzewidywalnego ruchu, ale ma wyższą cenę za żądanie, a Auto Scaling dostosowuje przepustowość provisioned na podstawie docelowych wartości procentowego wykorzystania. W następnej części omówimy indeksy Global Secondary Indexes i Local Secondary Indexes służące do realizacji alternatywnych wzorców zapytań.

Często zadawane pytania

Czy lekcja „Pojemność aprowizowana a tryb On-Demand” jest bezpłatna?

Tak — pełny tekst „Pojemność aprowizowana a tryb On-Demand” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Cloud & IT Cert Prep, przejdź na CoddyKit PRO. Kurs Cloud & IT Cert Prep zawiera 4 lekcji w sumie.

Co nauczysz się w „Pojemność aprowizowana a tryb On-Demand”?

Wybiorą między aprowizowaną przepustowością z automatycznym skalowaniem a trybem On-Demand na podstawie przewidywalności ruchu i kosztów. Ćwiczysz Cloud & IT Cert Prep z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Cloud & IT Cert Prep?

Nie wymagamy żadnego doświadczenia. Cloud & IT Cert Prep w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Pojemność aprowizowana a tryb On-Demand”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Cloud & IT Cert Prep?

Tak. Każda lekcja Cloud & IT Cert Prep zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Tabele, elementy i klucze główne
  2. Pojemność aprowizowana a tryb On-Demand
  3. Globalne i lokalne indeksy pomocnicze
  4. Strumienie DynamoDB i tabele globalne
← Powrót do Cloud & IT Cert Prep