サーバレスアーキテクチャに関して、技術的な側面はあまり詳細に立ち入らず、一応非エンジニアにもメリットが理解可能なように書かれた本です。あまり分量も多くありません。
ソフトウェアエンジニアにとっては、今更なことが多いのですが、いくつか興味深い話が載っているので、そこを掘り下げます。
ベンダロックインの評価フレームワーク
サーバレスへの異論として、ベンダロックインが挙げられており、本書ではその反論が書かれているのですが、その中で、Gregor Hohpeの記事がそのフレームワークとして引用されています。
https://martinfowler.com/articles/oss-lockin.html
Hohpeのロックインの分類を以下のようにマトリクスで整理しています。
- 使い捨て: 独自の機能もなく、別のものに切り替えるのもさほど大変でない場合
- ロックインを許容する: 自前で構築しようにもコストがかかりすぎり、他に替えの効かないサービスである。BigQueryなど。
- 要注意: ロックインされているが、別のサービスでも 他に替えが効くのが最も厄介で、慎重に選定、設計しなければならない。RDBMSはこの領域に入りがち。
- 理想的: 独自の機能を活用できていて、他の代替手段にスイッチするのも比較的簡単なもの。AWS S3なんかが代表的な例。
スイッチングコストを考える上で、その発生確率も評価として加えなくてはなりません。これはほぼリスクマトリクスと同じです。俎上にあがりやすいのがRDBMSです。DBアクセスは抽象化レイヤを設けるのが、良い設計の定石として語られることが多いですが、RDBMSを乗り替えが発生した時の対応コストが、その理由の1つとして挙げられます。1
実際にRDBMSを乗り替える可能性は、システムライフサイクルが数年規模ではまずゼロに等しいので、考慮の必要ありません。(一方で十年以上使うようなシステムでは、コードやSQLがぐちゃぐちゃになる前に切り替え戦略を練っておく必要があるでしょう)
この図、アジリティとギャンブルの対比も興味深く、Hohpeも「変化を受け入れ、それを実行するコストを低く抑えるようにシステムを設計したことになる。が、この象限は、多くの小さな変更がすぐに積み重なるにもかかわらず、左上の"ギャンブル"ほど注目されないことが多い。ありそうもないドラマの方が注目されるのだ!」と述べています。
Wardleyのコンポーネント化
Wardley Mapsによって知られるSimon Wardleyのブログ記事を引用して、サーバレスアーキテクチャのコスト以外のメリットを正当化しています。
世の中の製品や技術は、コモディティ化して標準化するとそれらがコンポーネント解いて提供されるようになり、それを用いて構築されるシステムの変化、多様性、アジリティも高くなる、というイノベーションの理論でよく聞くような話です。『Serverless as a Game Changer』ではタイトル通り、サーバレスアーキテクチャが従来のサーバ技術の上にあるものとして、これを引用しているわけですが、元のWardleyの記事にはもう少し面白い考察がなされています。
「従来技術がコンポーネント化されると、単位価値は低下するが、その総価値がはその技術のライフサイクル上、最も高い傾向がある」というものです。過去、石炭や電力、近年では電子機器の部品など、それらを使った新しい製品・技術のために提供価格圧縮に圧力がかかるものの、それ以上に需要が高まるのでボリューム効果によってそれが相殺できるというものです。
これはクラウドベンダがサーバレスアーキテクチャを推す経済的な裏付けを説明しているように思いました。
-
よく槍玉にあがるクリーンアーキテクチャは、抽象レベルの違うものは一緒にしてはいけない、詳細の変更がより抽象度の高いものに影響を与えないようにしておこう、というのが本線の目的なので、「RDBMSなんて乗り替えることはねぇよ」というツッコミは(クリーンアーキテクチャ本文にも一応書いてあるものの)ちょっとハズしているように思います。 ↩