[レポート] モダンなクラウドアプリケーションにロックインされていませんか? #AWSreInvent #ARC307
re:Invent 2023 で行われた Do modern cloud applications lock you in? (ARC307) のセッションレポートです。
概要
Modern cloud applications utilize fully managed services that keep builders from having to manage infrastructure. Does having the cloud do more make it harder to move applications somewhere else? Can abstraction layers and in-house platforms give you the best of both worlds? Does decoupling your application actually increase your cloud costs? This session examines trade-offs for modern cloud applications, explains why lock-in isn’t just the result of the services that you use, and reveals if the best abstraction layers actually exist.
(日本語訳)
最新のクラウド アプリケーションは、ビルダーがインフラストラクチャを管理する必要がないようにするフルマネージド サービスを利用しています。 クラウドにできることが増えると、アプリケーションを他の場所に移動することが難しくなりますか? 抽象化レイヤーと社内プラットフォームで両方の長所を活用できるでしょうか? アプリケーションを分離すると、実際にクラウドのコストが増加しますか? このセッションでは、最新のクラウド アプリケーションのトレードオフを検証し、 ロックインが使用するサービスだけの結果ではない理由を説明し、最適な抽象化レイヤーが実際に存在するかどうかを明らかにします。
動画
YouTubeで公開されていますので、詳しくみたい方はぜひご参照ください!
見どころ
こちらのセッションについては、AWS re:Invent 2022でも行われていたセッションですが、アップグレードされた内容になっております。
モダンなアプケーションを構築すると、ベンダーロックインについても懸念しますが、この問題については様々な角度から考えることができ、解決方法を見つけることができます。
本セッションでは、実際にロックイン問題の深掘りから解決方法、取り組み方まで紹介されており、非常に興味深い内容となっています。
セッション内容
モダンなアプリケーション
モダンアプリケーションへの道筋として、よく上図のように考えられることが多いですが、誤っています。
まず、コンテナとサーバレスは異なるものではないです。
例えば、Lambda にコンテナイメージをデプロイできたり、Fargateはサーバレスなサービスとなっています。
モダンアプリケーションは、クラウドを以下の観点で最大限に活用することができます。
- 運用コストの軽減
- 高い可溶性と拡張性
- コストの透明性と配分
- 機敏性と変更への対応力
- 高レベルでの自動化
- オブザーバビリティ
特にモダンクラウドアプリケーションでは、以下を提供します。
- きめ細かい障害分離
- 疎結合による依存関係の減少
- イベント駆動型なため、拡張が容易に行える
やはり銀の弾などなく、トレードオフを理解して意思決定することが重要です。
問題をより多くの次元に分解すること
1次元方向で考えてしまうと、全てがオールグリーンの場所はありません。
各軸を置いて、高次元的に考えることが重要で、新しい解決策を見つけ出す手掛かりになります。
また、「ロックイン」については、多くの次元を持っており、それぞれを十分に検討する必要性があります。
2×2のマトリックスを利用することで、2次元に分割して、各次元が相互にどのように関連するかをシンプルに考えることができるようになります。
特に、右上のAccepted lock-inが興味深いです。
Accepted lock-inでは、スイッチングコストも発生しますが、独自のユーティリティを取得できます。
解決策の範囲を広げること
従来のアプリとモダンアプリでは、生産性の向上の検討が異なっているため、解決策を単一の方法で探していないことを確認するために必要です。
例えば、アプリケーションの考慮事項をインフラ層だけで解決しようとするのではなく、他の層も活用する意識を持つようにしましょう。
サービスマッピング
サービスマッピングでは、一見同じ機能を提供しているように見えますが、実際には違いがあります。
この違いを把握して、適切にベンダーを選択することが重要です。
技術的な抽象化
We can solve any problem by introducing an extra level of indirectionと語られているように、間接層を追加するだけでほとんどの問題を解決できます。
フルマージドなオープンソース
AWSでは、多くのオープンソースを活用できる AWS マネージドサービスがあります。
これらを活用することで、スイッチングコストを抑えることができ、差別化されない作業を削減することができます。
まとめ
設計の抽象化と適切なソフトウェア配信規律を使用することで、より優れたアプリケーションを迅速に構築し、潜在的な切り替えコストを低く抑えることができます。
最後に
ロックインの本質的な問題であるスイッチングコストですが、様々な観点で見ていく点が非常に勉強になりました。
特に、問題については、1次元でのみ見てしまいがちですが、多次元で見ると、適切な解決方法を見つける手掛かりになる点は興味深かったです。