Google Cloud Platform (GCP)
Google Cloud najlepiej poznawać od project, IAM/service accounts i VPC, a potem dobierać warstwę uruchomieniową do potrzeb: Compute Engine, Cloud Run albo GKE. Do prostego kontenera Cloud Run jest zwykle znacznie łatwiejszym punktem startu niż Kubernetes.
Google określa obecnie funkcje serverless jako Cloud Run functions; nazwa Cloud Functions nadal pojawia się w starszych API i materiałach migracyjnych.
Powiązane tematy: Sieci komputerowe dla developera, Docker, SQL i PostgreSQL, Web analytics i tagging oraz CI/CD i GitHub Actions.
1. Czym jest Google Cloud
Google Cloud to duża globalna platforma chmurowa. Szczególnie silne obszary to kontenery/Kubernetes, data analytics, BigQuery, sieć globalna, serverless Cloud Run oraz AI/Vertex AI.
Podobnie jak w innych chmurach, konsola jest tylko klientem API. Prawdziwym modelem operacyjnym są zasoby, IAM, projekty, API i automatyzacja.
2. Hierarchia zasobów
Typowa struktura:
Organization
└── Folder
└── Project
├── Compute Engine
├── Cloud Storage
├── Cloud SQL
└── Cloud Run
Project jest podstawową granicą zasobów, API, IAM i rozliczeń. Każdy projekt ma unikalny project_id.
W większej organizacji foldery porządkują projekty według zespołów, środowisk lub jednostek biznesowych.
3. Regiony i strefy
GCP rozróżnia:
- region - obszar geograficzny,
- zone - strefę wewnątrz regionu,
- zasoby regionalne,
- zasoby zonalne,
- zasoby globalne.
Ciekawostka istotna operacyjnie: sieci VPC w GCP są zasobami globalnymi, a subnety regionalnymi.
4. Najważniejsze usługi - mapa
| Potrzeba | Google Cloud |
|---|---|
| VM | Compute Engine |
| Autoscaling VM | Managed Instance Groups |
| Object storage | Cloud Storage |
| Dyski | Persistent Disk / Hyperdisk |
| Filesystem | Filestore |
| Sieć | VPC |
| Firewall | VPC firewall rules/policies |
| Kontenery serverless | Cloud Run |
| Kubernetes | GKE |
| Funkcje | Cloud Run functions / Cloud Functions |
| Registry | Artifact Registry |
| Relacyjna DB | Cloud SQL |
| Globalna relacyjna DB | Spanner |
| NoSQL dokumentowy | Firestore |
| Hurtownia danych | BigQuery |
| Cache | Memorystore |
| Messaging | Pub/Sub |
| Workflow/eventy | Eventarc / Workflows |
| DNS | Cloud DNS |
| Load balancing | Cloud Load Balancing |
| CDN | Cloud CDN |
| IAM | Cloud IAM |
| Sekrety | Secret Manager |
| Klucze | Cloud KMS |
| Monitoring | Cloud Monitoring |
| Logi | Cloud Logging |
| Audyt | Cloud Audit Logs |
| IaC | Terraform / Infrastructure Manager |
| AI/ML | Vertex AI |
5. Project i włączanie API
W GCP niektóre usługi wymagają jawnego włączenia API w projekcie.
Przykładowo:
gcloud services enable run.googleapis.com
gcloud services enable artifactregistry.googleapis.com
To ważny element modelu GCP: projekt ma listę aktywnych API, które można kontrolować politykami.
6. Compute Engine
Compute Engine to VM.
Wybierasz:
- machine type,
- obraz,
- zone,
- boot disk,
- VPC/subnet,
- service account,
- firewall/network tags.
Przykłady:
gcloud compute instances list
gcloud compute instances describe NAZWA --zone=europe-west1-b
Google oferuje również preemptible/Spot VMs do zadań odpornych na przerwanie.
7. VPC
GCP VPC ma ciekawy model: sama sieć jest globalna, a subnety są regionalne.
Elementy:
- VPC,
- subnets,
- routes,
- firewall rules/policies,
- Cloud NAT,
- Cloud Router,
- Private Service Connect,
- VPC Peering,
- Cloud VPN,
- Cloud Interconnect.
Przykład:
Global Load Balancer
|
Cloud Run / GKE / MIG
|
private connectivity
|
Cloud SQL
8. Firewall
Reguły firewall kontrolują ruch do/z instancji. W nowych projektach warto myśleć o politykach hierarchicznych i zasadzie least privilege.
Nie opieraj bezpieczeństwa wyłącznie na tagach sieciowych; ważne jest połączenie IAM, service accounts, firewalli i prywatnych endpointów.
9. Cloud Storage
Cloud Storage to object storage odpowiednik S3/Blob/OSS.
Zastosowania:
- assety,
- backupy,
- statyczne pliki,
- archiwa,
- data lake,
- wejście/wyjście pipeline'ów.
Podstawy:
gcloud storage buckets list
gcloud storage ls gs://bucket
gcloud storage cp file.zip gs://bucket/releases/
Funkcje:
- storage classes,
- lifecycle,
- versioning,
- retention policies,
- signed URLs,
- IAM.
10. Persistent Disk i Filestore
Persistent Disk/Hyperdisk - storage blokowy dla VM.
Filestore - zarządzany filesystem NFS.
Nie używaj dysku VM jako jedynego miejsca na krytyczne dane bez snapshotów i planu odtwarzania.
11. Cloud Run - jedna z najważniejszych usług GCP
Cloud Run uruchamia kontener i automatycznie skaluje go, nawet do zera.
To świetna usługa dla:
- API Go/Node/Python,
- małych serwisów,
- webhooków,
- workerów,
- aplikacji HTTP.
Typowy przepływ:
GitHub
-> build image
-> Artifact Registry
-> Cloud Run
-> Cloud SQL
Cloud Run jest jednym z najprostszych sposobów na przeniesienie własnego kontenera do dużej chmury bez zarządzania klastrem.
12. GKE
Google Kubernetes Engine to zarządzany Kubernetes. Google ma wyjątkowo mocne doświadczenie w tym obszarze.
Tryby i konfiguracje zależą od potrzeb, ale ogólna zasada pozostaje: Kubernetes warto brać, gdy jego możliwości są potrzebne. Do jednej aplikacji Cloud Run jest często znacznie prostszy.
13. Cloud Run functions
Funkcje serverless nadają się do:
- triggerów,
- webhooków,
- prostych API,
- reakcji na Pub/Sub,
- automatyzacji.
Granica między funkcją a Cloud Run jest coraz mniej istotna operacyjnie; w obu przypadkach chodzi o zarządzane uruchamianie kodu bez własnego serwera.
14. Artifact Registry
Przechowuje obrazy kontenerów i paczki.
Docker build -> Artifact Registry -> Cloud Run/GKE
To standardowy element pipeline'u.
15. Cloud SQL
Cloud SQL dostarcza zarządzane:
- PostgreSQL,
- MySQL,
- SQL Server.
Najważniejsze:
- HA,
- backup,
- private IP,
- kontrola połączeń,
- automatyczne maintenance windows,
- monitoring.
Dla aplikacji Cloud Run można używać mechanizmów bezpiecznego połączenia bez wystawiania bazy publicznie.
16. Spanner
Spanner jest rozproszoną, skalowalną relacyjną bazą danych do systemów, które potrzebują bardzo dużej skali i wysokiej dostępności.
Nie jest domyślnym wyborem dla małego projektu. To narzędzie do problemów, których zwykły PostgreSQL często jeszcze długo nie ma.
17. Firestore
Firestore to zarządzana baza dokumentowa NoSQL, popularna w aplikacjach web/mobile i Firebase.
Dobrze pasuje do danych dokumentowych i aplikacji realtime, ale projekt modelu danych różni się od SQL.
18. BigQuery
BigQuery to jedna z najbardziej charakterystycznych usług Google Cloud: serverless data warehouse do analizy ogromnych zbiorów danych SQL-em.
Przykład zastosowania:
logi / eventy / dane sprzedażowe
-> BigQuery
-> SQL / dashboard / ML
Koszt zależy m.in. od storage i ilości przetwarzanych danych/modelu rozliczeń, więc źle napisane zapytanie może być drogie.
19. Pub/Sub
Pub/Sub to skalowalny messaging/event system.
publisher -> topic -> subscription -> consumer
Używaj do luźnego sprzęgania usług, eventów i przetwarzania asynchronicznego.
20. IAM
Google Cloud IAM odpowiada na:
principal + role + resource
Principalem może być:
- użytkownik,
- grupa,
- service account,
- tożsamość federowana.
Role mogą być:
- basic,
- predefined,
- custom.
Zasada: unikaj szerokich ról typu Owner/Editor w codziennej pracy.
21. Service Accounts
Service Account to tożsamość workloadu/aplikacji.
Zamiast trzymać plik JSON z długowiecznym kluczem, używaj mechanizmów przypisania tożsamości do uruchamianego zasobu lub Workload Identity Federation.
To jeden z najważniejszych wzorców bezpieczeństwa w GCP.
22. Secret Manager i KMS
Secret Manager - sekrety aplikacji.
Cloud KMS - klucze kryptograficzne.
Aplikacja powinna pobierać sekret dzięki swojej tożsamości IAM, nie przez hardcoded password.
23. Cloud Logging i Monitoring
Cloud Logging - centralne logi.
Cloud Monitoring - metryki, alerty, dashboardy.
Cloud Trace / Profiler - dodatkowa obserwowalność.
Audit Logs - historia istotnych operacji administracyjnych.
Ustawiaj alerty na objawy ważne biznesowo, a nie tylko na CPU.
Przykłady:
- 5xx,
- latency,
- brak zdrowych instancji,
- kolejka rośnie,
- Cloud Run error rate,
- brak miejsca w DB,
- budżet.
24. gcloud CLI
Podstawy:
gcloud auth login
gcloud auth list
gcloud config list
gcloud projects list
gcloud config set project PROJECT_ID
Compute:
gcloud compute instances list
Cloud Run:
gcloud run services list
Storage:
gcloud storage buckets list
Pomoc:
gcloud help
gcloud compute --help
gcloud run --help
25. Terraform
Google Cloud jest bardzo dobrze obsługiwany przez Terraform/OpenTofu.
Typowy model:
project bootstrap
-> IAM
-> VPC
-> Artifact Registry
-> Cloud Run
-> Cloud SQL
-> Monitoring
Infrastructure as Code jest szczególnie ważne, gdy projekty dev/stage/prod mają mieć podobną strukturę.
26. Load Balancing, CDN i DNS
- Cloud Load Balancing - globalny/regionalny load balancing zależnie od typu.
- Cloud CDN - cache na edge.
- Cloud DNS - zarządzany DNS.
- Cloud Armor - polityki bezpieczeństwa/WAF/DDoS na warstwie aplikacyjnej.
27. Vertex AI
Vertex AI jest główną platformą Google do AI/ML, w tym generative AI.
Obejmuje m.in.:
- modele generatywne,
- endpointy,
- narzędzia do trenowania,
- ewaluację,
- pipelines,
- integrację z danymi.
GCP jest naturalnym wyborem, gdy system mocno korzysta z BigQuery, danych i modeli Google.
28. Przykładowe architektury
Mała aplikacja Go
Cloud DNS
-> HTTPS Load Balancer lub bezpośrednio Cloud Run
-> Cloud Run
-> Cloud SQL PostgreSQL
-> Cloud Storage
-> Secret Manager
-> Cloud Logging/Monitoring
Data pipeline
Pub/Sub
-> Dataflow / Cloud Run
-> BigQuery
-> Looker / analiza SQL
Kubernetes
Load Balancer
-> GKE
-> Cloud SQL / Spanner
-> Cloud Storage
29. Koszty
Najczęstsze źródła kosztu:
- VM i GPU,
- bazy danych,
- BigQuery queries,
- storage,
- egress,
- load balancing,
- log ingestion/retention,
- Cloud Run przy dużym ruchu,
- usługi AI.
Ustaw:
- Billing Account,
- Budgets & Alerts,
- labels,
- eksport billing data do BigQuery, jeśli chcesz robić dokładniejsze analizy kosztowe.
30. Organizacja projektów
Dobry wzorzec enterprise:
Organization
├── folder: production
│ ├── app1-prod
│ └── app2-prod
├── folder: nonproduction
│ ├── app1-dev
│ └── app1-stage
└── folder: shared
Separate projects są wygodnym mechanizmem izolacji uprawnień, quota i billing.
31. Bezpieczeństwo - minimum
- MFA/federacja dla ludzi.
- IAM least privilege.
- Service Accounts dla workloadów.
- Bez długowiecznych service-account keys, jeśli istnieje federacja/tożsamość workloadu.
- Secret Manager.
- Prywatna baza.
- VPC/firewall.
- Audit Logs.
- Organization Policies w większym środowisku.
- Cloud Armor dla publicznych aplikacji wymagających WAF.
- Budżety.
32. Typowe pułapki
- Jeden projekt do wszystkiego.
- Role Owner/Editor dla całego zespołu.
- Klucze service account w repo.
- Publiczny Cloud SQL bez powodu.
- Brak limitów kosztowych i analizy BigQuery.
- Włączanie Kubernetes, gdy Cloud Run wystarcza.
- Niezrozumienie różnicy global VPC vs regional subnet.
- Brak kontroli egressu.
33. Co wybrać dla małego projektu
Najbardziej przyjazny wariant:
Cloud Run + Cloud SQL PostgreSQL + Cloud Storage + Secret Manager
Frontend statyczny może trafić do Cloud Storage/CDN albo platformy Firebase zależnie od charakteru projektu.
VM wybierz, gdy naprawdę chcesz administrować systemem lub potrzebujesz niestandardowego środowiska.
34. Ściąga CLI
gcloud auth login
gcloud projects list
gcloud config set project PROJECT_ID
gcloud services list --enabled
gcloud compute instances list
gcloud compute networks list
gcloud run services list
gcloud sql instances list
gcloud storage buckets list
gcloud artifacts repositories list
gcloud iam service-accounts list
35. Co powinien umieć początkujący administrator GCP
- rozumieć Organization/Folder/Project,
- rozumieć region/zone,
- uruchomić VM,
- zbudować podstawową VPC,
- użyć Cloud Storage,
- wdrożyć kontener do Cloud Run,
- uruchomić Cloud SQL,
- skonfigurować IAM i Service Account,
- użyć Secret Manager,
- znaleźć logi i metryki,
- używać
gcloud, - tworzyć zasoby Terraformem,
- kontrolować billing.
36. Źródła i dalsza nauka
- Google Cloud Docs: https://cloud.google.com/docs
- Architecture Center: https://cloud.google.com/architecture
- gcloud CLI: https://cloud.google.com/sdk/gcloud
- Well-Architected Framework: https://cloud.google.com/architecture/framework
- Pricing Calculator: https://cloud.google.com/products/calculator
Najważniejsza myśl
W GCP warto zacząć od Project + IAM + VPC, a potem nauczyć się Cloud Run, Cloud Storage i Cloud SQL. To daje bardzo dużą część praktycznej wiedzy potrzebnej do uruchomienia współczesnej aplikacji.