バッチ処理のスケーリング

ストリーミングの基礎概念

Mike Metzger

Data Engineer

スケーリングとは?

  • 性能向上
    • 高速化
      • 同量のデータをより短時間で処理
    • 処理量の増加
      • 同じ時間でより多くのデータを処理
ストリーミングの基礎概念

垂直スケーリング

  • より高性能な計算資源
    • 高速な CPU
    • 高速な IO
    • 大容量メモリ
  • 一般に最も容易なスケーリング
    • 複雑さが最小
    • 既存プログラム/アルゴリズムの変更はほぼ不要

CPU

メモリ

1 Images courtesy https://unsplash.com/@jeremy0
ストリーミングの基礎概念

垂直スケーリングのデメリット

  • 本質的に上限あり
  • 高コスト/ROI 低
  • 業界の性能向上は保証されない
ストリーミングの基礎概念

水平スケーリング

  • タスクを複数部分に分割
    • 台数を増やす
    • または CPU を増やす
  • 「極めて並列化しやすい」タスクに最適
    • ワーカー間で容易に分割できる処理
  • 高い費用対効果
  • 特定の処理でほぼ線形に性能向上

CPU1

CPU2

CPU3

CPU4

ストリーミングの基礎概念

水平スケーリングのデメリット

  • 複雑さ
    • 処理フレームワークが必要(Apache Spark や Dask など)
    • さらに広範なネットワーク構成が必要
  • 継続的な運用管理
  • 要件次第で高コスト
  • 「非並列」タスク
ストリーミングの基礎概念

Passons à la pratique !

ストリーミングの基礎概念

Preparing Video For Download...