Wprowadzenie
Zarządzanie kosztami jest bardzo ważnym aspektem każdego rozwiązania chmurowego. Dobra widoczność wydatków oraz możliwość kontrolowania i optymalizacji kosztów są kluczowe dla każdego przedsiębiorstwa korzystającego z infrastruktury chmurowej, aby zapewnić maksymalną wartość przy możliwie najniższych kosztach.
W tym artykule przedstawiamy informacje na temat modelu rozliczeniowego Google Cloud, a także różnych sposobów zarządzania kosztami, tj. dashboards, szczegółowe zestawienia kosztów i alerty. Dodajemy również kilka przykładów, jak można zoptymalizować koszty infrastruktury GCP.
Rozliczenia w Google Cloud
Przegląd zasobów
Kiedy dopiero zaczynasz korzystać z Google Cloud i skala jest jeszcze niewielka, dość łatwo jest zorientować się w wydatkach, ale wraz ze wzrostem liczby projektów i zasobów bardzo przydatne jest korzystanie z sekcji rozliczeniowej GCP, aby pomóc w zarządzaniu i optymalizacji kosztów.
Aby zrozumieć, jak zarządzane są koszty, musimy najpierw zapoznać się ze strukturą zasobów GCP. Wszystko w Twoim ekosystemie Google Cloud znajduje się pod Twoją domeną i organizacją. Domain jest podstawową tożsamością Twojej organizacji i ustanawia tożsamość Twojej firmy w usługach Google. Organization z kolei jest węzłem głównym hierarchii zasobów Google Cloud, ponieważ umożliwia centralne zarządzanie usługami chmurowymi i dostępem użytkowników do nich.
Projects służą do grupowania zasobów na poziomie usług, takich jak BigQuery lub Compute Engine. Możesz używać projects do reprezentowania logicznych projektów, zespołów, środowisk lub innych powiązań, które odpowiadają strukturze biznesowej. Folders są natomiast mechanizmem grupowania, który może zawierać projects lub inne folders. Możesz również dodawać labels do swoich zasobów, aby je kategoryzować. Pozwala to śledzić koszty na szczegółowym poziomie, dzięki czemu możesz analizować opłaty według label w systemie rozliczeniowym.
Cloud Billing account jest konfigurowane w Google Cloud i służy do określenia, kto płaci za dany zestaw zasobów Google Cloud. Może być połączone z jednym lub więcej projects i śledzi wszystkie koszty poniesione w związku z korzystaniem z Google Cloud. Każde konto ma własne role i uprawnienia, dzięki czemu możesz zarządzać użytkownikami dla funkcji związanych z rozliczeniami. Cloud Billing account jest połączone z Google Payments Profile, które zawiera instrument płatniczy, określający sposób płacenia za opłaty.

Wizualizacje rozliczeń
Pierwszym krokiem w konfiguracji zarządzania kosztami dla organizacji jest konfiguracja konta rozliczeniowego. Po skonfigurowaniu konta rozliczeniowego możemy uzyskać wszystkie wydatki rozliczane przez Google w sekcji Billing w GCP. Oprócz prostego zestawienia miesięcznego możemy utworzyć raport, używając kilku filtrów lub grupując według usługi lub projektu.


Budżety i alerty rozliczeniowe
Kiedy masz dużą infrastrukturę chmurową, prawdopodobnie ostatnią rzeczą, którą chcesz zobaczyć, jest zaskakująco wysoki rachunek, który znacznie przekracza budżet ustalony przez kierownictwo. Aby tego uniknąć, możesz skonfigurować budżety i alerty w Google Cloud, aby ściśle monitorować koszty i podejmować działania w razie potrzeby.
Budget pozwala śledzić rzeczywiste wydatki Google Cloud w porównaniu z planowanymi wydatkami. Pozwala to wyzwalać powiadomienia (np. przez e-mail), gdy koszty osiągną lub prognozuje się, że osiągną określoną kwotę. Możesz określić zakres budget, np. możesz ustawić go dla całego billing account lub zawęzić zakres do określonych projects i produktów GCP. Ustawiając budget, bardzo przydatne jest również ustawienie alert, aby otrzymywać powiadomienia, gdy koszty są wysokie. Gdy Twoje rzeczywiste (lub prognozowane) koszty osiągną określony procent budget, alerty e-mail są wysyłane na ustawioną listę odbiorców. Sekcja budget umożliwia również wysyłanie powiadomień na określony temat Pub/Sub, co może pomóc w skonfigurowaniu zaawansowanych kontroli kosztów, np. poprzez automatyzację zadań zarządzania kosztami lub ustawienie funkcji chmurowych do automatycznego wyłączania intensywnie używanych VMs.

Domyślna funkcjonalność i różne zastosowania powiadomień o budżecie.
Źródło: https://cloud.google.com/billing/docs/how-to/budgets
Przykłady optymalizacji kosztów
Ustawianie kontroli kosztów za pomocą quotas
W tym przykładzie pokażemy, jak używać quota, aby jeszcze bardziej kontrolować wydatki, ustawiając limit na liczbę współbieżnych zasobów w project. Gdy quota zostanie przekroczona, Google Cloud blokuje dostęp do określonego zasobu, a zadanie, które próbujesz wykonać, kończy się niepowodzeniem.
Aby przejrzeć quotas dla swojego project, przejdź do IAM & admin -> Quotas w konsoli GCP. Tutaj masz dostęp do wszystkich quotas dla produktów i usług GCP. Aby zademonstrować, jak quotas działają w praktyce, ustawimy limit liczby instancji VM, które można utworzyć w regionie asia-east1. Na stronie Quotas w Filter wybierz Service: Compute Engine API i Quota: VM instances. Następnie możemy zmienić quota dla regionu, tutaj zmieniliśmy go na 2.

Teraz możemy sprawdzić implikacje zmiany w quota. Przejdź do Compute Engine -> Create an instance -> wybierz asia-east1 jako region -> wybierz małą maszynę, np. e2-micro i kliknij Create. Powtórz ten krok jeszcze raz, aby utworzyć dwie VMs. Po ich udostępnieniu możemy wrócić do sekcji Quotas i sprawdzić zmiany. Zauważamy, że osiągnęliśmy nasz limit quota wynoszący 2 VMs w regionie asia-east1, co oznacza, że nie możemy tworzyć więcej maszyn w tym miejscu.

Jeśli spróbujemy utworzyć kolejną VM w tym regionie, otrzymamy następujący błąd:

Optymalizacja kosztów BigQuery
W drugim przykładzie omówimy koszty w BigQuery i jak możemy je kontrolować.
BigQuery, które jest bezserwerową i wysoce skalowalną hurtownią danych, oferuje dwie opcje cenowe dla uruchamiania zapytań:
- on-demand, która opiera się na ilości danych przetwarzanych przez każde uruchomione zapytanie. Jest to najbardziej elastyczna opcja, ponieważ płacisz tylko za zapytania, które uruchamiasz.
- flat-rate, dla której klienci kupują dedykowane zasoby i nie są obciążani opłatami za poszczególne zapytania. Jest to najlepsze rozwiązanie dla klientów z ustalonymi budżetami.

Uwaga: Pamiętaj, że Google Cloud pobiera również opłaty za BigQuery storage. Więcej szczegółów można znaleźć na stronie z cennikiem: https://cloud.google.com/bigquery/pricing
Gdy wybrana jest opcja on-demand, musimy upewnić się, że nie przepłacamy za nasze zapytania. Do optymalizacji kosztów możemy użyć quotas wspomnianych w przykładzie powyżej, ale tym razem możemy ograniczyć ilość przetwarzanych danych, np. możesz ustawić limit na 2 TiB na użytkownika dziennie, a rachunek będzie ograniczony do 10 USD na użytkownika każdego dnia (cena 5 USD za TB obowiązuje we wrześniu 2022 r.).
Innym sposobem na zaoszczędzenie pieniędzy na rachunkach BigQuery jest optymalizacja zapytań. Google udostępnia najlepsze praktyki dotyczące ekstrakcji danych, takie jak: unikanie instrukcji SELECT *, używanie opcji podglądu i używanie partycjonowanych lub klastrowanych tabel.
Znaczenie optymalizacji zapytań można pokazać na publicznym zbiorze danych crypto_bitcoin. Zawiera on dwie tabele: blocks i transactions o następującym schemacie:
Załóżmy, że musimy połączyć te tabele za pomocą kolumny block hash, odfiltrować wyniki dla jednego tygodnia od 2021-01-01 do 2021-01-07 i wyodrębnić tylko określone kolumny.
Jeśli użyjemy następującego zapytania, które po prostu łączy tabele i stosuje filtr na kolumnie timestamp, przetwarzamy 1,52 TB:
sql
SQL
SELECT * FROM `bigquery-public-data.crypto_bitcoin.transactions` transactions JOIN `bigquery-public-data.crypto_bitcoin.blocks` blocks ON transactions.block_hash=blocks.`hash` AND transactions.block_timestamp=blocks.timestamp WHERE timestamp between '2021-01-01' AND '2021-01-07'
Jednak jeśli zauważymy, że obie tabele są partycjonowane, możemy dodać dodatkowy filtr na timestamp month przed połączeniem tabel. Możemy również wybrać tylko określone kolumny, które nas interesują, i łącznie, uruchamiając następujące zapytanie, przetwarzamy tylko 1,46 GB, co jest ponad tysiąc razy tańsze niż wcześniej:
sql
SQL
SELECT transaction_hash, block_hash, transaction_size, block_size, block_timestamp_month, transactions.block_timestamp FROM ( SELECT `hash` AS transaction_hash, size AS transaction_size, block_hash, block_timestamp, block_timestamp_month FROM `bigquery-public-data.crypto_bitcoin.transactions` WHERE block_timestamp_month = '2021-01-01' ) transactions JOIN ( SELECT `hash` AS block_hash, size AS block_size, timestamp AS block_timestamp FROM `bigquery-public-data.crypto_bitcoin.blocks` WHERE timestamp_month = '2021-01-01' AND timestamp BETWEEN '2021-01-01' AND '2021-01-07' ) blocks USING(block_hash)
Podsumowanie
Zrozumienie modelu rozliczeniowego w Google Cloud jest niezbędne do korzystania z jego usług, ponieważ pozwala na właściwe zarządzanie kosztami przy jednoczesnym wykorzystaniu wszystkich możliwości chmury. Aby pomóc w zarządzaniu kosztami, użytkownicy mogą wizualizować wydatki za pomocą raportów rozliczeniowych, a także korzystać z budżetów z alertami, aby otrzymywać powiadomienia, gdy koszty stają się wysokie. Aby jeszcze bardziej kontrolować koszty, możesz ustawić quotas, aby ograniczyć ilość zasobów, które może wykorzystywać project. Na koniec pamiętaj o optymalizacji zapytań BigQuery, aby jeszcze bardziej zmniejszyć wydatki.

Cloud computing dla małych firm rodzaje usług