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

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

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

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

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

推薦する

クールなサイト評価: ダークなウェブサイトデザイン 22 選

ウェブサイトのデザインでは明るい色が主流ですが、ミステリアスな雰囲気を際立たせ、控えめな高級感を醸し...

SEOがウェブサイトを分析する方法

SEO を行うには、競合他社の Web サイト (つまり、検索で上位にランクされているサイト) を分...

IBMはまたもや戦いに敗れた。クラウド コンピューティングは Big Blue に悪影響を及ぼしていますか?

最近、IBM中国研究所(IBM CRL)が全面閉鎖されたとネット上で報じられた。この噂に応えて、IB...

インターネット時代において、企業はどのようにして従来のマーケティングの欠点を解決し、効率的な顧客獲得を実現できるのでしょうか?

ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービス従来型のビジネスを展開す...

vpsace-2g メモリ/2g Vswap/100g ハードディスク/2T トラフィック/月額 7 USD

vpsace のヘンは、Intel Xeon E3-1240v2 CPU、32G メモリ、4×1 T...

SE0技術をベースにした中小規模の旅行会社向けウェブサイトコンテンツ構築スキル

近年、中国の観光電子商取引は急速に発展しています。iResearch Consultingによると、...

Baidu最適化ガイドに基づいて自分のウェブサイトを分析する

多くの初心者は、「SEO の最適化はどのように行うべきですか?」と尋ねます。実際、この質問に対する ...

タオバオモールのTmallへの名称変更はSEOに良い影響と悪い影響の両方をもたらす

昨日、タオバオモールは名前をTmall.comに変更しました。これは3〜4億人の友達の心を傷つけまし...

大規模 SEO と小規模 SEO の違いは何ですか?

SEO の場合、テクニックは似ていますか? 大規模、中規模、小規模を問わず、すべての Web サイト...

クラウドコンピューティングには大規模なもの以上のものがあります。マイクロクラウドがAWS、Azure、Google Cloudに取って代わっています。

[[275983]]クラウドは大きくないといけない気がしますよね?クラウドの最も優れた機能が、クリッ...

ウェブサイトの最適化は内側から行う必要がある

ウェブサイトを構築し最適化する際に注意すべきことは、実はありふれた問題ですが、それでも見落とされがち...

モカの李国星氏:優れた製品を活用して「人材」を管理し、企業がより大きな価値を生み出せるようにする

度重なる疫病の流行やマクロ経済成長の鈍化など、不確実性の高い内外環境の影響を受け、コスト削減と効率向...

hostodo-$16/年/1g メモリ/90g ハードドライブ/3T トラフィック/ダラス

hostodo の所有者は、ダラスのデータセンターの VPS を宣伝するためにユーザーにメールを送信...

パンデミック中のパブリッククラウドの成功事例4つ

企業が従業員や顧客に新たな体験を提供するために活用しているパブリック クラウドほど、新型コロナウイル...

Vultr VPS: トップアップで 100 ドル無料、Windows、15 のデータ センター、時間単位での支払い

Vultr は長い間、大きなプロモーションを行っていませんでした。2018 年 7 月 10 日、V...