Za co i jak płacisz w chmurze AWS
Artykuł ukazał się pierwotnie na blogu Chmurowiska.
Tworzysz konto w chmurze. Podpinasz kartę kredytową. Idziesz spać i nie możesz zasnąć. Zastanawiasz się za co i jak płacisz w chmurze AWS.
Postaram się to wyjaśnić
Czy mam się czego bać?
To zależy… 😉 Jeżeli podejdziesz do tematu bezmyślnie, zaczniesz tworzyć zasoby w chmurze bez opamiętania i nie będziesz ich usuwać, to odpowiedź jest jednoznaczna. Tak, bój się o swój bilans na karcie na koniec miesiąca.
Jeżeli jednak działasz z rozmysłem, nie próbujesz oszukać systemu, to możesz spać spokojnie. Nic złego Cię nie czeka. Jak wiesz w chmurze płacisz za to czego używasz, jak długo używasz lub jak często używasz.
Ile to kosztuje
Ponownie napiszę: ‚to zależy’. Możesz się zdziwić, ale w zależności od miejsca na świecie, w którym uruchamiasz swoje zasoby, cena będzie się różniła. Dziwne? Nie do końca. Uruchomienie serwerowni na pustyni kosztuje pewnie więcej niż w miejscu, gdzie krzyżują się autostrady. Gdy ktoś pyta mnie o konkretne ceny, zawsze odsyłam do bieżącego cennika. Chmura to jednak nie tylko maszyny wirtualne.
Ale tak naprawdę za co płacisz
No właśnie. Bo jak porównać maszynę wirtualną do funkcji Lambda czy Kinesis. Słabo, nie da się.
Ogólnie można powiedzieć, że w AWS płacisz za:
- compute
- storage
- ruch wyjściowy
Każda usługa ma jednak swój cennik i sposób rozliczania. Czasem są tylko minuty lub sekundy, czasem ilość wywołań lub zajęte miejsce „na dysku”. Część usług (do pewnego poziomu) będzie za darmo. Koszmar…
https://aws.amazon.com/blogs/startups/six-ways-to-reduce-your-aws-bill/
Free Tier
Tak, możesz dostać od AWS coś za darmo. Z tak zwanego Free Tier można skorzystać na dwa sposoby:
Przez pierwsze 12 miesięcy od założenia konta niektóre usługi można wykorzystać za darmo w ograniczonym zakresie. Pozwoli to na zapoznanie się z nimi. Mamy dostępne np:
- 750 godzin miesięcznie pracy maszyny EC2 t2.micro
- 5GB przestrzeni w usłudze S3
- 750 godzin miesięcznie pracy instancji RDS w rozmiarze t2.micro
- 50 GB transferu z CloudFront
Dodatkowo, AWS oferuje przez cały czas część usług, w ograniczonym zakresie, za darmo. Drugiego Amazona przy pomocy tych zasobów nie utworzymy, ale jest dostępne dla nas na przykład:
- 200 milionów requestów do bazy DynamoDB
- 1 milion wywołań funkcji Lambda
- odzyskanie do 10GB danych z usługi Glacier
Jak to w końcu jest
Trudno jest tak naprawdę dokładnie oszacować ile nas będzie kosztowała chmura. Można coś policzyć, ale jeżeli nie znamy w pełni ruchu na naszych zasobach to nie będzie to łatwe. Często, dopiero po kilku miesiącach wiesz co tam naprawdę dzieje się na Twoim koncie i jesteś w stanie zareagować, zaoszczędzić.
Zobaczmy na przykładzie kilku popularnych usług jak podejść do szacowania wydatków w AWS oraz na to, co ma wpływ na ich wysokość.
EC2
Jeżeli chodzi o maszyny wirtualne, to już ilość sposobów, na które możemy je „kupować” może wzbudzić przerażenie. Mamy do wyboru instancje:
- On-Demand
- Reserved
- Spot
- Scheduled
Dochodzą do tego tak zwane Savings Plans i Capacity Reservations. Tutaj wyjaśniona jest różnica pomiędzy nimi. Można korzystać także z dedykowanych hostów i dedykowanych instancji.
Jest z czego wybierać. Na początku jednak najczęściej korzystamy z instancji on-demand, czyli takich, które możemy w dowolnym momencie włączyć i wyłączyć, a zapłacimy tylko za okres, w którym były włączone. Nie płacimy nic z góry, nie zobowiązujemy się do niczego. W każdym momencie możemy zmienić rodzaj maszyny na większą lub mniejszą. Wygodne. Ale nie najtańsze. Takie maszyny używamy przede wszyskim gdy:
- nasze aplikacje nie pracują ze stałym obciążeniem
- ciężko określić jakiej mocy obliczeniowej będziemy potrzebowali
- tworzymy nasze rozwiązania, testujemy je
Taniej wyjdą nas tak zwane reserved instances. W zależności od tego na jak długo zarezerwujemy maszynę, ile zapłacimy z góry i czy zostawimy sobie możliwość zmiany rodziny instancji możemy zapłacić do 75% mniej. Na początku, gdy uruchamiamy nowe aplikacje, ciężko będzie dokładnie określić jakiej mocy potrzebujemy, ale po kilku miesiącach możemy przyjrzeć się utylizacji zasobów i zdecydować się na wykupienie rezerwacji.
Rezerwacje dadzą nam też pewność, że w razie potrzeby dana maszyna będzie dla nas dostępna.
Ciekawym i bardzo tanim sposobem zakupu maszyn wirtualnych są tak zwane spot instances. To takie Allegro w AWS. Oferujemy jakąś kwotę za maszynę i jeżeli jest ona dostępna i nikt nie „licytuje” więcej to AWS nam takie zasoby udostępni. Cena może być do 90% niższa od instancji on-demand. Gdzie kruczek? W każdym momencie możemy taką instancję EC2 stracić. Nie piszę, że zdarzy się to na pewno, ale musimy być na taki obrót sprawy przygotowani. Kiedy warto zerknąć w kierunku spotów?
- Jeżeli nie ma znaczenia kiedy nasze aplikacje uruchomimy
- Jeżeli nie ma sensu uruchamianie aplikacji przy zwykłych cenach
- Jeżeli nagle potrzebujemy znacznych mocy obliczeniowych
Oprócz rodzaju instancji czy modelu zakupu na cenę naszych rozwiązań korzystających z maszyn EC2 może mieć wpływ jeszcze wiele innych czynników takich jak:
- Load Balancery
- włączenie detailed monitoring
- autoskalowalnie
- stałe adresy IP
- system operacyjny zainstalowany na maszynie
S3
Storage jest bardzo ważnym elementem rozwiązań chmurowych. Tutaj także mamy bardzo wiele możliwości i opcji. Z jednej strony dobrze, z drugiej wiąże się z tym także mnogość opcji w cenniku.
Składując dane w usłudze S3 to ile zapłacimy będzie zależało od:
- klasy
- ilości danych
- ilości requestów do bucketów
- ilości danych pobranych z bucketa
Trzy ostatnie punkty wydają się jasne. Wątpliwości może budzić pojęcie classes. Szczegółowy cennik znajdziemy tutaj, jednak w uproszczeniu, w zależności od tego, którą klasę wybierzemy (przemieszczając się od lewej strony do prawej tabelki) zapłacimy mniej za przechowywanie danych, a więcej za ich pobieranie.
Serverless
Jeżeli chodzi o usługi typu serverless to prawdziwe będzie stwierdzenie, że płacimy za nie tylko wtedy gdy ich używamy. Utworzona kolejka w usłudze SQS nie kosztuje nas nic do momentu w którym zaczniemy z niej korzystać. Funkcja Lambda, która nie pracuje także nie podniesie naszego rachunku. Z jednej strony wydaje się to proste, ale i tak warto zawsze spojrzeć w cennik danej usługi. Przykładowo opłaty za korzystanie z SQS zależą od:
- ilości requestów
- zawartości requestów
- wielkości przekazywanych danych (jeden request to maksymalnie 256 kB, ale płacimy za bloki 64kB)
- typu kolejki (zwykła lub FIFO)
- interakcji z Key Management System
W przypadku usługi API Gateway zapłacimy za liczbę requestów, ilość wysłanych danych, cache.
Co dalej?
Warto na pewno przyglądać się rachunkom za chmurę. Przy użyciu usługi AWS Cost Explorer sprawdzać na co tak naprawdę idą nasze pieniądze. Możemy tam rozłożyć sobie rachunek na poszczególne konta (jeżeli mamy utworzoną organizację), usługi, availability zony.
Jeżeli korzystamy z maszyn wirtualnych, baz danych w usłudze RDS lub innych usług, które konsumują pod spodem maszyny wirtualne to na pewno warto przyglądać się metrykom utylizacji tych zasobów. Często zdarza się, że kupujemy maszyny o wiele większe niż tak naprawdę potrzebujemy.
Przy większych rozwiązaniach warto też na pewno próbować estymować koszt naszego rozwiązania. Tu pomocny na pewno będzie kalkulator AWS.
Problem jest taki, że praktycznie nigdy nie zrobimy dokładnej estymacj. W większości przypadków nasz estymacje, szczególnie te, przy przenoszeniu rozwiązań z on-premises, są znacznie zawyżone. Jest więc z czego schodzić. A tu przewaga chmury jest ogromna. Nie zostają nam niepotrzebne rzeczy. Po prostu przestajemy je używać i za nie płacić. Nigdy nie zostaniemy z kupą nieuzywanego żelastwa.