Что такое Google Cloud Platform?
Google Cloud Platform (GCP) — это набор облачных сервисов от Google, работающий на той же инфраструктуре, которую компания использует для своих продуктов, таких как Google Search, Gmail и YouTube. GCP предлагает сервисы для вычислений, хранения данных, машинного обучения, аналитики и многого другого.
Основные сервисы GCP
- Compute Engine — виртуальные машины
- Cloud Storage — объектное хранилище данных
- Cloud SQL — управляемые реляционные базы данных
- Cloud Functions — serverless вычисления
- Google Kubernetes Engine (GKE) — управляемый Kubernetes
- BigQuery — аналитическое хранилище данных
- Cloud AI Platform — машинное обучение
- Cloud Pub/Sub — система обмена сообщениями
Создание виртуальной машины
1# Установка Google Cloud CLI
2curl https://sdk.cloud.google.com | bash
3exec -l $SHELL
4
5# Инициализация и аутентификация
6gcloud init
7gcloud auth login
8
9# Установка проекта по умолчанию
10gcloud config set project my-project-id
11
12# Создание виртуальной машины
13gcloud compute instances create my-instance \
14 --zone=us-central1-a \
15 --machine-type=e2-micro \
16 --subnet=default \
17 --network-tier=PREMIUM \
18 --maintenance-policy=MIGRATE \
19 --provisioning-model=STANDARD \
20 --scopes=https://www.googleapis.com/auth/cloud-platform \
21 --image-family=ubuntu-2004-lts \
22 --image-project=ubuntu-os-cloud \
23 --boot-disk-size=10GB \
24 --boot-disk-type=pd-standard
25
26# Подключение по SSH
27gcloud compute ssh my-instance --zone=us-central1-a
28
29# Просмотр всех инстансов
30gcloud compute instances list
Работа с Cloud Storage
1# Создание bucket
2gsutil mb gs://my-unique-bucket-name-2025
3
4# Загрузка файла
5gsutil cp myfile.txt gs://my-unique-bucket-name-2025/
6
7# Синхронизация папки
8gsutil rsync -r ./local-folder gs://my-unique-bucket-name-2025/remote-folder/
9
10# Просмотр содержимого bucket
11gsutil ls gs://my-unique-bucket-name-2025/
12
13# Скачивание файла
14gsutil cp gs://my-unique-bucket-name-2025/myfile.txt ./downloaded-file.txt
15
16# Настройка публичного доступа
17gsutil iam ch allUsers:objectViewer gs://my-unique-bucket-name-2025
18
19# Установка lifecycle правил
20gsutil lifecycle set lifecycle.json gs://my-unique-bucket-name-2025
Создание Cloud Function
1# main.py
2import functions_framework
3import json
4from datetime import datetime
5
6@functions_framework.http
7def hello_world(request):
8 """
9 HTTP Cloud Function для обработки запросов
10 """
11
12 # Получение параметров из запроса
13 request_json = request.get_json(silent=True)
14 request_args = request.args
15
16 name = None
17 if request_json and 'name' in request_json:
18 name = request_json['name']
19 elif request_args and 'name' in request_args:
20 name = request_args['name']
21 else:
22 name = 'World'
23
24 # Подготовка ответа
25 response_data = {
26 'message': f'Hello, {name}!',
27 'timestamp': datetime.now().isoformat(),
28 'platform': 'Google Cloud Functions'
29 }
30
31 return json.dumps(response_data), 200, {'Content-Type': 'application/json'}
1# requirements.txt
2functions-framework==3.4.0
3
4# Локальное тестирование
5pip install functions-framework
6functions-framework --target=hello_world --debug
7
8# Развертывание функции
9gcloud functions deploy hello-world-function \
10 --runtime python39 \
11 --trigger-http \
12 --allow-unauthenticated \
13 --source . \
14 --entry-point hello_world
15
16# Тестирование функции
17gcloud functions call hello-world-function \
18 --data '{"name": "GCP User"}'
19
20# Просмотр логов
21gcloud functions logs read hello-world-function
Работа с BigQuery
1# Создание dataset
2bq mk --dataset my-project-id:my_dataset
3
4# Создание таблицы
5bq mk --table my-project-id:my_dataset.my_table \
6 name:STRING,age:INTEGER,city:STRING
7
8# Загрузка данных из CSV
9bq load --source_format=CSV \
10 my-project-id:my_dataset.my_table \
11 data.csv \
12 name:STRING,age:INTEGER,city:STRING
13
14# Выполнение запроса
15bq query --use_legacy_sql=false \
16 'SELECT name, age FROM `my-project-id.my_dataset.my_table` WHERE age > 25'
17
18# Экспорт результатов
19bq extract --destination_format=CSV \
20 my-project-id:my_dataset.my_table \
21 gs://my-bucket/export.csv
1-- Пример сложного аналитического запроса
2WITH user_stats AS (
3 SELECT
4 user_id,
5 COUNT(*) as total_orders,
6 SUM(order_amount) as total_spent,
7 AVG(order_amount) as avg_order_value,
8 MIN(order_date) as first_order,
9 MAX(order_date) as last_order
10 FROM `project.dataset.orders`
11 WHERE order_date >= '2024-01-01'
12 GROUP BY user_id
13),
14user_segments AS (
15 SELECT
16 *,
17 CASE
18 WHEN total_spent > 1000 THEN 'High Value'
19 WHEN total_spent > 500 THEN 'Medium Value'
20 ELSE 'Low Value'
21 END as segment
22 FROM user_stats
23)
24SELECT
25 segment,
26 COUNT(*) as users_count,
27 AVG(total_spent) as avg_spent_per_user,
28 SUM(total_orders) as total_orders
29FROM user_segments
30GROUP BY segment
31ORDER BY avg_spent_per_user DESC
Развертывание в Google Kubernetes Engine
1# Создание GKE кластера
2gcloud container clusters create my-cluster \
3 --zone=us-central1-a \
4 --num-nodes=3 \
5 --enable-autoscaling \
6 --min-nodes=1 \
7 --max-nodes=5 \
8 --machine-type=e2-medium
9
10# Получение credentials для kubectl
11gcloud container clusters get-credentials my-cluster --zone=us-central1-a
12
13# Развертывание приложения
14kubectl create deployment hello-app --image=gcr.io/google-samples/hello-app:1.0
15
16# Создание сервиса
17kubectl expose deployment hello-app --type=LoadBalancer --port=80 --target-port=8080
18
19# Просмотр сервисов
20kubectl get services
21
22# Масштабирование
23kubectl scale deployment hello-app --replicas=5
24
25# Обновление приложения
26kubectl set image deployment/hello-app hello-app=gcr.io/google-samples/hello-app:2.0
Настройка мониторинга
1# Установка Cloud Monitoring агента на VM
2curl -sSO https://dl.google.com/cloudagents/add-monitoring-agent-repo.sh
3sudo bash add-monitoring-agent-repo.sh --also-install
4
5# Создание алерта через gcloud
6gcloud alpha monitoring policies create \
7 --policy-from-file=alert-policy.yaml
8
9# Просмотр метрик
10gcloud monitoring metrics list --filter="metric.type:compute"
11
12# Создание dashboard
13gcloud monitoring dashboards create --config-from-file=dashboard.json
Основные регионы GCP
- us-central1 (Айова) — основной регион США с низкими ценами
- us-west1 (Орегон) — западное побережье США
- europe-west1 (Бельгия) — основной европейский регион
- asia-east1 (Тайвань) — основной азиатский регион
- asia-northeast1 (Токио) — для японского рынка
- australia-southeast1 (Сидней) — для австралийского рынка
Модель ценообразования GCP
- Pay-as-you-go — оплата по факту использования
- Committed Use Discounts — скидки до 57% при долгосрочных обязательствах
- Preemptible VMs — скидки до 80% на прерываемые инстансы
- Free Tier — постоянно бесплатный уровень + $300 кредитов на 90 дней
- Sustained Use Discounts — автоматические скидки при длительном использовании
Когда использовать GCP
- Проекты с большими объемами данных и аналитикой
- Машинное обучение и AI приложения
- Контейнеризованные приложения с Kubernetes
- Стартапы, ценящие простоту и инновации
- Проекты, требующие глобальной сети Google
- Real-time аналитика и обработка потоков данных
Преимущества GCP
- Превосходные AI/ML сервисы и инструменты
- Мощная аналитическая платформа BigQuery
- Лучший управляемый Kubernetes (GKE)
- Глобальная сеть Google с высокой производительностью
- Конкурентоспособные цены и автоматические скидки
- Сильный фокус на open source технологиях
- Простота использования и хорошая документация
Недостатки GCP
- Меньшее количество сервисов по сравнению с AWS
- Менее зрелая enterprise экосистема
- Ограниченная поддержка в некоторых регионах
- Меньше третьих интеграций по сравнению с конкурентами
- Относительно новый игрок на рынке
GCP vs конкуренты
- GCP vs AWS — AWS более зрелый, GCP сильнее в данных и ML
- GCP vs Azure — Azure лучше для Microsoft стека, GCP для данных
- GCP vs DigitalOcean — GCP для корпораций, DO для простоты
Рекомендации по внедрению
Для успешного внедрения GCP рекомендуется:
- Начать с Free Tier и изучить основные сервисы
- Получить Google Cloud сертификацию
- Использовать Infrastructure as Code с Deployment Manager или Terraform
- Изучить BigQuery для аналитики данных
- Рассмотреть GKE для контейнеризованных приложений
- Настроить мониторинг и алерты с Cloud Monitoring
- Использовать Cloud Build для CI/CD
FAQ
Подходит ли GCP для продакшена?
Да, GCP используется крупными компаниями включая Spotify, Twitter, PayPal и многими другими для критически важных приложений.
Сколько стоит GCP для небольшого проекта?
Стоимость может составлять $15-150 в месяц. Новые пользователи получают $300 кредитов на 90 дней и постоянно бесплатный уровень.
Подходит ли GCP для машинного обучения?
Да, GCP предоставляет одни из лучших ML сервисов включая AI Platform, AutoML, TensorFlow и предварительно обученные API.