サーバーレス環境でマイクロサービスを設計するにはどうすればよいでしょうか?

サーバーレス環境でマイクロサービスを設計するにはどうすればよいでしょうか?

著者 |ラジャ・サラヴァナン

イーサン・サーバーレスが編集

これは、デジタル化と近代化のアップグレードのプロセスにある企業にとって、ますます人気の高いパラダイムになっています。国内の Alibaba Cloud、Tencent Cloud、Huawei Cloud、あるいは Amazon Web Services や Microsoft などの海外のクラウド コンピューティング ベンダーは、いずれもサーバーレス コンピューティングの分野に多額の投資を行っています。サーバーレスはマイクロアーキテクチャを提供するため、エンドカスタマーはサーバーサービスを展開、構成、管理する必要がなく、コードの実行に必要なサーバーサービスはすべてクラウドプラットフォームによって提供されるため、企業の柔軟性が向上し、運用経費とコストが削減されます。しかし、それに伴う問題は、サーバーレス アーキテクチャの高度な分散性により、開発者がアプリケーションの設計と開発方法を再考する必要があることです。この記事では、読者向けにいくつかのベスト プラクティス デザイン パターンを紹介します。

ご存知のとおり、サーバーレスはマイクロサービス ベースのアーキテクチャにとって自然な選択です。 AWS ベースのサーバーレスアプリケーションを例に挙げてみましょう。これらは、設計上ステートレスかつ一時的な AWS Lambda 関数に依存しています。 Lambda 関数は、他のサービスによって発行されたイベントに応答して小さなコードを実行するように設計されています。 Lambda は、メッセージキュー (Amazon Simple Queue Service)、API (Amazon API Gateway)、イベントストリーム (Amazon Kinesis) など、分散システムで一般的なパターンを実装するために使用できるさまざまなマネージドサービスとも統合されます。これにより、マイクロサービスの構築における問題点を最小限に抑えることができます。

ワークロードに適した設計パターンを選択する

1. ストラングラー パターンストラングラー パターンを使用すると、開発者はモノリシック コンポーネントを完全にシャットダウンしたり、一度に置き換えたりするのではなく、モノリシック コンポーネントをマイクロサービス (1 つ以上の Lambda 関数で実装可能) に徐々に置き換えることができます。

ストラングラーモード

このパターンでは、ストラングラー (API ゲートウェイなど) を使用して、レガシー システムへの受信リクエストを受け入れます。その後、レガシー アプリケーションまたは新しいサーバーレス アプリケーションのいずれかにルーティングされます。クライアントはストラングラーとのみ対話するため、バックエンド サービスが影響を受けていることに気づきません。レガシー システム全体がリファクタリングされ、すべてのトラフィックが新しいアプリケーションにルーティングされると、以前のシステムは安全に廃止できます。

2. アグリゲーターパターン

マイクロサービス ベースのアーキテクチャでは、クライアントは操作を実行するために複数のバックエンド サービスを呼び出す必要があることがよくあります。これらの呼び出しはネットワーク経由で行われるため、特に帯域幅が制限されている場合、クライアントとマイクロサービス間の頻繁な通信によってアプリケーションの遅延が発生する可能性があります。

アグリゲータパターン

Aggregator パターンは、単一の Lambda 関数を使用してすべてのクライアント要求を受け入れることにより、クライアントが実行する必要がある呼び出しの数を削減します。次に、Lambda 関数はリクエストを適切なマイクロサービスとサードパーティ API に転送し、結果を集約して単一の応答をクライアントに返します。

3. ステート マシン パターンアプリケーションを構築する場合、ビジネス ワークフローは非常に複雑になる傾向があります。 AWS には、複数のマイクロサービスが関与する複雑なワークフローを調整するために使用できる便利な「ステップ」機能があります。 「ステップ」機能には、定型コードを記述しなくても、状態管理、分岐、エラー処理、再試行機能が組み込まれています。

ステートマシンパターン

4. サガパターン

マイクロサービス ベースのアプリケーションでは、通常、各マイクロサービスには独自のデータベースがあり、そのデータベースには他のマイクロサービスのデータベースのデータと密接に関連するデータが含まれています。 Saga パターンは、相互接続されたマイクロサービス間の一連のローカル トランザクションを調整することで、データの一貫性を保証します。マイクロサービスがローカル トランザクションを実行すると、チェーン内の次のサービスがトリガーされ、トランザクションが実行されます。このプロセス中にトランザクションが失敗した場合、一連の補正トランザクションが開始され、以前のトランザクションで行われた変更がロールバックされます。

サガパターン

Saga パターンは、振り付けまたはオーケストレーションを通じて実装できます。振り付けモデルでは、各サービスが次のサービスの実行をトリガーするイベントを公開します。オーケストレーションでは、トランザクション チェーン全体が中央コーディネーターによって管理されます。

5. サーキットブレーカーモード

複数のサービスがリクエストの処理に関与する分散システムでは、サービス障害の処理方法を考えることが重要です。ネットワーク遅延などの一部の問題は断続的に発生するため、アップストリーム サービスを再呼び出しするだけで自動的に解決する場合があります。ただし、より深刻な問題や停止には積極的な介入が必要であり、解決に必要な時間コストは不確実です。このような状況で継続的に再試行すると、重要なリソースが消費され、同じリソース プールに依存する他のサービスが利用できなくなる可能性があり、壊滅的な連鎖障害につながる可能性があります。

サーキットブレーカーモード

サーキット ブレーカー パターンでは、キー値ストアを使用してリクエストの失敗とサーキット ブレーカーの状態を追跡し、Lambda 関数を使用して失敗回数に基づいて影響を受けるサービスへの後続の呼び出しが必要かどうかを判断することで、システムにフォールト トレランスを組み込むことができます。

要約する

クラウド コンピューティングが静かに私たちの生活に影響を与え、変化をもたらしていることは間違いありません。ビジネスでも科学研究でも、サーバーレス コンピューティングはクラウド コンピューティングの主流の開発方向の 1 つになりつつあります。開発者にとって、サーバーレスのデプロイメントは比較的シンプルですが、前提として、ベストプラクティスのパターンから学び、設計して不要なリソースの無駄を減らす必要があります。

元のリンク:

https://medium.com/@raja.sk.saravanan/architect-your-microservices-in-serverless-with-right-design-pattern-60ebe674968

<<:  マイクロコンテナは大型コンテナよりも優れていますか?

>>:  VMware と IBM が連携し、規制産業の顧客向けにハイブリッド クラウド環境を最新化する新しいアプローチを提供

推薦する

パブリック クラウドを持たない IT サービス プロバイダーは、ハイパーコンバージェンスをうまく実行できません。 ?

数年前、徳雲クラブは次のような有名な一文を生み出しました。「将軍になりたくない医者は料理が上手ではな...

hostdare: 年間 20 ドルから、25% オフ、ロサンゼルス QN データ センター VPS、Windows オペレーティング システムをサポート

hostdare の VPS はすべて、米国西海岸のロサンゼルスにある QN データセンターでホスト...

ViyaとLi Jiaqiは人気がありますが、ライブストリーミングeコマースはそれほど良くありません。

ライブストリーミング電子商取引は、商品の販売とアイドル化をうまく組み合わせています。 10月20日夜...

Hosthatch Japan VPSレビュー、China UnicomとChina Mobileのユーザーも利用可能!

Hosthatch は日本の VPS サービスを提供しています。サーバーは日本の東京にあります。ハー...

Amazon Web Services と Riot Games が協力して e スポーツ体験を刷新

2022年8月11日、ライアットゲームズは、アマゾン ウェブ サービスと連携して、ライアットゲームズ...

w3space: 著作権フリーの VPS/月額 4.97 ドル/ルーマニアの VPS/ハンガリーの VPS

w3space はバングラデシュのホスティング プロバイダーです。2009 年から運営されています。...

ZXPlay - 7ドル/2gメモリ/800gハードディスク/1Gポート/無制限トラフィック/ドイツ

ZXPlay【 VAT Number : 206 5572 17】からすごいものが発売されました。今...

フォーラムを使用してロングテールキーワードをランク​​付けする方法

業界のキーワードをランク​​付けするためにフォーラムを運営し始めるウェブマスターが増えていますが、多...

分散ストレージ構築のための2つの展開モード(分離型またはハイパーコンバージド型)

データセンターの内部システムに求められる中核となる要件は「安定性と信頼性」です。まず、システムは運用...

VersioはEUドメイン名の登録を0.99ユーロで提供

Versio が逃げることはなさそうなので、あまり心配しないでください。この割引には登録数に制限はあ...

ドメイン9ヶ月2.99ドル登録com割引コード

domain.comがEIGに買収された後、初めて新しいプラットフォーム管理システムに変更されました...

Rancher の Kubernetes が再生可能なリソースを「提供」する方法をご覧ください

[51CTO.comよりオリジナル記事] インターネットの発展により、エネルギー企業にも変革の波が到...

ウェブサイトの最適化: あなたのウェブサイトはアクセスに適していますか?

一部の非専門的なインターネット企業が中国の中小企業を騙したようで、私は非常に気の毒に思います。私の意...

複合マーケティングにより、SKYCC の売上は引き続き急上昇中でしょうか?

最近、私はSKYCC複合マーケティングソフトウェアのWeiboマーケティングに注目しました。このマー...