原作者:NGINX
元のリンク:マイクロサービスについて 1 つの記事で学ぶ
転載元:NGINX中国語公式サイト
NGINX の唯一の公式中国語コミュニティ (すべてnginx.org.cn )
マイクロサービスは、複数の小さなコンポーネントを使用して複雑なアプリケーションを構築する方法です。この記事では、その仕組み、長所と短所、およびそれがもたらす利点について説明します。
マイクロサービスとは何ですか?
マイクロサービスは、複数の小さなコンポーネントを使用して大規模で複雑なアプリケーションを構築するためのソフトウェア アーキテクチャ アプローチであり、それぞれが認証、通知、支払い処理などの機能を実行します。各マイクロサービスは、ソフトウェア開発プロジェクト内の独立したユニットであり、独自のコード ベース、インフラストラクチャ、データベースを備えています。マイクロサービスは連携して動作し、Web API またはメッセージ キューを介して通信し、受信イベントに応答します。
簡素化されたマイクロサービス アーキテクチャ
マイクロサービスに関するビデオ
-
マイクロサービスとは何ですか?
-
NGINX Plus は BuzzFeed のマイクロサービスへの移行を支援します
マイクロサービス アーキテクチャを使用する理由
従来のモノリシック アーキテクチャでは、アプリケーションのすべての機能が単一のコード ベースに実装されます。このアプローチにはいくつかの欠点があります。
-
アプリケーションが複雑になるにつれて、1 人の開発者がコード ベース全体を理解することが難しくなります。また、新しい開発者が始めるのは難しい場合もあります。解決策の 1 つは、異なる機能モジュールを異なる開発者またはチームに割り当てることです。これにより、開発者は独自のコードを制御しやすくなりますが、他のモジュールとの依存関係を追跡することが難しくなるという問題があります。したがって、1 つのモジュールでの変更は他のモジュールに影響を与える可能性があります。
-
機能を追加または拡張する必要がある場合は、アプリケーション全体をコンパイルしてテストし、変更によってモジュール間の互換性が損なわれないことを確認する必要があります。次に、アプリ全体を単一のバイナリとしてデプロイする必要があります。
マイクロサービス アーキテクチャでは、アプリケーション機能が複数の独立したマイクロサービス (サービス) に分割され、CI/CD の簡素化に役立ちます。マイクロサービスは開発が速く、理解と保守が簡単です。各サービスは、そのサービスのみに焦点を当てたチームによって独立して開発できます。チームは、マイクロサービスに最適なプログラミング言語、開発プラットフォーム、データベースを選択できます。マイクロサービスは、展開をさらに簡素化するためにコンテナとしてパッケージ化されることがよくあります。
マイクロサービスは疎結合です。つまり、他のマイクロサービスの内部に依存しません。 API を介して通信します。各マイクロサービスによって公開される API が下位互換性を維持している限り、あるマイクロサービスに対する変更を他のマイクロサービスで更新する必要はありません。
つまり、マイクロサービス アーキテクチャに変更を加えたい開発者は単一のマイクロサービス コンテナ内で変更を行うことができますが、モノリシック アーキテクチャで運用している開発者はスタック全体の書き換えに多くの時間を費やす必要がある可能性があります。
マイクロサービスユーザーグループ
変化するビジネス ニーズに迅速に対応するために、技術チームはマイクロサービス アーキテクチャに目を向けました。開発者がこの変化を主導しているのは主に、より多くの企業が開発者にアプリや配信ツールを選択する権限を与えているためです。 2020 年に実施された NGINX ユーザー調査では、回答者の半数以上がアプリケーションの一部またはすべてでマイクロサービスを使用していることが示されました。 2022 年には、モノリシック システムからの移行を進めている企業で働くNGINX ユーザーがさらに多くなり、コンテナ オーケストレーションが可能にするスケーラビリティの理由の 1 つとして、マイクロサービスを採用していると述べています。
マイクロサービス 101: メリットとデメリット
マイクロサービスは、従来のモノリシック アプリケーションをより柔軟で安全かつ効率的なアーキテクチャに変換し、時間、コスト、リソースを大幅に節約できます。以下は、アプリケーションのパフォーマンスと設計に影響を与える可能性があるマイクロサービスの長所と短所の概要です。
アドバンテージ:
-
開発者は自由にサービスを独自に開発および展開できるため、より迅速な意思決定が可能になります。
-
マイクロサービスベースのアプローチは、サイズが小さく自律性があるため、異なるチームが異なるサービスを同時に実装できるため、開発サイクルを短縮できます。多くの場合、チーム間の依存関係は軽減され、さらには解消されます。
-
マイクロサービスはコンテナに簡単にデプロイできるため、オーバーヘッドが削減され、さまざまな環境間での移植性が向上します。
-
マイクロサービスは CI/CD ツールと簡単に統合できるため、開発者は自動化された CI/CD パイプラインなどの最新の DevOps プラクティスを実装できます。
-
各サービスは通常、柔軟であるため、アプリケーションを簡単に拡張し、必要に応じて「サイズ変更」できます。
-
マイクロサービスは、構築、テスト、保守が簡単です。
-
サービスはビジネス機能を中心に編成および実装されます。
-
開発者は、特定のサービスに最適なテクノロジーを採用できます。
-
障害の分離が容易 – 1 つのマイクロサービスに障害が発生しても、他のマイクロサービスは引き続き実行できます。
欠点:
-
マイクロサービス アーキテクチャでは、開発者がフォールト トレランスを削減し、ネットワーク遅延を削減し、さまざまなプログラミング言語に対応し、複数のサービス間で負荷を分散する必要があるため、複雑さが増大します。
-
マイクロサービスのトラブルシューティングは、分散された性質のため、面倒で複雑になる可能性があります。
-
アプリケーション内のマイクロサービスの数が増えると、統合と管理の労力が増加します。
-
複数のデータベースを処理する
API はマイクロサービスですか?
要するに、いいえ。 API 自体はマイクロサービスではありません。しかし、API はアプリケーション内の通信メカニズムとしてマイクロサービス アーキテクチャに統合されることが増えています。マイクロサービスの機能は API エンドポイントのセットとして公開され、他のマイクロサービスは対応するエンドポイントに API 呼び出しを行うことでその機能を呼び出します。
マイクロサービスの実行にコンテナを使用する理由は何ですか?
コンテナ化プラットフォームを使用すると、開発者は、ユーザーへの中断を最小限に抑えながら、インフラストラクチャの制約に関係なく、最も効率的な方法でマイクロサービスを分離、拡張、デプロイできます。単一の負荷分散およびトラフィック ルーティング サーバー クラスターがアプリケーションの前にデプロイされるシナリオを考えてみましょう。 DNS で公開された静的パブリック IP アドレスを使用すると、クライアントはこの安定したエントリ ポイントにリクエストを送信でき、その後、適切なコンテナに転送されます。これらのコンテナが追加または削除された場合は、内部アドレスを更新するだけで、これらのリクエストが新しい IP アドレスに送信されます。これらのアドレスを DNS 経由で内部的に公開することもできます。
マイクロサービスのケース
マイクロサービスは、規制の厳しい業界におけるシームレスで安全な移行を加速します
高度に規制された業界で活動する多国籍企業は、進化する標準とベスト プラクティスへの準拠を確保するために、所定のスケジュールに従ってシステムをアップグレードする必要があります。同社のアプリケーション ポートフォリオは、毎日そのシステムを通じて数百万件のトランザクションを処理しています。同社は長年にわたり、オープンソースのアップグレードやサードパーティのセキュリティ プラグインの統合中も業界の要件に準拠し続けてきました。しかし、最近のアップグレードでは、プラグインの相互排他の問題により、いくつかの困難に直面しました。同社はデータセンターから AWS パブリック クラウドへの移行を検討していましたが、セキュリティ プラグインの問題により、マイクロサービス アーキテクチャへの移行が促されました。このソリューションは安価であり、企業がセキュリティ コンプライアンスを迅速に達成するのに役立ちます。
マイクロサービスの移行について詳しくは、このお客様の成功事例をお読みください。
ブログ投稿
成功事例と使用例
-
Tipico は NGINX Plus を利用してマイクロサービスに移行し、クラウドで信頼性の高いパフォーマンスを提供します
-
Canal+ は、マイクロサービスへの移行をサポートするために、NGINX オープンソースから NGINX Plus にアップグレードします
参考文献
リソースの推奨事項
ここをクリックすると、マイクロサービスの 2023 年 6 月のアジェンダ コンテンツとすべてのコースのリプレイを無料でご覧いただけます。
NGINX の唯一の公式中国語コミュニティ (すべて nginx.org.cn )
NGINX 関連のその他の技術情報、インタラクティブな Q&A、一連のコース、およびイベント リソース: オープンソース コミュニティ公式 Web サイト | WeChat 公式アカウント
「Qing Yu Nian 2」の海賊版リソースが npm にアップロードされたため、npmmirror は unpkg サービスを停止せざるを 得なくなりました。 周宏儀: すべての製品をオープンソースにすることを提案します 。ここで time.sleep(6) はどのような役割を果たしますか? ライナスは「ドッグフードを食べる」ことに最も積極的! 新しい iPad Pro は 12GB のメモリ チップを使用していますが、8GB のメモリを搭載していると主張しています。People 's Daily Online は、オフィス ソフトウェアのマトリョーシカ スタイルの充電についてレビューしています。「セット」を積極的に解決することによってのみ、 Flutter 3.22 と Dart 3.4 のリリース が可能になります。 Vue3 の新しい開発パラダイム、「ref/reactive」、「ref.value」不要 MySQL 8.4 LTS 中国語マニュアルリリース: データベース管理の新しい領域の習得に役立ちます Tongyi Qianwen GPT-4 レベルのメイン モデルの価格が値下げされました97%、1元と200万トークン