「db analytics showcase Sapporo 2018」でサーバーレスの話を聞いてきました #dbts2018 #dbasSPR
はじめに
2018年6月22日、札幌で開催されている「db analytics showcase Sapporo 2018」のセッション「Serverless Analytics on AWS」へ参加してきましたのでそのレポートとなります
スピーカー
- 志村 誠様(アマゾン ウェブ サービス ジャパン株式会社)
アジェンダ
- サーバーレスとは
- AWS のサーバーレス分析サービス
- サーバーレス分析のアーキテクチャパターン
- 他サービスとの使い分け
- 下回りを気にしない機械学習
サーバーレスとは
- サーバーを気にする事なくアプリケーションを構築し実行
コンピューティングの進化
- 物理サーバ → データセンタ内の仮想サーバ → クラウド上の仮想サーバ
- データセンタ内の仮想サーバ
- 高い使用率、プロビジョニング速度の改善、アップタイムの改善、DR、HWの独立性、移行も楽
- クラウドの仮想サーバ
- 投資コストと運用コストのトレード、スケールが容易、より早い開発スピード、メンテナンスの手間の削減、可用性・耐障害性の向上
クラウド上の仮想サーバでもでも残っている制限
- 仮想マシンの管理
- キャパシティや利用率の管理
- ワークロードのサイズ変更
- 可用性や耐障害性の管理
- 断続的な(たまにしか処理しない)ジョブを実行するにはコストが高い
サーバーレスへの進化がもたらすもの
- 色々なものから解放される。これらは無い方がビジネスへのメリットが高い
- プロビジョニングと利用
- 可用性と耐障害性
- スケーリングの管理
- 運用と管理
- その他のメリット
- 常にパッチが適用されている
- SSH不要/不可
- 全てのリクエストは認可され、監査可能
サーバーレスな分析とは
- 下回り(インフラ)を気にせず、やりたい事に集中できる
- データ収集:設定だけで、あとは自動収集
- データ管理:データのスキーマを自動で登録・更新
- ETL:処理を記述したスクリプトだけで前処理を実行
- 市販のものだとサーバーが必要になり運用の手間が発生
- クエリ:SQLで自由に分析
- 市販のものだと高価でサーバーが必要になり運用の手間が発生
- 可視化:ブラウザから簡単にGUIで可能
- アプリケーション不要
AWS の分析サービス
- 収集、管理、ETL、分析・可視化、機械学習それぞれにサービスを用意している
Amazon Kinesis
- KDS:収集し、分析やデータ保存
- 利用シャード数を指定してリソースを確保
- KDF:収集し、S3、Retshift、ES、Splunkに簡単に配信
- データ量に応じて自動でスケール
- KDA:上記2つからストリームデータを取得してSQLを実施
- 直近3分のストリームデータにSQLをかける、とかが可能
- リアルタイムで監視とかに使う
- クエリ実行時のリソースをKPU(KinesisProcessingUnit)として確保
AWS Glue
- 完全マネージド型ETLサービス
- 大規模データに対してSpark/PythonジョブによるETLを実行
- データカタログ(自動で更新されバージョン管理される)を持ち、入力・出力のデータソースを管理
- 定期的にクローラーを走らせてデータソースのスキーマを更新
- 多段のジョブフローを定義してスケジュール実行
Amazon Athena
- インタラクティブなクエリサービス
- クエリエンジンはPresto(AWS側で管理)
- 数十TBクラスのデータに対しても高速にクエリを実行
- Glueデータカタログと連携していて、すぐにクエリを実行可能
- BIツールと連携も可能
- 従量課金(スキャンしたデータ量による)なので初期費用が掛からない
- gzip圧縮すれば料金を抑えられる
Amazon QuickSight
- 高速なSPICEエンジンと直感的な操作が可能で、専門家不要のBI
- AWS内外の様々なデータソースと連携できる
- わかりやすいUI、マウスだけで高速な可視化
- セッション単位(1セッション$0.3/30min)のリーダーライセンスにより、大きな組織でもコスト効率がいい
- ユーザー当たりの上限が$5なので何度見てもこれ以上にはならない、使わなければ$0
サービスの利用
- Glue ベースの S3 データレイク
- 各種データソースのカタログをGluede一元的に管理
- DX経由でJDBC接続可能なオンプレミスのDBもカタログに登録可能
- S3上のデータをAthena、Redshift Spectrum、EMRで分析
- Glueでパーティションの自動更新
- Athenaテーブルのパーティション認識させる必要が無い
- Glueクローラーをスケジュール実行すれば最新のパーティション状態を認識・更新させる
- Firehose経由のログにニアリアルタイムでクエリ
- year/month/day/hourというS3キーの形でParquetデータフォーマット出力できる
- Athenaから高速でクエリ実行
- Step Functions を使ったジョブフローの構築
- Glueジョブやその他のジョブを実行可能
- サードパーティのスケジューラ製品からジョブをキックする事も可能
- 他サービスとの使い分け
- Glue/Athenaは特化しているので、ユースケースによっては別のサービスを選択する
- Glue
- 細かいパラメータを制御できない
- 制御したい時はEMR+Spark/Hiveを選択する
- Athena
- リトライがない
- 大量データを長時間処理するのには向かない
- フルスキャン・・・EMR
- テンポラリテーブルを活用した多段のETL処理・・・EMR、Glue
- サブクエリやJOIN・・・Redshift
- こ高頻度な大量の分析処理・・・Redshift
- Glue
- Glue/Athenaは特化しているので、ユースケースによっては別のサービスを選択する
下回りを気にしない機械学習
機械学習のサイクルにおけるよくある課題
- 開発・学習・・・データサイエンティストが開発環境で作業
- 開発時、学習に必要なハイスペック環境で開発をするためコスト効率が悪い
- 学習時、大量の学習ジョブを順番に一つずつ処理するしかない(スケールが容易ではない)
- 推論・・・エンジニアがプロダクション環境に構築
- API予測サーバを使いたいだけなのに構築・運用・管理(スケール)を考える必要がある
これらの課題を解決するサービス「Amazon SageMaker」
- サイクル毎の特徴
- 開発(ノートブックインスタンス)
- 主要ライブラリはインストール済み
- あまり高スペックである必要が無い
- すぐに起動できる
- 学習
- Dockerコンテナを使う
- 複数ジョブを同時実行できる
- 分散学習も簡単に実行できる
- 構築・実行・破棄は自動
- 推論
- Dockerコンテナを使う
- エンドポイントを作成するだけ
- オートスケーリングも自動
- A/Bテスト(両方同時稼働)で試す事ができる
- 管理・運用の手間がほとんどない
- 開発(ノートブックインスタンス)
- 様々なフレームワークやアルゴリズムをサポートしている
- ビルトインアルゴリズムを使う
- 用意されているフレームワークを使う
- Tensorflow
- Chainer
- PyTorch
- MXNet
- 機械学習のコードとライブラリを含んだコンテナを作成
- Dockerコンテナを指定して学習させる事が可能
- ハイパーパラメータのチューニング
- ベイズ最適化によるパラメタの自動チューニングを行うライブラリもサポート
- HyperparameterTuner
- チューニングしたいハイパーパラメータとその範囲を指定するだけ
- ターゲットメトリクスも自由に指定可能
- ベイズ最適化によるパラメタの自動チューニングを行うライブラリもサポート
まとめ
- 様々な分析サービスがあるが、サーバーレスのサービスを活用することでやりたいことに集中できる
- まずはサーバーレスで検討、はまらない時は他のサービスを検討
- SageMaker を利用することでサーバーレスに近い運用が可能
さいごに
今回参加させていただいたことでサーバーレスのメリットについて整理ができました。
サーバーレスを進めることで運用の手間が省け、それによってできた時間を別の事に使うことでビジネスの効率化を進める、というのがこれからの方向性なのでしょうか。
今後もAWSが便利なサービスを提供し続けてくれることで、私たちの仕事のバランスも変わっていくのかもしれません。