サーバーレスアプリケーションの利点、課題、ベストプラクティス。
サーバーレス・アプリケーションとは何か?
飛行機を所有することなく、世界中を旅することができます。必要なのは、インターネット接続とクレジットカード、そして行きたい場所への自由な想像力だけで、そこに行くための航空券を買うことができます。なぜなら、飛行機は買うのにお金がかかるが、維持するのにはもっとお金がかかるからです。今度旅行するときは、しなくてもいいメンテナンス、しなくてもいいデザインの選択、安全対策がすでに取られていることを考えてみてください。個人的には、私は車のガソリンを入れ忘れることが半分くらいあるが、飛行機が目的地まで十分な燃料を持っているかどうかや、心配する必要のなかった14のバックアッププランに責任を持たなくてよかったので、休暇に集中することができたのです!
一言で言えば、これがサーバーレスアーキテクチャです。データの保存や処理に必要なCPUタイプ、インスタンス数、AZなどを気にする必要はありません。それは、舞台裏で魔法のように行われるだけです。より安く、より効果的で、より安全で、より利用しやすくなります。
サーバーレスアーキテクチャを理解する
最高のサーバーレス・サービスとは、バックグラウンドにうまく溶け込み、その存在に気づかないようなものです!DockerやEC2に全面的に依存しているため、私たちの企業はサーバーレスを使っていないと思っている人が多くいます。EC2のAmazon Machine Instances(AMI)やFargateサービスのコンテナは、気づかないうちにS3から提供されています。
Lambdaのようなサーバーレス・サービスは、複雑なモノリス・アプリケーションを、よりモジュール化された適応可能なアーキテクチャを持つために使用できる、目的に応じて構築されたマイクロサービスに分解するのに役立ちます。DynamoDBを使えば、インスタンス数を気にすることなく、1TPSから100万までスケールできます。これはまた、サーバーレスがサーバーレス関数以上のものであることを示しています!コンピュート、ストレージ、データベース、ワークフロー管理、メッセージング、キャッシュのニーズに対してサーバーレス・サービスを提供することができます。
サーバーレスアプリケーションの利点
サーバーレス・サービスは、アプリケーションの市場投入までの時間を最短にします。一般的にコストやエンジニアリングの複雑さという形で現れる参入障壁を排除します。
容易な拡張性
Get Going. Keep Goingはサーバーレスの本質を捉えています。サーバーレス・サービスは、複雑な設定なしに1TPSから100万TPSまでスケールすることができます。DynamoDBはAmazonプライムデーのために1億TPS以上にスケールしたが、ほとんどのAmazonエンジニアは非常に大規模なデータベースを構築する方法について悩む必要はありませんでした。
費用対効果
サーバーレス・サービスはゼロスケールで、使用量に応じた課金モデルを提供します。つまり、サービスが休止しているときや、製品が軌道に乗らないときでも、クラウド料金を賄うために財布を空っぽにする必要はありません。
パフォーマンスの向上
サーバーレス・サービスには、セキュリティ、可用性、そしてパフォーマンスに関するベスト・プラクティスがすべて組み込まれています。この3つは、多くの人が思っている以上に絡み合っています。キャパシティの不足は、可用性とパフォーマンスに影響します。サーバーレス・サービスは自動的にスケールするので、最も忙しいピーク時でも安定したパフォーマンスを得ることができます!
ハンズオフ・サーバー管理
構築すべきビジネスや改善すべきアプリがあるのに、サーバーの管理に時間を費やすのはもったいない。サーバーレス・アーキテクチャーは雑念を取り除くことができます!
サーバーレスアプリケーションの課題
サーバーレス・アーキテクチャの方が優れていることも多いが、それでもアプリケーション全体の設計にはある程度の配慮が必要です。とはいえ、サーバーレス・アーキテクチャで一般的に語られる問題の多くは、代替アーキテクチャにも存在するものです。サーバーレスはそれらをより明白にし、デバッグしやすくするだけです。
コールドスタートの問題
コールドスタートの問題はサーバーレス特有のものではありません。サーバーレスがそれをより明白にしているだけです。オートスケーリングがオンになっているEC2クラスタを考えてみましょう。スパイクを検出し、新しいインスタンスの立ち上げを依頼し、それらのインスタンスをターゲットホストとしてロードバランサーに登録するまでに、既存のキャパシティが何分も追加の負荷を担っています。これはコールドスタートとは異なる形態です。Momentoは、新しいEC2インスタンスが立ち上がるのを待つ代わりに、キャッシュにデプロイしてスパイクを吸収できる暖かいキャパシティプールを持つことで、両方の世界のベストを提供します。
マイクロサービスが多すぎて把握しきれない
サーバーレスは簡単なので、顧客は多くのマイクロサービスを構築することに夢中になり、エンドツーエンドのワークフローがどのように機能しているのかわからなくなることがよくあります。これに対処するために、IAC(Infrastructure as Code)とObservability(トレースなど)に最初から投資することを強くお勧めします。
セキュリティへの懸念
サーバーレスは実はセキュリティに適しています。Momentoにはセキュリティのベストプラクティスが組み込まれており、SOC Type IIレポートも取得しています。デフォルトでエンドツーエンドの暗号化と認証があります。多くのサーバフルなサービスは、認証なし、TLS(Transport Layer Security)なしがデフォルトです。ElastiCacheとDynamoDBを比較してみましょう。ElastiCacheでは、デフォルトのデプロイメントではパスワードもTLSもありません。しかし、DynamoDBではIAM認証が必要で、何も設定しなくてもデフォルトでTLSをサポートしています。
サーバーレスアプリケーション構築のベストプラクティス
サーバーレス化は簡単です!一度にすべてを導入する必要はなく、段階的にアプリケーションをサーバーレス・モデルに移行させることができます。そして、少しずつアプリケーションをサーバーレスモデルに移行することができます。
マネージド・サービスの活用
コンピュートからストレージ、データベース、キャッシュに至るまで、ワークフローのあらゆる部分で利用可能なサーバーレス・サービスが存在します。サーバーレスのリトマス試験紙を適用して、サービスが本当にサーバーレスなのか、単にサーバーレスを装っているだけではないのかを確認し、特定のワークフローのニーズに注意を払い、最適なソリューションを決定しましょう。
Infrastructure as Codeをさらに強化
マイクロサービス爆発は現実です!もしあなたがIACを持っていなければ、すぐに物事を見失うでしょう。時には、それがあなたのスピードを遅くしているように感じるかもしれませんが、実際にはスピードアップしているのです!
最初からオブサーバビリティに投資
IACと同様に、優れた観測可能性を持つことは、調査を加速し、ビジネスについてより多くを学ぶのに役立ちます。優れたメトリクスに加えて、問題をより速くデバッグするためにトレーシングを実装する必要があります。Momentoには、OTELをサポートするメトリクスが組み込まれているほか、自分のアカウントで表示できるCloudWatchダッシュボードもあります。
オブサーバビリティについてもっと学び、業界の専門家の話を聞くには、ダニエラ・ミャオのポッドキャスト「Momentoの共同創設者」をチェックしよう。
Momentoでサーバーレス・アプリケーションのメリットを最大化する
Momentoは真のサーバーレス・データ・プラットフォームです。従量課金制、ゼロサポートへのスケール、数百万TPSや数百万ユーザーを処理する能力、手作業でチューニングされたクライアントを備え、アプリケーションを本番稼動させる最速の方法であり、アプリが有名になったときに即座にスケールさせることができます。また、セキュリティのベストプラクティスまでカバーしているため、アプリはどのような規模でも高い可用性を持つだけでなく、顧客にとっても最も安全なエクスペリエンスとなります。