サヌビスメッシュずは䜕ですか?

こんにちは コヌス開始前倜に 「゜フトりェアアヌキテクト」 もう䞀぀圹立぀翻蚳を甚意したした。

サヌビスメッシュずは䜕ですか?

サヌビス メッシュは、アプリケヌション プログラミング むンタヌフェむス (API) 間の倧量のネットワヌクベヌスのプロセス間通信を凊理するために必芁な、構成可胜な䜎遅延むンフラストラクチャ局です。 Service Mesh は、コンテナ化された、倚くの堎合䞀時的なアプリケヌション むンフラストラクチャ サヌビス間の高速で信頌性の高い安党な通信を可胜にしたす。 Service Mesh は、サヌビス怜出、負荷分散、暗号化、透過性、トレヌサビリティ、認蚌ず認可、自動シャットダりン パタヌンのサポヌトなどの機胜を提䟛したす (遮断噚).
サヌビス メッシュは通垞、各サヌビス むンスタンスにプロキシ むンスタンスを提䟛するこずによっお実装されたす。 サむドカヌ。 サむドカヌ サヌビス間の通信を凊理し、セキュリティ問題を監芖および解決したす。぀たり、個々のサヌビスから抜象化できるすべおのものです。 このようにしお、開発者はサヌビスでアプリケヌション コヌドを䜜成、保守、提䟛でき、システム管理者はサヌビス メッシュを操䜜しおアプリケヌションを実行できたす。

Google、IBM、Lyft の Istio は、珟圚最も有名なサヌビス メッシュ アヌキテクチャです。 たた、もずもず Google で開発された Kubernetes は、珟圚 Istio でサポヌトされおいる唯䞀のコンテナ オヌケストレヌション フレヌムワヌクです。 ベンダヌは、商甚サポヌトされる Istio バヌゞョンを䜜成しようずしおいたす。 圌らがオヌプン゜ヌス プロゞェクトにどのような新しいものをもたらすこずができるかを芋るのは興味深いでしょう。

ただし、他のサヌビス メッシュ実装が開発されおいるため、Istio が唯䞀の遞択肢ではありたせん。 パタヌン sidecar proxy Buoyant、HashiCorp、Solo.io などのプロゞェクトから刀断できるように、最も人気のある実装です。 代替アヌキテクチャもありたす。Netflix テクノロゞヌ ツヌルキットは、Ribbon、Hysterix、Eureka、Archaius ラむブラリ、および Azure Service Fabric などのプラットフォヌムを通じお Service Mesh 機胜を実装するアプロヌチの XNUMX ぀です。

Service Mesh には、サヌビス コンポヌネントず機胜に関する独自の甚語もありたす。

  • コンテナ オヌケストレヌション フレヌムワヌク。 アプリケヌション むンフラストラクチャに远加されるコンテナが増えるに぀れお、コンテナを監芖および管理するための別のツヌル、぀たりコンテナ オヌケストレヌション フレヌムワヌクが必芁になりたす。 Kubernetes はこのニッチ垂堎をしっかりず占有しおおり、䞻な競合他瀟である Docker Swarm や Mesosphere DC/OS でさえ代替手段ずしお Kubernetes ずの統合を提䟛しおいたす。
  • サヌビスずむンスタンス (Kubernetes ポッド)。 むンスタンスは、マむクロサヌビスの単䞀の実行コピヌです。 XNUMX ぀のむンスタンスが XNUMX ぀のコンテナである堎合もありたす。 Kubernetes では、むンスタンスはポッドず呌ばれる独立したコンテナの小さなグルヌプで構成されたす。 クラむアントがむンスタンスやポッドに盎接アクセスするこずはほずんどなく、より倚くの堎合、同䞀でスケヌラブルでフォヌルトトレラントなむンスタンスやポッド (レプリカ) のセットであるサヌビスにアクセスしたす。
  • サむドカヌプロキシ。 サむドカヌ プロキシは、単䞀のむンスタンスたたはポッドで動䜜したす。 サむドカヌ プロキシのポむントは、連携するコンテナからのトラフィックず戻りのトラフィックをルヌティングたたはプロキシするこずです。 Sidecar は他の Sidecar Proxies ず察話し、オヌケストレヌション フレヌムワヌクによっお管理されたす。 倚くのサヌビス メッシュ実装では、サむドカヌ プロキシを䜿甚しお、むンスタンスたたはポッドに出入りするすべおのトラフィックをむンタヌセプトしお管理したす。
  • サヌビスディスカバリ。 むンスタンスが別のサヌビスず通信する必芁がある堎合、他のサヌビスの正垞で利甚可胜なむンスタンスを芋぀ける (怜出する) 必芁がありたす。 通垞、むンスタンスは DNS ルックアップを実行したす。 コンテナ オヌケストレヌション フレヌムワヌクは、リク゚ストを受信する準備ができおいるむンスタンスのリストを維持し、DNS ク゚リ甚のむンタヌフェむスを提䟛したす。
  • 負荷分散。 ほずんどのコンテナ オヌケストレヌション フレヌムワヌクは、レむダヌ 4 (トランスポヌト) で負荷分散を提䟛したす。 サヌビス メッシュは、レむダヌ 7 (アプリケヌション レベル) でより耇雑な負荷分散を実装し、アルゎリズムが豊富で、トラフィックの管理がより効果的です。 API を䜿甚しお負荷分散蚭定を倉曎できるため、Blue-Green たたは Canary デプロむメントを調敎できたす。
  • КОфрПваМОе。 Service Mesh はリク゚ストずレスポンスを暗号化および埩号化できるため、サヌビスからこの負担を取り陀くこずができたす。 Service Mesh は、既存の氞続接続に優先順䜍を付けたり再利甚したりするこずでパフォヌマンスを向䞊させ、新しい接続を䜜成するための高䟡な蚈算の必芁性を軜枛するこずもできたす。 トラフィック暗号化の最も䞀般的な実装は次のずおりです。 盞互TLS (mTLS)、公開キヌ基盀 (PKI) が、サむドカヌ プロキシで䜿甚する蚌明曞ずキヌを生成および配垃したす。
  • 認蚌ず認可。 サヌビス メッシュは、アプリケヌションの倖郚たたは内郚から行われたリク゚ストを承認および認蚌し、怜蚌されたリク゚ストのみをむンスタンスに送信したす。
  • 自動シャットダりンパタヌンのサポヌト。 サヌビスメッシュのサポヌト 自動シャットダりンパタヌンこれにより、異垞なむンスタンスが隔離され、必芁に応じおそれらのむンスタンスが埐々に正垞なむンスタンスのプヌルに戻されたす。

むンスタンス間のネットワヌク トラフィックを管理する Service Mesh アプリケヌションの郚分は、 デヌタプレヌン。 動䜜を制埡する構成を䜜成しお展開する デヌタプレヌン、別のメ゜ッドを䜿甚しお実行されたす。 コントロヌルプレヌン. コントロヌルプレヌン 通垞、アプリケヌションを制埡するための API、CLI、たたは GUI が含たれおいるか、それらに接続するように蚭蚈されおいたす。

サヌビスメッシュずは䜕ですか?
サヌビス メッシュのコントロヌル プレヌンは、サむドカヌ プロキシずデヌタ プレヌンの間で構成を分散したす。

サヌビス メッシュ アヌキテクチャは、コンテナヌずマむクロサヌビスを䜿甚しお耇雑な運甚䞊の問題を解決するためによく䜿甚されたす。 この分野のパむオニア マむクロサヌビス Lyft、Netflix、Twitter などの䌁業は、䞖界䞭の䜕癟䞇ものナヌザヌに安定したサヌビスを提䟛しおいたす。 (ここでは、Netflix が盎面したアヌキテクチャ䞊の課題の䞀郚を詳しく芋おいきたす。。 それほど芁求の厳しいアプリケヌションの堎合は、より単玔なアヌキテクチャで十分である可胜性がありたす。

Service Mesh アヌキテクチャが、アプリケヌションの運甚ず配信に関するすべおの問題を解決できるずは考えられたせん。 建築家や開発者は膚倧なツヌルを持っおいたすが、その䞭でハンマヌは XNUMX ぀だけです。倚くのタスクの䞭で解決しなければならないのは、釘を打぀ずいう XNUMX ぀だけです。 NGINX のマむクロサヌビス リファレンス アヌキテクチャたずえば、マむクロサヌビスを䜿甚しお問題を解決するための䞀連のアプロヌチを提䟛するいく぀かの異なるモデルが含たれおいたす。

アヌキテクチャ アプロヌチずしおの NGINX、コンテナ、Kubernetes、マむクロサヌビスなど、サヌビス メッシュ アヌキテクチャに統合される芁玠は、サヌビス メッシュ以倖の実装でも同様に生産性を高めるこずができたす。 たずえば、Istio は完党なサヌビス メッシュ アヌキテクチャずしお蚭蚈されおいたすが、そのモゞュヌル性により、開発者は必芁なテクノロゞ コンポヌネントのみを遞択しお実装できたす。 これを念頭に眮くず、アプリケヌションにサヌビス メッシュの抂念を完党に実装できるかどうかわからない堎合でも、サヌビス メッシュの抂念を明確に理解するこずが重芁です。

モゞュラヌモノリスず DDD

出所 habr.com

コメントを远加したす