ℹ Bu derste Google Cloud hesabı açılır. 12 yaş altı için ebeveyn eşliğinde.
Modül 1 · Container & Temel Altyapı · ⏱ 7 dk

Buluta çık: gcloud SDK + GCP free tier + BigQuery

Going to the cloud

Bu derste neler öğreneceksin

  • gcloud SDK kurar
  • GCP projesi + service account oluşturur
  • BigQuery sandbox ta ilk sorguyu çalıştırır

Buluta Çıkmak: GCP + BigQuery

Bugün bilgisayarından çıkıp dünyanın herhangi bir yerindeki veri merkezine bağlanıyoruz. Bulut bilişim dediğimiz şey tam olarak bu: birisi bir sürü bilgisayarı bir binada çalıştırıyor, sen internet üzerinden onları kirala.

Bu kursta üç büyük bulut sağlayıcısından (AWS, GCP, Azure) GCP’yi seçtik. Neden? BigQuery — dünyanın en hızlı analitik veritabanlarından biri — GCP’nin ürünü. Öğrenirken production ile aynı araçları kullanmak büyük avantaj.

Neden BigQuery?

Geleneksel veritabanları (Postgres, MySQL) kendi makinende çalışır. Veri büyüdükçe makineyi büyütürsün — dikey ölçekleme (vertical scaling). Sonra yetmez, birden fazla makine kurarsın — yatay ölçekleme (horizontal scaling). Her iki durum da kapasite planlama gerektirir.

BigQuery farklı düşünür: serverless. Makine yok, sunucu yönetimi yok. Sadece sorgu yazarsın, Google arka planda kaç makine lazımsa onu çalıştırır, saniyeler içinde sonuç verir. Petabyte ölçeğinde tarama yapabilir.

Maliyet: depolama ucuz (~$0.02/GB/ay), sorgu pahalı ama sandbox ücretsiz.

gcloud SDK Kurulumu

gcloud, Google Cloud’un resmi komut satırı aracı. Kurulumdan önce kontrol:

gcloud --version

Mac:

brew install --cask google-cloud-sdk

Windows: cloud.google.com/sdk/docs/install — installer’ı indir ve çalıştır.

Linux:

curl https://sdk.cloud.google.com | bash
exec -l $SHELL

Proje Oluştur

console.cloud.google.com adresine git. Üstte “Select a project” → “New project”. İsim ver, örn. limonata-elif-prod.

Kuruluş (organization) boş bırakılabilir — kişisel hesap için. Oluştur’a bas.

Kredi kartı sorarsa: bu, GCP’nin “free trial” politikası. Kart bağlanmazsa sadece Always Free kaynaklar + BigQuery sandbox kullanabilirsin. 18+ değilsen bir aile üyesiyle aç. Kredi kartı gerekirse ebeveynle konuş ve sandbox modunu tercih et.

gcloud init

CLI’ı GCP’ye bağla:

gcloud init

Bir tarayıcı açılır, OAuth ile giriş yap. “Pick a project” ekranında yeni oluşturduğun projeyi seç. Default region: europe-west1 (Hollanda, Türkiye’ye yakın).

Doğrula:

gcloud config get-value project
# limonata-elif-prod

gcloud config get-value compute/region
# europe-west1

Service Account

Bu, senin adına çalışan robot bir kullanıcı. İnsan hesabıyla kimse sürekli bağlanmaz; servisler için ayrı hesap oluşturulur. En iyi güvenlik pratiği.

gcloud iam service-accounts create limonata-bot \
  --description="Limonata pipeline için robot hesap" \
  --display-name="Limonata Bot"

Anahtar dosyası oluştur:

gcloud iam service-accounts keys create ~/limonata-key.json \
  --iam-account=limonata-bot@limonata-elif-prod.iam.gserviceaccount.com

Bu dosyayı kimseyle paylaşma, git’e koyma. .gitignore’a *.json ekle (key dosyaları).

Robot hesabına roller ver:

# BigQuery kullanıcısı
gcloud projects add-iam-policy-binding limonata-elif-prod \
  --member="serviceAccount:limonata-bot@limonata-elif-prod.iam.gserviceaccount.com" \
  --role="roles/bigquery.user"

# Storage admin (opsiyonel, sonraki derslerde lazım)
gcloud projects add-iam-policy-binding limonata-elif-prod \
  --member="serviceAccount:limonata-bot@limonata-elif-prod.iam.gserviceaccount.com" \
  --role="roles/storage.admin"

Prensip: en az yetki. Sadece ihtiyacın olan rolü ver. bigquery.user yerine bigquery.admin verme — admin tablo silebilir.

BigQuery Sandbox

console.cloud.google.com/bigquery adresine git. BigQuery sandbox otomatik aktiftir — ayrıca etkinleştirme gerekmez. Ücretsiz katman:

  • 1 TB sorgu / ay
  • 10 GB depolama
  • Sınırsız sandbox dataset’leri

Dataset oluştur:

bq mk --dataset --location=EU limonata_data

Veya konsoldan: sol panelde proje adına tıkla, “Create dataset” de, ID limonata_data, location EU.

İlk tablo:

bq query --use_legacy_sql=false '
CREATE TABLE limonata_data.musteriler (
  id INT64,
  isim STRING,
  icecek STRING,
  fiyat NUMERIC
);'

bq query --use_legacy_sql=false '
INSERT INTO limonata_data.musteriler VALUES
  (1, "Ayşe", "Limonata", 25.00),
  (2, "Mehmet", "Nane Limonata", 30.00),
  (3, "Zeynep", "Çilekli Limonata", 35.00);
'

Doğrula:

bq query --use_legacy_sql=false \
  'SELECT icecek, COUNT(*) AS adet FROM limonata_data.musteriler GROUP BY icecek'

Public Dataset ile Tanış

BigQuery’nin en güzel tarafı: public dataset’ler. Gerçek dünya verileriyle pratik yapabilirsin.

SELECT
  bike_id,
  start_station_name,
  duration
FROM `bigquery-public-data`.london_bicycles.cycle_hire
LIMIT 5;

Bu, Londra bisiklet kiralama verisi — milyonlarca satır. Saniyeler içinde gelir. Aynı şekilde:

  • bigquery-public-data.samples.natality — ABD doğum istatistikleri
  • bigquery-public-data.noaa_gsod.weather — Küresel hava durumu
  • bigquery-public-data.new_york_taxi_trips.tlc_yellow_trips_* — NYC taksi (capstone için yasak)

gcloud’u Terraform ile Birleştir

Önceki derste öğrendiğin Terraform ile GCP altyapısını da kodla kurabilirsin. Hızlı bir örnek:

provider "google" {
  project = var.project_id
  region  = "europe-west1"
}

resource "google_bigquery_dataset" "limonata" {
  dataset_id = "limonata_data"
  location   = "EU"
}

Service account anahtarını Terraform’a vermek yerine, Terraform’u Cloud Shell’de veya Workload Identity ile çalıştırmak daha güvenli. İleride göreceğiz.

Maliyet Uyarısı

BigQuery sandbox yeterli olmayabilir. Aylık 1 TB’ı aşarsan ücretli geçersin. Üç kural:

  1. Sorgudan önce EXPLAIN ile ne kadar veri tarayacağını gör.
  2. LIMIT ile geliştir, sonra kaldır.
  3. Partition + cluster kullan (ileriki derslerde).

Alıştırma

  1. gcloud config get-value project çıktısını al.
  2. BigQuery konsolunda SELECT * FROM bigquery-public-data.samples.natality LIMIT 10; çalıştır. Kaç sütun var?
  3. Service account anahtarını indir, .gitignore’a ekle, asla commit’leme.

Sıradaki

Buluttasın. Modül 2’de bu veriyi otomatik olarak akıtmayı öğreniyoruz →