Masz pomysł na aplikację którą chciałbyś/chciała utrzymywać w możliwie jak najtańszy sposób?
Chcecie uruchomić aplikację ale jeszcze nie wiecie czy pomysł się przyjmie?
O to parę pomysłów jak to zrobić tanio i „szybko” w Azure.
Składniki
Poniżej moja propozycja z jakich usług mogła by się taka infrastruktura składać. Każda z nich ma swoje plusy i minusy ale dla wprawnego oka mają one jedną wspólną cechę „serverless” (Nie wszystkie są typowymi usługami serverless ale na pewno da się ich użyć tanio).
- Function Apps
- API Management
- Blob Storage
- Table Storage
- Azure SQL Database
- Azure AD B2C
Przejdźmy sobie teraz po kolei przez każdą z nich.
Function Apps
Jest to odpowiedź Microsoft na hasło serverless ale nie chce teraz tutaj opisywać usługi tylko bardziej chce się skupić na jej plusach i minusach (pod kątem kosztów).
- Koszt wykonania to: €0.000014/GB-s
- Koszt za liczbę wykonani: €0.169 per million executions
Policzmy coś na szybko:
- 2 miliony wykonani naszej funkcji
- czas trwania 2 sekundy
- konsumpcja pamięci 128 MB
2 sekundy * 2 000 000 miliony = 4 000 000 miliony sekund * 128 MB / 1024 MB = 500 000 GB – 400 000 GB = 100 000 GB * €0.000014 = €1.4
2 000 000 miliony wywołani – 1 000 000 = 1 000 000 * €0.169 = €0.169
Całkowity koszt miesięczny takiej infrastruktury to: €1.4 + €0.169 = €1,57
Uff… udało się policzyć ale czemu te funkcje są takie fajne? Są ponieważ tak jak większość usług mają swoje darmowe limity w których z moich doświadczeń da się jak najbardziej użyć do projektów MVP.
W ramach miesięcznych darmowych limitów mamy:
- 400 000 GB-s czasu wykonania
- 1 000 000 wywołani naszej funkcji
Z minusów jakie należy wziąć pod uwagę korzystając z Function Apps jest tzw. Cold Start, czyli czas potrzeby na uruchomienie instancji naszej aplikacji.
Możemy sobie z „nim” poradzić np. poprzez zastosowanie planu Consumption Plan Premium lub ustawienie App Service Plan (Basic, Standard, Premium) .
API Management
Kolejnym elementem przydatnym w naszej przykładowej infrastrukturze jest usługa API Management która również oferuje wersję serverless.
Możemy jej użyć w formie gateway dla naszej infrastruktury, oraz wcześniej przygotowanego API na Azure Functions.
Przy jej pomocy wszystkie elementy naszego API zostaną zabezpieczone przy pomocy np. subscription key i polityk jakie ono udostępnia.
Niestety ale obecnie dokumentacja Microsoft nie udostępnia informacji ile płacimy za 1 wywołanie wiemy natomiast, że 1 milion wywołani jest za darmo ( https://azure.microsoft.com/en-us/pricing/details/api-management/).
Blob Storage i Table Storage
Są to dwie usługi do przechowywania danych w formie „NoSQL” jest to trochę sformułowanie na wyrost ale postaram się to wyjaśnić.
Blob Storage jest usługą w której będziemy przechowywać wszelkiego rodzaju pliki np. zdjęcia, JSON. Tak możemy tam również użyć sztuczki w której nasze dane są przechowane na blob jako pliki JSON.
Table Storage jest usługą typowo NoSQL która przechowuje dane w postaci wierszy i zestawu kolumn. Jest ona szybka bardzo skalowalna ale pod warunkiem zachowania ostrożności i pamiętania, że dane w niej przechowywane są indeksowane tylko po kolumnach Partition Key i Row Key.
Z obu tych usług możemy skorzystać w naszej aplikacji aby przechować dane których potrzebujemy w czasie działania naszego systemu lub jako archiwum np. dla logów jakie nasza aplikacja odkłada.
Ceny i koszty korzystania z powyższech usług:
- Blob Storage przy założeniu, że korzystamy z ZRS HOT (Zone Redundant Storage) przy pierwszych 50 TB w miesiącu zapłacimy €0.0203 za GB, czyli przechowując np. 10 GB danych na których wykonamy 10.000 operacji (read, write) zapłacimy ok. 10 GB * €0.0203 = €0.203 + €0.0037 = €0.2067
- Table Storage przy założeniu, że z ZRS HOT (Zone Redundant Storage) zapłacimy €0.0474 za GB, czyli przechowując np. 10 GB danych na których wykonamy 10.000 operacji (read, write) zapłacimy ok. 10 GB * €0.0474 = €0.474 + €0.000304 = €0.474304
Podsumowując usługi storage płacimy w nich za przechowanie danych oraz za operacje na nich wykonane gdzie:
- Dla Blob Storage
- przechowanie: €0.0203 za GB
- operacje: $0.0037 za 10.000 operacji w miesiącu
- Dla Table Storage
- przechowanie: €0.0474 za GB
- operacje: €0.000304 za 10.000 operacji w miesiącu
Azure SQL Database
Jak sama nazwa wskazuje jest dobrze nam znana baza danych Microsoft SQL Server świadczona jako usługa SaaS w chmurze. Jednak nas interesuje jedna szczególna konfiguracja Service Tier: General Purpose, Compute Tier: Serverless.
Przejdźmy do kosztów tej usługi. Dla przykładu przyjąłem sobie:
- Aplikacja działa 8h dziennie przez 20 dni w miesiącu (dni pracujące)
- Danych mamy 10 GB
Policzmy to
- vCore: 8h * €0.484 = €3.87 + (1h * €0.484) = €4.36 * 20 = €87.12
- Storage: 10 GB * €0.1155 = €1.16
- Point-In-Time backup: 10 GB * €0.201 = €2.01
Azure AD B2C
Jest to usługa z której możemy skorzystać aby wykonać prosto i szybko mechanizm logowania do naszej aplikacji. Umożliwia ona również stworzenie mechanizmów logowania powiązanych z social providers.
Największym plusem tej usługi jest fakt, że pozwala na obsługę do 50.000 użytkowników miesięcznie całkowicie za darmo.
Podsumowanie
Koszt naszej przykładowej architektury to orientacyjnie ok. €100 miesięcznie. Oczywiście da się taką architekturę zbudować używając innych komponentów ale w mojej ocenie jest to dobry punkt wyjścia gdy zaczyna się budowę jakiegoś rozwiązania lub chcemy przygotować jakiś prototyp.
W wymienionym rozwiązaniu największym kosztem jest baza danych ale przy niedużych systemach można również próbować wykorzystać Cosmos DB i jego Free Tier.
Photo on Unsplash
真诚赞赏,手留余香
使用微信扫描二维码完成支付
comments powered by Disqus