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 istatistikleribigquery-public-data.noaa_gsod.weather— Küresel hava durumubigquery-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:
- Sorgudan önce
EXPLAINile ne kadar veri tarayacağını gör. LIMITile geliştir, sonra kaldır.- Partition + cluster kullan (ileriki derslerde).
Alıştırma
gcloud config get-value projectçıktısını al.- BigQuery konsolunda
SELECT * FROM bigquery-public-data.samples.natality LIMIT 10;çalıştır. Kaç sütun var? - 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 →