Tek platform, üç katman: ingest → staging → reports
Three-layer platform
Bu derste neler öğreneceksin
- Bruin CLI kurar
- VS Code extension + MCP entegre eder
- Üç katmanlı mimari tasarlar (Chess.com API starter)
Mutfak Aletinin Üç Bölmesi
Bir çok amaçlı mutfak aleti düşün: tek bir kutu, içinde üç bölme. Bölme 1 malzemeleri dışarıdan alır (ingest), Bölme 2 malzemeleri yıkar-doğrar (staging), Bölme 3 yemeği pişirir-tabak koyar (reports). Tek kutuyu aç, hepsini yap.
Bruin de tam böyle. Bugüne kadar öğrendiğin her şeyi tek bir yere koyar:
| Bölme | Ne yapar | Ne kullanır |
|---|---|---|
| 1. Ingest | Dışarıdan veri çeker | API, dlt, Python |
| 2. Staging | Temizler, standart hale getirir | SQL, dbt |
| 3. Reports | Raporlar, dashboard’lar | SQL + Metabase |
Neden tek kutu? Çünkü her bölmenin ne zaman çalışacağını, hangi sırada, hata olursa ne yapacağını tek yerden yönetirsin. Mutfakta üç ayrı cihaz çalıştırmak yerine tek aletin düğmesine basmak gibi.
Bruin’ı Kur
# Homebrew (Mac)
brew install bruin
# pip ile
pip install bruin
Kuruldu mu kontrol et:
bruin --version
# Bruin 0.x.x bekleniyor
VS Code extension’ı kur: VS Code → Extensions → “Bruin” ara → Install. Sonra .bruin.yml dosyası olan bir klasör açınca MCP (Model Context Protocol) otomatik açılır — Claude Code artık Bruin pipeline’ını anlar, schema görür, sorgu yazabilir.
Chess.com API Starter Projesi
Hikâyeni hatırla: B seçeneği (oyun/turnuva) ise Chess.com API’si biçilmiş kaftan. Ücretsiz, kayıt gerekmez, JSON döner.
Proje yapısı:
chess-pipeline/
├── .bruin.yml
├── pipeline/
│ ├── assets/
│ │ ├── chess_games.py # Ingest: API'den çek
│ │ ├── stg_games.sql # Staging: temizle
│ │ └── reports/
│ │ └── player_stats.sql # Reports: istatistik
│ └── README.md
Ingest asset’i (chess_games.py):
"""@bruin
name: chess.games
type: python
image: python:3.11
connection: postgres-warehouse
@bruin"""
import requests
def fetch(username: str = "magnus"):
url = f"https://api.chess.com/pub/player/{username}/games/2025/01"
return requests.get(url, headers={"User-Agent": "kids-de-zoomcamp"}).json()
Bu satırlar üç şey yapar:
name: Bruin’a “bu asset’in adı ne?” dertype: python: Çalıştırma yöntemiconnection: Veriyi nereye yazacağı
Tek bruin run ile ingest → staging → reports sırayla çalışır. Hata olursa Bruin durur, log gösterir.
Hands-on
brew install bruinveyapip install bruinile kur.- VS Code extension’ı kur, MCP aktif olsun.
- Yukarıdaki
chess-pipeline/klasörünü oluştur. bruin initçalıştır (yoksa Bruin yardım eder).bruin runile pipeline’ı başlat.- Chess.com’dan gerçek bir kullanıcı adıyla (kendi hesabın ya da bir büyüğünün) oyunları indir.
stg_games.sqliçindeWHERE result IS NULLgibi basit bir filtre yaz.
Sıradaki
Pipeline çalışıyor. Şimdi verinin nereden geldiğini görselleştirelim →