Snowflake – płacisz za to, z czego korzystasz. Czyli za co właściwie?
To już ten moment – przenosisz hurtownię danych do Snowflake’a. W końcu nie trzeba tam utrzymywać kosztownej architektury, kupować podzespołów, aktualizować oprogramowania. Wszystkie zalety korzystania z chmury. W tym wpisie opiszę za co zapłacisz korzystając ze Snowflake’a.
Zanim zabierzemy się za dokładne omówienie jak ogarnąć ile w ogóle potencjalnie wyniesie faktura od Snowflake’a polecam zajrzeć najpierw tutaj, gdzie opisuję architekturę Snowflake’a.
Znając już architekturę wiemy, że Snowflake składa się z 3 warstw:
- Usługi chmurowe (Cloud Services)
- Przetwarzanie zapytań (Query Processing – Virtual Warehouse)
- Przechowywanie baz danych (Database Storage)
Opłaty są naliczane w za rzeczywiste użytkowanie poszczególnych warstw + ewentualnie kosztów transferu danych.
Koszty Virtual Warehouse
Tutaj zacznę od tego, że Snowflake mierzy koszty za wykorzystaną moc obliczeniową w kredytach (Snowflake Credits). Kredyty są konsumowane jedynie w momencie jak wykorzystujesz jakieś zasoby.
Koszt 1 kredytu jest zależny od 2 czynników:
- Regionu chmury, który wybierzesz przy tworzeniu swojego konta
- Edycji Snowflake’a
Na stronie Snowflake’a możecie sprawdzić cenę kredytów poszczególnych regionów i edycji. Są tam też wymienione dostępne usługi, jakie zapewnia Snowflake w zależności od dostawcy chmury, regionu i edycji.
To ile tych kredytów w ogóle wydasz? Tutaj wchodzi temat rozmiaru wirtualnego warehouse’a – dostępna od XS kosztującego 1 kredyt za godzinę pracy, aż po rozmiar 6XL, który kosztuje 512 kredytów za każdą godzinę (posiadając konto z edycją Enterprise na AWS w regionie US East przeliczając na $ w najtańszej opcji wyjdzie $3 i najdroższej $1536/h).
Każdy rozmiar wirtualnego warehouse’a podwaja jego moc, jak również koszt.
Snowflake udostępnia jeszcze warehouse’y zoptymalizowane dla procesów Snowpark (kod Python, Java, Scala) z 16x większą ilością dostępnej pamięci. Ich koszt jest jednak zwiększony o 50%.
Ważną kwestią jest, że koszt za wykorzystanie Warehouse’ów nalicza się sekundowo z minimalnym kosztem za 60 sekund.
Jak obniżyć koszty przetwarzania zapytań?
Przede wszystkim stosować się do ogólnie przyjętych najlepszych praktyk:
- Odpowiednio modelować dane
- Wykorzystywać adekwatny rozmiar Warehouse’ów
- Ustawić timeout (najczęściej na poziomie Warehouse’a)
- Pilnować poziomu uprawnień do baz danych i schematów
- Ograniczyć liczbę użytkowników z uprawnieniami do tworzenia i zarządzania zasobami do niezbędnego minimum.
- Monitorować wykorzystanie zasobów i obiektów -> warto tego pilnować, żeby nie zorientować się w pewnym momencie, że przez ostatnie 2 lata płaciliście za przetwarzanie danych i tworzenie tabel, z których nikt nie korzysta i nie będzie korzystał.
Koszty Cloud Services
Usługi Chmurowe w Snowflake’u działają przeważnie w tle. są wykorzystywane do:
- wszelkich komend DDL
- zarządzania pamięcią podręczną i odczytywania metadanych
- optymalizowania zapytań
- zarządzania dostępami
- automatyczną reklasteryzacją tabel
- aktualizacją widoków zmaterializowanych.
Cloud Services wykonuje swoje zadania automatycznie i nie da się nimi bezpośrednio zarządzać.
Koszt za wykorzystane zasoby na działanie Usług Chmurowych nie zostanie naliczony na fakturze, jeśli nie przekroczy 10% dziennych kosztów naliczonych za wykorzystanie Warehouse’ów. W przeciwnym razie nadwyżka będzie doliczona do faktury.
Koszty Storage
Tutaj sprawa jest dość prosta. Koszty zależą głównie od tego ile miejsca średnio w ciągu miesiąca zajmowały obiekty w Snowflake’u (tabele, time-travel, widoki zmaterializowane, backupy fail-safe.
Drugim elementem jest znowu Region dostawcy chmury.
Jak obniżyć koszt za przechowywanie danych?
- Wykorzystywać odpowiedni rodzaj tabeli -> o tym więcej w tym wpisie.
- Rozpatrzyć wykup odpowiedniej ilości przestrzeni dyskowej z góry zamiast korzystać z przestrzeni on-demand. Jak widać na powyższych screenshotach koszt wykupionej z góry przestrzeni jest niemal połowę tańszy, więc jeśli Twoja organizacja przechowuje stale większe ilości skompresowanych danych niż 1 TB to wykup tej przestrzeni z góry może okazać się znacznie tańszym rozwiązaniem.
- Nie przechowywać niepotrzebnych danych – nie dość, że zajmują przestrzeń i zwiększają koszty, to jeszcze utrudniają poruszanie się wśród użytecznych tabel.
Koszty transferu danych
Niestety dochodzą jeszcze koszty transferu danych. W sytuacji, gdyby zaszła potrzeba przeniesienia danych do innego regionu lub dostawcy usług chmurowych koszty mogą wahać się od $20 do $190 za transfer 1 TB danych.
Transfer wewnątrz tego samego regionu u tego samego dostawcy chmury jest darmowy.
No dobra, ale ile kosztuje Snowflake w miesiącu?
Odpowiedź jest prosta – to zależy. Potestuj Snowflake za darmo przez miesiąc na edycji, która spełnia Twoje wymagania pod względem funkcjonalności i sprawdź w zakładce Admin
-> Usage
ile kosztowały Cię testy.
W filtrze Usage Types możesz też wyfiltrować koszt za wykorzystanie mocy obliczeniowej, przechowywania danych i transferu.
Dodaj komentarz