Hamutaro - Hamtaro 4

Infra/GCP

[GCP] 데이터 νŒŒμ΄ν”„λΌμΈμ—μ„œ 자주 μ“°λŠ” GCP μ„œλΉ„μŠ€

carsumin 2026. 5. 28. 10:49
데이터 νŒŒμ΄ν”„λΌμΈμ—μ„œ 자주 μ“°λŠ” GCP μ„œλΉ„μŠ€
데이터 μˆ˜μ§‘
β”œβ”€β”€ Cloud Storage (GCS)   ← S3 같은 파일 μ €μž₯μ†Œ
└── Pub/Sub               ← Kafka 같은 λ©”μ‹œμ§€ 큐 (슀트리밍)

데이터 μ €μž₯ & 처리
β”œβ”€β”€ BigQuery              ← 데이터 μ›¨μ–΄ν•˜μš°μŠ€
└── Dataflow              ← 배치/슀트리밍 데이터 처리

νŒŒμ΄ν”„λΌμΈ μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜
└── Cloud Composer        ← Airflow λ§€λ‹ˆμ§€λ“œ μ„œλΉ„μŠ€

데이터 λ³€ν™˜
└── dbt + BigQuery

 

 

Cloud Storage (GCS)
  • νŒŒμΌμ„ μ €μž₯ν•˜λŠ” κ³΅κ°„μœΌλ‘œ 둜컬둜 치면 ν•˜λ“œλ””μŠ€ν¬μ— ν•΄λ‹Ήν•œλ‹€.
ꡬ쑰 : 버킷(Bucket) > 폴더 > 파일

μ˜ˆμ‹œ :
gs://my-company-data/
β”œβ”€β”€ raw/
β”‚   β”œβ”€β”€ orders/2024-01-01/orders.csv
β”‚   └── orders/2024-01-02/orders.csv
└── processed/
    └── fct_orders/

 

  • 데이터 νŒŒμ΄ν”„λΌμΈμ—μ„œ GCSλŠ” 쀑간 μ €μž₯μ†Œ 역할이닀.
MySQL -> GCS (raw 데이터 덀프) -> BigQuery (적재)

 

 

BigQuery
  • OLAP DB
μ„œλ²„λ¦¬μŠ€            -> ν΄λŸ¬μŠ€ν„° 관리 μ—†μŒ, 쿼리만 날리면 됨
컬럼 기반 μ €μž₯      -> λŒ€μš©λŸ‰ 집계 쿼리에 μ΅œμ ν™”
λΉ„μš© ꡬ쑰           -> μŠ€μΊ”ν•œ 데이터 μ–‘λ§ŒνΌ 과금

 

  • BigQuery ν”„λ‘œμ νŠΈ ꡬ쑰
GCP ν”„λ‘œμ νŠΈ
└── BigQuery
    β”œβ”€β”€ dataset (= λ°μ΄ν„°λ² μ΄μŠ€)
    β”‚   β”œβ”€β”€ raw_orders       (ν…Œμ΄λΈ”)
    β”‚   β”œβ”€β”€ stg_orders       (ν…Œμ΄λΈ”)
    β”‚   └── fct_orders       (ν…Œμ΄λΈ”)
    └── dataset_dbt
        └── dim_customers    (ν…Œμ΄λΈ”)

 

  • μ‹€μ œ μΏΌλ¦¬λŠ” 일반 SQLκ³Ό λ™μΌν•˜λ‹€.
SELECT
	DATE(ordered_at) AS date,
    COUNT(*) AS order_count,
    SUM(amount) AS revenue
FROM `my-project.dataset.fct_orders`
WHERE ordered_at >= '2024-01-01'
GROUP BY 1
ORDER BY 1;

 

 

BigQuery λΉ„μš© ꡬ쑰
과금 κΈ°μ€€ : 쿼리가 μŠ€μΊ”ν•œ 데이터 μ–‘
무료 : λ§€μ›” 1TB 무료
유료 : 1TB 초과 μ‹œ $5/TB

 

  • λ‚˜μœ 쿼리 vs 쒋은 쿼리
    • SELECT * μ“°μ§€ μ•ŠλŠ”λ‹€.
    • WHERE μ ˆμ— νŒŒν‹°μ…˜ 컬럼 항상 ν¬ν•¨ν•œλ‹€.
    • 쿼리 μ‹€ν–‰ μ „ 우츑 상단 데이터 μŠ€μΊ” μ–‘ ν™•μΈν•œλ‹€.
-- λ‚˜μœ 쿼리 : λͺ¨λ“  컬럼 μŠ€μΊ” -> λΉ„μš© 많이 λ‚˜μ˜΄
SELECT *
FROM fct_orders;

-- 쒋은 쿼리 : νŒŒν‹°μ…˜ + ν•„μš”ν•œ 컬럼만 μŠ€μΊ” -> λΉ„μš© 적게 λ‚˜μ˜΄
SELECT order_id, amount
FROM fct_orders
WHERE DATE(ordered_at) = '2024-01-01';

 

 

Cloud Composer
  • Airflowλ₯Ό 직접 μ„€μΉ˜ν•˜μ§€ μ•Šκ³  GCPκ°€ λŒ€μ‹  μš΄μ˜ν•΄μ£ΌλŠ” μ„œλΉ„μŠ€λ‹€.
ꡬ뢄 직접 μ„€μΉ˜ Cloud Composer
μ„œλ²„ 관리 직접 GCPκ°€ 관리
버전 μ—…κ·Έλ ˆμ΄λ“œ 직접 μžλ™
μž₯μ•  λŒ€μ‘ 직접 μžλ™ 볡ꡬ
λΉ„μš© 무료 유료

 

 

μ‹€μ œ 데이터 νŒŒμ΄ν”„λΌμΈ 전체 흐름 (GCP)
  • Cloud Composer(Airflow)κ°€ 전체 흐름을 μŠ€μΌ€μ€„λ§ν•œλ‹€.
[μ†ŒμŠ€ DB: MySQL]
       ↓
  Airbyte (μˆ˜μ§‘)
       ↓
[GCS: raw 데이터 μ €μž₯]
       ↓
  BigQuery 적재 (bq load)
       ↓
[BigQuery: raw dataset]
       ↓
  dbt run + dbt test
       ↓
[BigQuery: marts dataset]
       ↓
  Looker Studio (λŒ€μ‹œλ³΄λ“œ)