Что такое 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.