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

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

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

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

これは、デジタル化と近代化のアップグレードのプロセスにある企業にとって、ますます人気の高いパラダイムになっています。国内の 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 が連携し、規制産業の顧客向けにハイブリッド クラウド環境を最新化する新しいアプローチを提供

推薦する

ハイブリッドクラウドは世界中で広く使用されていますが、中国ではまだ初期段階にあります。

最近では、ハイブリッドクラウドやマルチクラウド環境が主流になっています。では、アプリケーション実装の...

ホストペア - $139/253IP/E3/16G メモリ/4x500G ハードディスク/30T トラフィック/G ポート/ダラス

HostPair LLC は 2009 年に設立されました。主な事業は、ドメイン名登録、仮想ホスティ...

オンライン美術品取引チャネルの急速な拡大は、偽造品の多さから高いリスクがあると非難されている。

広州地方骨董市場新しい取引プラットフォームは諸刃の剣です。便利ではありますが、「山の向こうで牛を買う...

360検索エンジン最適化の操作方法

360度検索エンジン最適化の問題は、2010年から2012年6月までの百度のように、まだブルーオーシ...

相互リンクに関するよくある誤解と、ウェブマスターが相互リンクを嫌がる理由の分析

最近、相互リンクが多くのウェブマスターの注目を集めていますが、実際にリンクを交換しているウェブマスタ...

事例分析:WeChatエコシステムのマーケティング価値!

今年8月の人気記事「6年、公会計が運命を変えた」は、春秋文体で公会計の発展に壮大な雰囲気を与えた。実...

仮想プライベートクラウドの長所と短所

仮想プライベート クラウド (VPC) は少なくとも 10 年ほど前から存在していますが、使用する前...

ウェブサイト分析ツールをより有効に活用するための 10 のヒント (パート 2)

ほぼすべての SEO 担当者は UEO の概念を知っています。そうです、それはユーザー エクスペリエ...

Baiduのホットワードを使ってオリジナル作品を簡単に作る方法

偽オリジナリティに対する私の嫌悪感は長年続いている。自分のウェブサイトを持つ前は、検索エンジンで検索...

ウェブマスター自身だけが独立したブログの発展に影響を与えることができる

独立系ブログが今後も生き残れるかどうかという話題を、私は一度や二度は耳にしたことがあります。QQグル...

新ブランドスナックのチャネルマーケティングのルール!

スナック菓子は昔から親しまれてきました。最近は、味も濃厚でパッケージも美しく、一流の支持を得ているス...

アリババクラウド、大規模障害に対応:運用・保守エラーを大幅に改善

6月28日朝のニュース:今朝早く、アリババクラウドの公式Weiboアカウントが、昨日発生した大規模な...

映画ウェブサイトの最適化: ドメイン名、スペース、プログラムの選択

みなさん、こんにちは。前回、新しいウェブサイトのランキングを目撃した件についてお話ししましたが、今そ...

ウェブマスターネットワークニュース:北京のインターネットユーザーが海外のウェブサイトで噂を広め、国を中傷したとして拘束される

1. 北京のネットユーザーが海外のウェブサイト「博訊」で噂を流布し、国家の名誉を傷つけたとして拘束さ...

「共通アプリケーション」は「アンカーテキスト」に取って代わるのでしょうか?

この間、ウェブマスター界隈では「共通参照」が「アンカーテキスト」に取って代わるという話が出てきており...