7.9K Views
September 20, 23
スライド概要
ServerlessDays Tokyo 2023 pre-Day
秋葉原生まれ大手町育ちの歌って踊れる江戸っ子インフラエンジニア。 0と1が紡ぐ「ゆるやかなつながり」に魅せられ早20年、 SNSとCGMの力で世界を幸福にするのがライフワーク。 市民、幸福は義務です。 あなたは幸福ですか?
Serverless Updates 2023 2023-09-20 ServerlessDays Tokyo 2023 pre-Day めもおきば/LayerX Aki @nekoruri
サーバーレスのおさらい 「サーバー」の抽象化によって登場した以下の性質をもつサービス 1. 運用者:自分でサーバーを管理しなくて良い • 完全従量課金(※)なフルマネージドサービス • 0円から使った分だけいくらでもスケールしてくれる 2. 開発者:個々のサーバーに依存する機能を利用しない • プロセスメモリやファイルシステムはリクエストをまたいで 共有されない(ことがある) • レプリケーションとシャーディングによるスケーラビリティ確保 ※ 最低限動かし続けなくてはいけない動作(に対する課金)はありうる 2
「サーバーレス」の全体像 小さな計測単位:時間、性能 確保量から使用量へ 完全従量料金 イベントバス・ワークフローエンジン サーバーマシン管理からの解放 弾力性 (オートスケール、ゼロスケール) フルマネージドサービス オーケストレーション・コレオグラフィ ID管理・認証認可 マイクロサービス・分散システム イベントドリブンアーキテクチャ リソースの抽象化 リアクティブシステム microVM/コンテナランタイム アクターモデル スタートアップの高速化 プログラミングモデル サーバーマシン依存リソースの非共有 プロセスメモリ・ファイルシステム シャーディング・レプリケーション ストリーミング処理 価値への注力 抽象化のグラデーション Container – Function – DSL - Configuration 3
イベントドリブンアーキテクチャ(EDA) • 利用するたくさんのクラウドサービスをどう管理するか • 「FaaSでつなげていく」はもう古い • 失敗時の再送、異常データの除外、 データの書き換え・フィルタリング、etc… • ピタゴラ装置の構成をどう管理するか • オーケストレーション • コレオグラフィー 4
<オーケストレーション> <コレオグラフィ> A A B B Input C Input Output C 指揮者 Output
オーケストレーション型の管理 • サービス間の組み合わせをDSLによって定義、実行するサービス • Amazon Step Functions • Azure Durable Functions • Google Workflows λ DDB SNS Step Functions (オーケストレーター) 6 https://aws.amazon.com/jp/blogs/news/new-aws-step-functions-workflow-studio-a-low-code-visual-tool-for-building-state-machines/
コレオグラフィー型の管理 • イベントバスを介したサービス連携として管理 • Amazon EventBridge • EventBridge Pipes • Azure Event Grid • Google Eventarc • 賢いPub/Sub基盤 • 賢いPoint-to-Point基盤 7 https://learn.microsoft.com/ja-jp/azure/architecture/solution-ideas/articles/application-integration-using-event-grid
ストリーミング処理エンジン • より大規模なストリーム処理のためのエンジン • Amazon Managed Streaming for Apache Kafka • Amazon Managed Service for Apache Flink • Azure Databricks(Spark) • Google Cloud Dataflow(Kafka) • Google Cloud Dataproc(Spark、Flink、Presto、etc) • 専用のDSLで分析処理を記述 • クラスタ内でシャーディング・レプリケーションし実行 8
FaaS Updates AWS Lambda Azure Functions • コールドスタート時間の削減(VPC強化、snapshot複製) • 同時実行数の制御 • 同時実行数の制御 • KeyVault参照によるシークレット管理の強化 • 関数URL (API GatewayなしでHTTPS公開) • キーではなくマネージドIDによるサービス接続 • サイドカーを提供するための拡張API • 実行時間やスケールアウトなどの制限緩和 • EFS対応、起動の高速化(Java) • Durable Functionsの複数言語対応 Google Cloud Functions • 共通 • 第2世代でCloud Runベースに (1インスタンスで同時リクエスト可能) • Node.js、Python、Java、.NET、Goあたりが どの環境でも使えるように • インスタンス数の制御 • 起動の高速化 • シークレット管理の強化 • 関数のコンテナ化ができるように • オープン化(Knative、KEDA、CloudEvents) • LB対応(Serverless NEG) 9
FaaS Updates • コンテナとのグラデーションの境目がさらに曖昧に • 関数をコンテナ化してCaaSにデプロイ • コンテナを「関数」としてFaaSにデプロイ • FaaS基盤のバージョンアップ • コールドスタートの高速化 • 起動時メモリイメージの再利用 • スタートアップCPUブースト • 言語ランタイムのバージョンアップ ※ 本来やらなければいけないことをきちんと強制される 10
PaaS Updates • クラウドサービスの多様化 • OpenAIやmomento、TiDBのような個別機能特化 • ひとつのクラウド事業者に留まらない「マルチクラウド」化 • ID管理、認証認可の重要性を再認識 • 「サーバーレス」を謳うサービスの増加🤔🤔 『確保量から使用量へ(Pay-As-You-Go)』 『ゼロスケール(十分に低い最低利用料)』 『高いスケーラビリティ』 11
CDN Edge-computing • CDNのエッジサーバ上でプログラムを実行 • ユーザーに「近い」「はやい」 • メモリや実行時間の制約は厳しめ(100msとか) • Cloudflare Workers、Fastly Compute@Edge、 Amazon Lambda@Edge、etc. • KVS(Cloudflare Workers KV)、SQLite(Cloudflare D1)などの 登場も後押し 12
CDN Edge-computing • 実行環境における抽象化戦争 • コンテナ / HTTP・gRPC • JavaScript(Node等) / Service Worker • WebAssembly / WASI • フロントエンド系から開発者の参加 • Hono: https://honojs.dev • サーバーレス時代の「Ruby on Rails」 13
まとめ • サーバーレス技術はコモディティになりつつあるけど面白いよ! • FaaSが中心人物ではなくなってきている • 様々なクラウドサービスの組み合わせ方、構成管理が重要 (オーケストレーション・コレオグラフィという型に注目) • サーバーレスでサーバーレスなサービスをつくれ! • CDNエッジが次の戦場(ただし人は選ぶ) 14