2/16のssmonline #32にて、「最近のサーバーレスの話」を話してきました。
スライドはこちら:
おさらい:サーバーレスってなんだっけ?
まずは軽くおさらいからです。
サーバーレスは性質をあらわしているので0/1であてはまるものではないですが、やはり完全従量課金という課金モデルに近づける努力をしているものをそう呼んでいきたいところですね。
最近のサーバーレス開発
サーバーレスといえば、FaaS(AWS LambdaやAzure Functions)で様々なサービスをイベントドリブンでつないでいくアーキテクチャが注目されてきました。「もう古い」はちょっと盛りましたが、単純にFaaSで処理をつなぐのでは、そういったイベントドリブンな「ピタゴラ装置」を管理するのが大変です。
失敗時の再送や、異常データの除外(DLQへの積み替え)、イベントデータの書き換え・詰め替え、条件によるフィルタリングなど、イベントドリブンなシステム設計をする上で共通で必要そうな機能もはっきりしてきました。
それらを「オーケストレーション」と「コレオグラフィ」というふたつのアーキテクチャパターンから管理しやすく整理しようというのが現在の大きな流れです。
オーケストレーション型の管理
ワークフロー全体を一つのサービスの上で定義して様々なサービスを組み合わせるAmazon Step Functionsなどは、見方を変えれば中心となるオーケストレーターが他のサービスを呼び出す「オーケストレーション型」です。比較的密な結合をすることが得意です。
その一方で、より疎な結合をしたいのであれば、FaaSを挟むかわりに、イベントバスを介して接続するというパターンが増えています。これは中央集権的な管理ではなく「コレオグラフィー型」と言えます。イベントバスは技術的な要素としては賢いPub/Sub基盤ですが、イベント処理のための機能が盛りこまれています。
FaaS Updates
もちろんFaaSの仕事はサービスをつなぐだけでは無いので、FaaS自身も様々な拡張がされています。この数年の大きなアップデートをまとめたのがこのスライドです。コンテナとの融合や、対応言語の拡充は各社共通しています。同時実行数の制御など、弱みとされていた点もつぶしてきています。
FaaSの開発もいろいろ課題がありましたが、ここで「小ネタ」として紹介したように、地味にいろいろ改善がされています。少し前にためして辛いなーと感じた人もあらためてためしてみるチャンスです。
FaaSの次の戦場:CDNエッジ
いま一番ホットな戦場のひとつが「CDNエッジ」です。なかなかに技術的制約の強い環境ですが、フレームワークなども登場してきたことで一気に開発者体験が良くなってきました。
まとめ
これでサーバーレス分野に興味を持った方むけに、「Serverlessを支える技術」で詳しく解説しているので、よろしくおねがいします。