[レポート] SRV316 :Serverless Stream Processing Pipeline Best Practices サーバーレスなストリーム処理パイプラインのベストプラクティス #reinvent

はじめに

サーバーレス開発部@大阪の岩田です。 この記事はre:Invent2018のSRV316 Serverless Stream Processing Pipeline Best Practicesのレポートになります。

概要

以下が公式の概要となります。

Real-time analytics has traditionally been analyzed using batch processing in DWH/Hadoop environments. Common use cases use data lakes, data science, and machine learning (ML). Creating serverless data-driven architecture and serverless streaming solutions with services like Amazon Kinesis, AWS Lambda, and Amazon Athena can solve real-time ingestion, storage, and analytics challenges, and help you focus on application logic without managing infrastructure. In this session, we introduce design patterns, best practices, and share customer journeys from batch to real-time insights in building modern serverless data-driven architecture applications. Hear how Intel built the Intel Pharma Analytics Platform using a serverless architecture. This AI cloud-based offering enables remote monitoring of patients using an array of sensors, wearable devices, and ML algorithms to objectively quantify the impact of interventions and power clinical studies in various therapeutics conditions.

Amazon Kinesis、AWS Lambda、Amazon Athena等のマネージドサービスを活用したサーバーレスなストリーミングパイプラインのデザインパターン、ベストプラクティスについての紹介がありました。 また、具体的な事例としてIntelが「Pharma Analytics Platform」をどのように構築したかという話を詳しく聞くことができました。

スピーカー

  • Roy Ben-Alta - Head of Global Big Data & Analytics Practice, AWS
  • Eyal Levi - R&D Manager, Intel

レポート(前半)

Serverless Analyticsの歴史

  • データ分析には様々なデータソースから1つの場所にデータを集めることが必要になる
  • BIアプリは集約された1つのデータソースに接続する
  • サーバーレスでのオペレーションモデル
    • プロビジョニングも管理もしない
    • オートスケール
    • 従量課金
    • 高可用性
  • データレイクの歴史
    • AWSではS3をデータレイクとして活用し、データを集約する
  • インフラの管理に注力するのは10%だけでよくなり、残りの90%はビジネスに注力できるように

Streaming Processing with AWS Lambda and Kinesis Data Streams

  • データパイプラインの速度の問題について ユースケース
    • バッチとリアルタイムストリーミング
    • それぞれのユースケース

バッチサイズの最適化とスループットの最大化

AWS LambdaとKinesis Data Streams

Lambdaの実行モデル

  • 同期
  • 非同期
  • ポーリング
  • LambdaがKinesisの拡張ファンアウトとHTTP2をサポート 65%のパフォーマンスUP

サーバーレスが適さない場合

  • ウインドウ関数のようなステートフルなストリーム
  • 書き込み前に大容量のデータをバッファリングするケース こういうケースではFirehoseを使う
    • FirehorseとLambdaのモニタリングは2つのメトリックをチェック
  • ExecuteProcess.Success
  • DeliveryTo*.Success

Serverless data piplineとstream processing

  • Lambdaでどのようなデータ処理を行うか
    • ログデータのIPから都市の情報を付与する
  • Firehoseはデータのコンバートも対応
    • JSON->Parquetなど

レポート(後半) Intel Pharma Analytics

ここからスピーカーが交代してIntelのPharma Analyticsの歴史と事例の紹介がありました。

  • パーキンソン病についての簡単な説明
  • Pharma Analyticsによって医師が付きっきりにならなくてのリモート診断が可能に

2016年のアーキテクチャ

個別のテクノロジーをバラバラに採用 宇宙船、スポーツカー、バイク、舟が並んでいたようなイメージ

  • アーキテクチャ変更後はKinesisでデータを収集
    • スケーラブルに
    • コスト削減に成功
    • Agilityに
  • アーキテクチャ変更後は飛行船が一台だけあるようなイメージ
  • 学んだこと
    • Lambda
      • 自然とステートレスアーキテクチャになる
      • コンポーネントは小さく
      • Lambdaが共通して使うライブラリの管理
      • リリース、デプロイをどうするか計画を
    • Kinesis Data Streams
      • LambdaでConsumerを実装
      • データを圧縮してコスト削減
      • Firehoseを使ってparquetフォーマットで書き込み
    • quick wins
      • AthenaでS3からクエリ
      • API GWとCognito、Lambdaの統合、キャッシュの有効化
      • Cognito認証認可
      • プロダクション環境への展開

サーバーレス化の効果

  • 21台のサーバーが0台に
  • 75%のコストカットに成功

まとめ

サーバーレスなストリーム処理パイプラインのベストプラクティスについて聞くことができました。 他のセッションに比べてかなりペースが早く、付いていくのが必死という感じでした。

最近はサーバーレス開発部の案件でもETLの引き合いが多くなってきているので、この辺りのアーキテクチャをしっかりと抑えていきたいです!