サヌビス メッシュ: すべおの゜フトりェア ゚ンゞニアが最も泚目されおいるテクノロゞに぀いお知っおおくべきこず

ノヌト。 翻蚳。: サヌビス メッシュは、ロシア語ぞの安定した翻蚳がただ確立されおいない珟象です (2 幎以䞊前、私たちは「サヌビス甚メッシュ」ずいうオプションを提案したしたが、少し埌に䞀郚の同僚が「サヌビスふるい」ずいう組み合わせを積極的に掚進し始めたした)。 このテクノロゞヌに関する絶え間ない話題により、マヌケティングず技術的な芁玠が密接に絡み合いすぎる状況が生じおいたす。 元の甚語の䜜成者の XNUMX 人が䜜成したこの玠晎らしい資料は、゚ンゞニアやその他の人々に明確さを提䟛するこずを目的ずしおいたす。

サヌビス メッシュ: すべおの゜フトりェア ゚ンゞニアが最も泚目されおいるテクノロゞに぀いお知っおおくべきこず
コミックから セバスティアン・カセレス

導入

あなたがバック゚ンド システム分野で働いおいる゜フトりェア ゚ンゞニアであれば、おそらくここ数幎で「サヌビス メッシュ」ずいう甚語がすでに心にしっかりず根付いおいるでしょう。 奇劙な偶然のおかげで、このフレヌズはたすたす業界を垭巻しおおり、これに関連する誇倧宣䌝やプロモヌションのオファヌは坂を䞋る雪玉のように成長しおおり、勢いが衰える気配はありたせん。

サヌビス メッシュは、クラりド ネむティブ ゚コシステムの曖昧で偏った領域で生たれたした。 残念ながら、このこずは、この問題をめぐる論争の倚くが、「䜎カロリヌの話」から、専門甚語を䜿うずたったくのナンセンスにたで及ぶこずを意味したす。 しかし、すべおのノむズを排陀するず、サヌビス メッシュには非垞に珟実的で定矩された重芁な機胜があるこずがわかりたす。

この投皿では、サヌビス メッシュに察する正盎で詳现な、゚ンゞニアに焊点を圓おたガむドを提䟛するこずを目指したす。 私は単に質問に答えるだけではありたせん。 「それは䜕ですか」、 - だけでなく "䜕のために"ず "なぜ今なのか"。 最埌に、なぜこの特定のテクノロゞヌが (私の意芋では) これほど狂った隒動を匕き起こしたのかを抂説したいず思いたすが、それ自䜓が興味深い話です。

どうですか

こんにちは、みんな 私の名前は りィリアム・モヌガン。 私もクリ゚むタヌの䞀人です リンカヌド — たさに最初のサヌビス メッシュ プロゞェクトであり、この甚語の出珟の原因ずなったプロゞェクト サヌビスメッシュ そのずおりですごめんなさい。 (翻蚳に泚意しおください。ずころで、2,5幎半以䞊前、この甚語が登堎した黎明期に、私たちはすでに同じ著者の初期の資料「」を翻蚳したした。サヌビス メッシュずは䜕ですか? [マむクロサヌビスを備えたクラりド アプリケヌションに] サヌビス メッシュが必芁な理由は䜕ですか?。「 私も頭です 浮力 Linkerd や Linkerd などのクヌルなサヌビス メッシュを䜜成するスタヌトアップです。 ダむビング.

おそらく、私がこの問題に関しお非垞に偏った䞻芳的な意芋を持っおいるこずはご想像いただけるず思いたす。 ただし、偏芋を最小限に抑えるように努めたす (XNUMX ぀のセクションを陀いお: 「なぜサヌビス メッシュに぀いおこれほど話題になっおいるのでしょうか?」、-その䞭で私はただ私の先入芳を共有したす。 たた、このガむドをできるだけ客芳的なものにするために最善を尜くしたす。 具䜓的な䟋に぀いおは、䞻に Linkerd の経隓に䟝存し、他のサヌビス メッシュ タむプの実装で私が知っおいる盞違点 (存圚する堎合) を指摘したす。

さお、グッズの話に移りたしょう。

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

誇倧宣䌝にもかかわらず、サヌビス メッシュの構造は非垞に単玔です。 これは、サヌビスの「隣」に配眮されたナヌザヌ空間プロキシの束 (「次」ずは䜕かに぀いおは埌で少し説明したす) に、䞀連の制埡プロセスを加えたものです。 プロキシは総称しお呌ばれたす デヌタプレヌン、制埡プロセスが呌び出されたす。 コントロヌルプレヌン。 デヌタ プレヌンはサヌビス間の呌び出しをむンタヌセプトし、サヌビスに察しお「あらゆる皮類のさたざたなこず」を実行したす。 したがっお、コントロヌル プレヌンはプロキシの動䜜を調敎し、アクセスを提䟛したす。 オペレヌタを API に接続し、ネットワヌク党䜓を操䜜および枬定できるようにしたす。

サヌビス メッシュ: すべおの゜フトりェア ゚ンゞニアが最も泚目されおいるテクノロゞに぀いお知っおおくべきこず

これはどのようなプロキシですか? これはレむダヌ 7 察応の TCP プロキシです (぀たり、OSI モデルのレむダヌ 7 を「考慮に入れる」) HAProxy や NGINX など。 奜みに応じおプロキシを遞択できたす。 Linkerd は、単に名前が付けられた Rust プロキシを䜿甚したす。 リンカヌドプロキシ。 サヌビスメッシュ専甚にたずめたした。 他のメッシュは他のプロキシを優先したす (Envoy が䞀般的な遞択です)。 ただし、プロキシの遞択は単なる実装の問題です。

これらのプロキシ サヌバヌは䜕をするのでしょうか? 明らかに、サヌビスずの間の呌び出しをプロキシしたす (厳密に蚀えば、プロキシおよびリバヌス プロキシずしお機胜し、受信呌び出しず送信呌び出しの䞡方を凊理したす)。 そしお、通話に焊点を圓おた機胜セットを実装しおいたす。 ЌежЎу サヌビス。 サヌビス間のトラフィックに重点を眮いおいる点が、サヌビス メッシュ プロキシず、たずえば API ゲヌトりェむやむングレス プロキシ (埌者は倖郚からクラスタヌに入る呌び出しに重点を眮いおいたす) ずの違いです。 (ノヌト。 翻蚳。: Kubernetes 甚の既存の Ingress コントロヌラヌの比范に぀いおは、その倚くがすでに述べた Envoy を䜿甚しおいるを参照しおください。 この蚘事.)

そこで、デヌタプレヌンを敎理したした。 コントロヌル プレヌンはより単玔です。これは、サヌビス ディスカバリ、TLS 蚌明曞の発行、メトリクスの集玄など、デヌタ プレヌンが調敎された方法で動䜜するために必芁なすべおの仕組みを提䟛する䞀連のコンポヌネントです。デヌタ プレヌンはコントロヌル プレヌンに次の情報を通知したす。その動䜜。 さらに、コントロヌル プレヌンは、デヌタ プレヌン党䜓の動䜜を倉曎および監芖できる API を提䟛したす。

以䞋は、Linkerd のコントロヌル プレヌンずデヌタ プレヌンの図です。 ご芧のずおり、コントロヌル プレヌンには、プロキシ サヌバヌからメトリクスを収集する Prometheus むンスタンスや、次のような他のコンポヌネントを含む、いく぀かの異なるコンポヌネントが含たれおいたす。 destination (サヌビスディスカバリ)、 identity (認蚌局、CA) および public-api (Web および CLI の゚ンドポむント)。 察照的に、デヌタ プレヌンは、アプリケヌション むンスタンスの隣にある単玔なリンカヌド プロキシです。 これは単なる論理図です。 実際の展開では、各コントロヌル プレヌン コンポヌネントの XNUMX ぀のレプリカず、デヌタ プレヌン内に数癟たたは数千のプロキシが存圚する堎合がありたす。

(この図の青い四角圢は、Kubernetes ポッドの境界を衚しおいたす。linkerd-proxy を備えたコンテナヌがアプリケヌション コンテナヌず同じポッド内にあるこずがわかりたす。このスキヌムは次のように呌ばれたす。 サむドカヌコンテナ.)

サヌビス メッシュ: すべおの゜フトりェア ゚ンゞニアが最も泚目されおいるテクノロゞに぀いお知っおおくべきこず

サヌビス メッシュ アヌキテクチャには、いく぀かの重芁な意味がありたす。 たず、プロキシのタスクはサヌビス間の呌び出しをむンタヌセプトするこずであるため、サヌビス メッシュは、アプリケヌションが特定のサヌビス セット甚に䜜成された堎合にのみ意味を持ちたす。 メッシュ 1こずができたす モノリスで䜿甚できたすが、これは単䞀のプロキシのために明らかに冗長であり、その機胜は需芁がありそうにありたせん。

もう XNUMX ぀の重芁な結果は、サヌビス メッシュが次のこずを必芁ずするこずです。 巚倧な プロキシの数。 実際、Linkerd は、すべおのサヌビスのすべおのむンスタンスに linkerd-proxy を接続したす (他の実装では、すべおのノヌド/ホスト/仮想マシンにプロキシを远加したす。ずにかくそれは倧量です)。 このようにプロキシを積極的に䜿甚するず、それ自䜓でさらに倚くの耇雑な問題が発生したす。

  1. デヌタ プレヌン内のプロキシは次のずおりである必芁がありたす。 速いこれは、呌び出しごずにプロキシぞの呌び出しが XNUMX ぀ありたす。XNUMX ぀はクラむアント偎で、もう XNUMX ぀はサヌバヌ偎です。
  2. プロキシも次のようにする必芁がありたす 小さな О 軜量。 それぞれがメモリず CPU リ゜ヌスを消費し、この消費量はアプリケヌションに応じお盎線的に増加したす。
  3. 倚数のプロキシを展開および曎新するメカニズムが必芁になりたす。 手動で行うこずはできたせん。

䞀般に、サヌビス メッシュは (少なくずも俯瞰的には) 次のようになりたす。内郚のサヌビス間トラフィックで「䜕かを行う」䞀連のナヌザヌ空間プロキシをデプロむし、コントロヌル プレヌンを䜿甚しおそれらを監芖および管理したす。

今床は「なぜ?」ずいう質問をしおみたしょう。

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

サヌビス メッシュのアむデアに初めお出䌚った人は、少し䞍安を感じるのも無理はありたせん。 サヌビス メッシュ蚭蚈は、アプリケヌションの遅延を増加させるだけでなく、 消費する リ゜ヌスず 远加したす むンフラストラクチャ内の倚数の新しいメカニズム。 たずサヌビス メッシュをセットアップするず、突然、数癟 (数千ではないにしおも) のプロキシにサヌビスを提䟛する必芁があるこずに気づきたす。 問題は、誰が自発的にこれを行うのかずいうこずです。

この質問に察する答えは XNUMX ぀の郚分に分かれおいたす。 たず、゚コシステム内で起こっおいるいく぀かの倉化のおかげで、これらのプロキシの導入に関連するトランザクション コストを倧幅に削枛できたす (これに぀いおは埌で詳しく説明したす)。

第二に、このようなデバむスは、システムに远加のロゞックを導入するための優れた方法です。 サヌビス メッシュでは倚くの新しい機胜を远加できるだけでなく、゚コシステムに干枉するこずなく远加できるためでもありたす。 実際、サヌビス メッシュ モデル党䜓は次の前提に基づいおいたす。マルチサヌビス システムでは、䜕があっおも 䜜る 個別のサヌビス、トラフィック それらの間 機胜を远加するのに最適なポむントです。

たずえば、Linkerd (ほずんどのメッシュず同様) では、機胜は䞻に HTTP/2 や gRPC* などの HTTP 呌び出しに焊点を圓おおいたす。 この機胜は非垞に豊富で、次の XNUMX ぀のクラスに分類できたす。

  1. に関連する機胜 信頌性。 繰り返されるリク゚スト、タむムアりト、カナリア アプロヌチ (トラフィック分割/リダむレクト) など。
  2. に関連する機胜 モニタリング。 各サヌビスたたは個別の指瀺の成功率、遅延、リク゚スト量の集蚈。 サヌビスのトポロゞヌマップの構築など
  3. に関連する機胜 安党。 盞互TLS、アクセス制埡など

* Linkerd の芳点から芋るず、gRPC は HTTP/2 ず実質的に倉わりたせん。ペむロヌドで protobuf を䜿甚するだけです。 開発者の芳点から芋るず、圓然ながら、この XNUMX ぀は異なりたす。

これらのメカニズムの倚くはリク゚スト レベルで動䜜したす (したがっお、「L7 プロキシ」ずなりたす)。 たずえば、Foo サヌビスが Bar サヌビスに察しお HTTP 呌び出しを行う堎合、Foo 偎のリンカヌド プロキシはむンテリゞェントな負荷分散を実行し、芳枬されたレむテンシに基づいお呌び出しを Foo から Bar むンスタンスにルヌティングできたす。 必芁に応じお (そしお冪等である堎合には) リク゚ストを繰り返すこずができたす。 応答コヌドやタむムアりトなどを蚘録できたす。 同様に、Bar 偎の linkerd-proxy は、リク゚ストが蚱可されおいない堎合、たたはリク゚ストの制限を超えおいる堎合にリク゚ストを拒吊できたす。 その偎で遅延が蚘録される堎合などがありたす。

プロキシは接続レベルでも「䜕かを行う」こずができたす。 たずえば、Foo 偎の linkerd-proxy は TLS 接続を開始し、Bar 偎の linkerd-proxy はそれを終了でき、双方が互いの TLS 蚌明曞* を怜蚌できたす。 これにより、サヌビス間の暗号化だけでなく、サヌビスを識別するための暗号的に安党な方法も提䟛されたす。Foo ず Bar は、自分たちが誰であるかを「蚌明」できたす。

※「友人の盞互」ずは、クラむアント蚌明曞も怜蚌されおいる盞互TLSこずを意味したす。 「クラシック」TLS では、たずえばブラりザずサヌバヌの間では、通垞、片偎 (サヌバヌ) の蚌明曞のみが怜蚌されたす。

リク゚スト レベルで動䜜するか接続レベルで動䜜するかに関係なく、すべおのサヌビス メッシュ機胜が機胜するこずを匷調するこずが重芁です。 運甚可胜 キャラクタヌ。 Linkerd は、JSON フラグメントにフィヌルドを远加したり、protobuf を倉曎したりするなど、ペむロヌドのセマンティクスを倉換できたせん。 この重芁な機胜に぀いおは、埌で ESB ずミドルりェアに぀いお説明するずきに説明したす。

これは、サヌビス メッシュが提䟛する䞀連の機胜です。 なぜそれらをアプリケヌションに盎接実装しないのか?ずいう疑問が生じたす。 そもそも、なぜわざわざプロキシを䜿甚するのでしょうか?

サヌビス メッシュが良いアむデアである理由

サヌビス メッシュの機胜は魅力的ですが、その䞭栞ずなる䟡倀は実際にはその機胜にありたせん。 結局のずころ私たちは できる それらをアプリケヌションに盎接実装したす (これがサヌビス メッシュの起源であるこずが埌でわかりたす)。 䞀蚀でたずめるず、サヌビス メッシュの倀は次のようになりたす。 最新のサヌバヌ ゜フトりェアを実行するために重芁な機胜をスタック党䜓にわたっお䞀貫した方法で、アプリケヌション コヌドから独立しお提䟛したす。.

この提案を分析しおみたしょう。

«最新のサヌバヌ ゜フトりェアを実行するために重芁な機胜」 パブリック むンタヌネットに接続され、倖郚からのリク゚ストを受け入れお短時間内に応答するトランザクション サヌバヌ アプリケヌション (Web アプリケヌション、API サヌバヌ、その他の最新アプリケヌションの倧郚分など) を䜜成しおいる堎合- そしお、それを盞互に同期しお察話する䞀連のサヌビスずしお実装する堎合、およびこの゜フトりェアを垞にアップグレヌドしお新機胜を远加する堎合、および倉曎プロセス䞭にこのシステムを正垞に動䜜する状態に維持する必芁がある堎合には、この䞭でおめでずうございたす。最新のサヌバヌ ゜フトりェアを䜜成されおいたす。 そしお、䞊に挙げたこれらの優れた機胜はすべお、実際にあなたにずっお重芁であるこずがわかりたす。 アプリケヌションは信頌性があり、安党である必芁があり、アプリケヌションが䜕を行っおいるかを芳察できなければなりたせん。 これらはたさにサヌビス メッシュが解決する問題です。

(OK、前の段萜には、このアプロヌチがサヌバヌ ゜フトりェアを䜜成する最新の方法であるずいう私の信念がただ含たれおいたす。モノリス、「リアクティブ マむクロサヌビス」、および䞊蚘の定矩に圓おはたらないその他のものの開発を奜む人もいたす。これらの人々はおそらく、私は圌らの意芋が「間違っおいる」ず考えおいたすが、いずれにしおもサヌビス メッシュは圌らにずっおあたり圹に立ちたせん)。

«スタック党䜓で均䞀」 サヌビス メッシュによっお提䟛される機胜は、ミッションクリティカルなだけではありたせん。 これらは、サヌビスがどの蚀語で曞かれおいるか、どのフレヌムワヌクが䜿甚されおいるか、誰が䜜成したか、どのようにデプロむされたか、その他の開発ず䜿甚の埮劙な点に関係なく、アプリケヌション内のすべおのサヌビスに適甚されたす。

«アプリケヌションコヌドから独立した」 最埌に、サヌビス メッシュは、スタック党䜓にわたっお䞀貫した機胜を提䟛するだけでなく、アプリケヌションの線集を必芁ずしない方法でそれを提䟛したす。 構成、曎新、運甚、メンテナンスなどのタスクを含むサヌビス メッシュ機胜の基本的な基盀は、完党にプラットフォヌム レベルに存圚し、アプリケヌションからは独立しおいたす。 アプリケヌションは、サヌビス メッシュに圱響を䞎えるこずなく倉曎できたす。 さらに、サヌビス メッシュはアプリケヌションの関䞎なしに倉曎できたす。

぀たり、サヌビス メッシュは重芁な機胜を提䟛するだけでなく、グロヌバルで統䞀された、アプリケヌションに䟝存しない方法で提䟛したす。 そのため、サヌビス メッシュ機胜はサヌビス コヌドで (たずえば、各サヌビスに含たれるラむブラリずしお) 実装できたすが、このアプロヌチでは、サヌビス メッシュの堎合に非垞に䟡倀のある均䞀性ず独立性が提䟛されたせん。

必芁なのは、倚数のプロキシを远加するこずだけです。 これらのプロキシの远加に関連する運甚コストに぀いおは、近いうちに怜蚎するこずをお玄束したす。 しかし、たず立ち止たっお、この独立性ずいう考え方をさたざたな芖点から芋おみたしょう。 人々.

サヌビス メッシュは誰を助けたすか?

たずえ䞍䟿であっおも、テクノロゞヌが゚コシステムの重芁な郚分になるためには、人々に受け入れられなければなりたせん。 では、サヌビス メッシュに興味がある人は誰でしょうか? それを䜿甚するこずで誰が利益を埗たすか?

最新のサヌバヌ ゜フトりェアを開発しおいる堎合、チヌムをグルヌプずしお倧たかに考えるこずができたす。 サヌビス所有者ビゞネス ロゞックを共同で開発および実装するメンバヌ、および プラットフォヌム所有者、これらのサヌビスが動䜜する内郚プラットフォヌムを開発したす。 小芏暡な組織では、これらは同じメンバヌである可胜性がありたすが、䌚瀟が成長するに぀れお、これらの圹割はより顕著になる傟向があり、さらにはサブ圹割に分割されるこずさえありたす... (DevOps の性質の倉化に぀いおはここで倚くのこずが述べられおいたす。マむクロサヌビスの組織ぞの圱響など) n. しかし、今のずころ、これらの説明を䞎えられたものずしお受け入れたしょう)。

この芳点から芋るず、サヌビス メッシュの明らかな受益者はプラットフォヌムの所有者です。 結局のずころ、プラットフォヌム チヌムの最終的な目暙は、サヌビス所有者がビゞネス ロゞックを実装できる内郚プラットフォヌムを䜜成し、運甚の曖昧な詳现から可胜な限り独立した方法で実装するこずです。 サヌビス メッシュは、この目暙を達成するために重芁な機胜を提䟛するだけでなく、サヌビス所有者に䟝存関係を課さない方法で提䟛したす。

より間接的な圢ではありたすが、サヌビス所有者も恩恵を受けたす。 サヌビス所有者の目暙は、ビゞネス プロセスのロゞックの実装においお可胜な限り生産性を高めるこずであり、運甚䞊の問題に぀いお心配する必芁が少なければ少ないほど良いのです。 たずえば、再詊行ポリシヌや TLS の実装に察凊する代わりに、ビゞネス目暙のみに集䞭し、残りはプラットフォヌムに任せるこずができたす。 これは圌らにずっお倧きな利点です。

プラットフォヌムずサヌビスの所有者間のこのような郚門の組織的䟡倀は、過倧評䟡するこずはできたせん。 圌女は貢献しおいるず思う ПсМПвМПй サヌビスメッシュの䟡倀ぞの貢献。

初期の Linkerd ファンがサヌビス メッシュを遞択した理由を語ったずき、私たちはこの教蚓を孊びたした。それは、「おしゃべりを最小限に抑える」こずができるからです。 詳现は次のずおりです。ある倧䌁業の瀟員は、自瀟のプラットフォヌムを Kubernetes に移行したした。 アプリケヌションは機密情報を扱うため、クラスタヌ間のすべおの通信を暗号化する必芁がありたした。 しかし、数癟のサヌビスず数癟の開発チヌムの存圚により、状況は耇雑になりたした。 党員に連絡を取り、蚈画に TLS サポヌトを含めるよう説埗するずいう芋通しは、圌らをたったく満足させたせんでした。 Linkerd をむンストヌルした埌、転送されたした 責任 開発者 (これは䞍必芁なトラブルであるずいう芳点から) から、これが最優先事項であるプラットフォヌマヌたでです。 蚀い換えれば、Linkerd は技術的な問題ではなく、組織的な問題を解決したずいうこずです。

぀たり、サヌビス メッシュは技術的なものではなく、むしろ゜リュヌションです。 瀟䌚技術的 問題。 ありがずう シンディ・スリダラン この甚語を玹介するために。

サヌビス メッシュはすべおの問題を解決したすか?

はい。 ぀たり、いいえ

䞊で抂説した XNUMX ぀のクラスの機胜 (信頌性、セキュリティ、可芳枬性) を芋るず、サヌビス メッシュがこれらの問題のいずれに察しおも完党な解決策ではないこずが明らかです。 Linkerd はリク゚ストを再発行できたすが (冪等であるこずがわかっおいる堎合)、サヌビスが氞続的に倱敗した堎合にナヌザヌに䜕を返すかを決定するこずはできたせん。これらの決定はアプリケヌションが行う必芁がありたす。 Linkerd は成功したリク゚ストの統蚈を保持できたすが、サヌビスを調べお内郚メトリクスを提䟛するこずはできたせん。アプリケヌションにはそのようなツヌルが必芁です。 Linkerd は mTLS を構成できたすが、本栌的なセキュリティ ゜リュヌションにはさらに倚くのものが必芁です。

サヌビス メッシュによっお提䟛されるこれらの領域の機胜のサブセットは、以䞋に関連したす。 プラットフォヌムの機胜。 これは次のような関数を意味したす。

  1. ビゞネスロゞックから独立した。 Foo ず Bar の間の呌び出しヒストグラムが構築される方法は、 理由 フヌはバヌに電話したす。
  2. 正しく実装するのが難しい。 Linkerd では、再詊行は再詊行バゞェットなどのあらゆる皮類の掟手なものでパラメヌタ化されたす。 (再詊行予算)なぜなら、そのようなこずを実装するための掗緎されおいない真正面からのアプロヌチは、いわゆる「芁求の雪厩」の出珟に確実に぀ながるからです。 (リトラむの嵐) 分散システムに特有のその他の問題。
  3. 均䞀に塗垃するず最も効果的です。 TLS メカニズムは、あらゆる堎所に適甚されお初めお意味を持ちたす。

これらの機胜は (アプリケヌション レベルではなく) プロキシ レベルで実装されるため、サヌビス メッシュはこれらの機胜を プラットフォヌム、アプリケヌションではありたせん。 したがっお、サヌビスがどの蚀語で曞かれおいるか、どのようなフレヌムワヌクを䜿甚しおいるか、誰がどのような理由でサヌビスを曞いたかは関係ありたせん。 プロキシはこれらすべおの詳现の倖郚で動䜜し、構成、曎新、運甚、メンテナンスなどのタスクを含むこの機胜の基本的な基盀はもっぱらプラットフォヌム レベルにありたす。

サヌビスメッシュ機胜の䟋

サヌビス メッシュ: すべおの゜フトりェア ゚ンゞニアが最も泚目されおいるテクノロゞに぀いお知っおおくべきこず

芁玄するず、サヌビス メッシュは、信頌性、可芳枬性、セキュリティの完党な゜リュヌションではありたせん。 これらの領域の範囲には、サヌビス所有者、運甚/SRE チヌム、およびその他の䌁業゚ンティティの参加が必芁です。 サヌビス メッシュは、これらの各領域に察しおプラットフォヌム レベルの「スラむス」のみを提䟛したす。

なぜ今サヌビス メッシュが人気になっおいるのでしょうか?

ここたでで、あなたはおそらく次のように疑問に思っおいるでしょう。サヌビス メッシュがそれほど優れおいるのであれば、なぜ XNUMX 幎前に䜕癟䞇ものプロキシをスタックにデプロむし始めなかったのでしょう?

この質問に察するありきたりな答えがありたす。XNUMX 幎前は誰もがモノリスを構築しおおり、サヌビス メッシュを必芁ずする人は誰もいたせんでした。 これは真実ですが、私の意芋では、この答えは芁点を倖しおいたす。 XNUMX 幎前でさえ、倧芏暡システムを構築するための有望な方法ずしおのマむクロサヌビスの抂念は広く議論され、Twitter、Facebook、Google、Netflix などの䌁業で適甚されおいたした。 少なくずも私が接した業界では、たずえそれが非垞に困難だったずしおも、マむクロサヌビスは倧芏暡システムを構築する「正しい方法」であるずいうのが䞀般的な芋方でした。

もちろん、XNUMX 幎前にもマむクロサヌビスを運甚しおいる䌁業はありたしたが、サヌビス メッシュを圢成するためにあらゆる堎所にプロキシを配眮しおいたわけではありたせん。 しかし、よく芋るず、圌らも同様のこずを行っおいたした。これらの䌁業の倚くは、ネットワヌク通信に特別な内郚ラむブラリ (シック クラむアント ラむブラリず呌ばれるこずもありたす) の䜿甚を必芁ずしおいたした。 ファットクラむアントラむブラリ).

Netflix には Hysterix があり、Google には Stubby があり、Twitter には Finagle ラむブラリがありたした。 たずえば、Finagle は Twitter 䞊のすべおの新しいサヌビスに必須でした。 クラむアント偎ずサヌバヌ偎の䞡方の接続を凊理し、繰り返しのリク゚ストを蚱可し、リク゚ストのルヌティング、負荷分散、枬定をサポヌトしたした。 これにより、サヌビスが䜕をしおいたかに関係なく、Twitter スタック党䜓にわたっお䞀貫した信頌性ず可芳枬性の局が提䟛されたした。 もちろん、これは JVM 蚀語でのみ機胜し、アプリケヌション党䜓で䜿甚する必芁があるプログラミング モデルに基づいおいたした。 ただし、その機胜はサヌビス メッシュずほが同じでした。 (実際、Linkerd の最初のバヌゞョンは、単に Finagle をプロキシ圢匏でラップしたものでした。)

したがっお、XNUMX 幎前には、マむクロサヌビスだけでなく、今日サヌビス メッシュが解決しおいるのず同じ問題を解決する特別なプロト サヌビス メッシュ ラむブラリもありたした。 ただし、圓時はサヌビス メッシュ自䜓が存圚しおいたせんでした。 圌女が珟れるたでには、もう XNUMX 回シフトする必芁がありたした。

そしお、ここに、過去 10 幎間に起こった別の倉化に隠された、より深い答えがありたす。それは、マむクロサヌビスの導入コストが劇的に䞋がったこずです。 XNUMX 幎前にマむクロサヌビスを䜿甚しおいた䞊蚘の䌁業 (Twitter、Netflix、Facebook、Google) は、巚倧な芏暡ず膚倧なリ゜ヌスを持った䌁業でした。 圌らは、倧芏暡なマむクロサヌビスベヌスのアプリケヌションを構築、展開、運甚する必芁があるだけでなく、その胜力も持っおいたした。 Twitter ゚ンゞニアがモノリシックからマむクロサヌビスぞのアプロヌチに移行するために泚いだ゚ネルギヌず努力は驚くべきものです。 (公平を期すために、それが成功したずいう事実も同様です。) このような皮類のむンフラストラクチャ戊略は、圓時の䞭小䌁業には䞍可胜でした。

珟圚に早送りしおください。 珟圚、マむクロサヌビスず開発者の比率が 5:1 (あるいはそれさえも) のスタヌトアップ䌁業もありたす。 10:1、そしおさらに、圌らはそれらにうたく察凊したす 5 人のスタヌトアップが 50 個のマむクロサヌビスを簡単に運甚できる堎合、実装コストが明らかに削枛されたこずになりたす。

サヌビス メッシュ: すべおの゜フトりェア ゚ンゞニアが最も泚目されおいるテクノロゞに぀いお知っおおくべきこず
Monzo には 1500 のマむクロサヌビス。 各行は、トラフィックを蚱可する芏定のネットワヌク ルヌルです。

マむクロサヌビスの運甚コストの劇的な削枛は、次の XNUMX ぀のプロセスの結果です。 コンテナの人気が高たる О オヌケストレヌタヌ。 これはたさに、サヌビス メッシュの出珟に䜕が寄䞎したのかずいう質問に察する深い答えです。 Kubernetes ず Docker ずいう同じテクノロゞヌにより、サヌビス メッシュずマむクロサヌビスの䞡方が魅力的になりたした。

なぜ さお、Docker は XNUMX ぀の倧きな問題、぀たりパッケヌゞ化の問題を解決したす。 Docker は、アプリケヌションずその (ネットワヌク以倖の) ランタむム䟝存関係をコンテナヌにパッケヌゞ化するこずで、アプリケヌションをどこでもホストしお実行できる亀換可胜なナニットに倉えたす。 同時に操䜜が倧幅に簡玠化されたす 倚蚀語 スタック: コンテナヌはデプロむメントず運甚の目的においお実行のアトミックな単䜍であるため、JVM、Node、Go、Python、Ruby アプリケヌションなど、その䞭に䜕があるかは関係ありたせん。 起動するだけで完了です。

Kubernetes はすべおを次のレベルに匕き䞊げたす。 珟圚、「実行するもの」ずそれらを実行するマシンが倧量にあるため、それらを盞互に関連付けるこずができるツヌルが必芁です。 広い意味では、Kubernetes に倚数のコンテナず倚数のマシンを䞎え、それらを盞互にマッピングしたす (もちろん、これは動的で垞に倉化するプロセスです。新しいコンテナがシステム内を移動し、マシンが起動および停止したす)など。ただし、Kubernetes はこれらすべおを考慮したす)。

Kubernetes が構成されたら、100 ぀のサヌビスをデプロむしお運甚するのにかかる時間コストは、XNUMX 個のサヌビスをデプロむしお運甚するのにかかるコストずほずんど倉わりたせん (実際、XNUMX 個のサヌビスでもほが同じです)。 倚蚀語実装を促進するパッケヌゞング メカニズムずしおこのコンテナヌに远加するず、さたざたな蚀語で曞かれたマむクロサヌビスの圢匏で実装された新しいアプリケヌションのホストが埗られたす。これは、たさにサヌビス メッシュが非垞に適した皮類の環境です。

そこで、なぜサヌビス メッシュずいう考え方が今普及しおいるのかずいう疑問に察する答えにたどり着きたす。Kubernetes がサヌビスに提䟛する均䞀性は、サヌビス メッシュが盎面する運甚䞊の課題に盎接圓おはたりたす。 プロキシをコンテナにパッケヌゞ化し、可胜な限りどこにでもプロキシを貌り付けるタスクを Kubernetes に䞎えれば、出来䞊がりです。 その結果、サヌビス メッシュが埗られ、そのデプロむメントの仕組みはすべお Kubernetes によっお管理されたす。 (少なくずも俯瞰的に芋るず。もちろん、このプロセスには倚くの埮劙な違いがありたす。)

芁玄するず、サヌビス メッシュが XNUMX 幎前ではなく珟圚普及しおいる理由は、Kubernetes ず Docker が倧幅に増加しただけでなく、 必芁 これにより、アプリケヌションの実装が倚蚀語マむクロサヌビスのセットずしお簡玠化されたしたが、倧幅に削枛されたした。 費甚 その運甚のために、サむドカヌ プロキシ フリヌトを展開およびサポヌトするためのメカニズムを提䟛したす。

サヌビス メッシュに぀いおこれほど話題になっおいるのはなぜですか?

è­Šå‘Š: このセクションでは、あらゆる皮類の仮定、掚枬、捏造、内郚情報を利甚したす。

「サヌビス メッシュ」で怜玢するず、倧量のリサむクルされた䜎カロリヌ コンテンツ、奇劙なプロゞェクト、そしお゚コヌ チェンバヌにふさわしい歪みの䞇華鏡が芋぀かりたす。 優れた新しいテクノロゞであればこれを実珟できたすが、サヌビス メッシュの堎合、問題は特に深刻です。 なぜ

たあ、それの䞀郚は私のせいです。 私は、数え切れないほどのブログ投皿やこのような蚘事を目にする機䌚があるたびに、Linkerd ずサヌビス メッシュを宣䌝するために懞呜に取り組んできたした。 でも、私はそんなに力がありたせん。 この質問に本圓に答えるには、党䜓的な状況に぀いお少し話す必芁がありたす。 そしお、XNUMX ぀のプロゞェクトに觊れずにそれを語るこずはできたせん。 むスティオ は、Google、IBM、Lyft が共同開発したオヌプン゜ヌスのサヌビス メッシュです。

(XNUMX 瀟の圹割は倧きく異なりたす。Lyft の関䞎は名ばかりのようです。圌らは Envoy の䜜成者ですが、Istio の開発に䜿甚たたは参加しおいたせん。IBM は Istio の開発に関䞎し、䜿甚しおいたす。Google は Istio の開発に積極的に関䞎しおいたす)開発䞭ですが、私の知る限り実際には䜿甚しおいたせん。)

Istio プロゞェクトは XNUMX ぀の点で泚目に倀したす。 たず、特に Google がこのプロモヌションに泚力しおいる倚倧なマヌケティング努力がありたす。 今日サヌビス メッシュの抂念を知っおいるほずんどの人は、最初に Istio を通じおそれを知ったず掚枬したす。 XNUMX ぀目は、Istio の評刀が悪かったこずです。 この件に関しお、私は明らかに利害関係者ですが、可胜な限り客芳的であり続けようず努めおいたすが、䟝然ずしお協力するこずはできたせん。 マヌク весьЌа ネガティブ 気分、あたり特城的ではありたせん (ナニヌクではありたせんが、systemd が思い浮かびたすが、 比范 行われた すでに 繰り返し...) オヌプン゜ヌス プロゞェクトの堎合。

(実際には、Istio には耇雑さず UX だけでなく、パフォヌマンスにも問題があるようです。たずえば、 Linkerd のパフォヌマンス評䟡サヌドパヌティの調査では、研究者らは、Istio のテヌル レむテンシヌが Linkerd の 100 倍高い状況や、Istio が完党に動䜜しなくなったにもかかわらず Linkerd が正垞に機胜し続けるリ゜ヌス䞍足の状況を発芋したした。)

なぜこれが起こったのかに぀いおの私の理論はさおおき、サヌビスメッシュに関する圧倒的な興奮はGoogleの参加によっお説明されるず私は信じおいたす。 ぀たり、次の XNUMX ぀の芁玠の組み合わせです。

  1. Google による Istio の抌し付けがたしいプロモヌション。
  2. プロゞェクトに察するそれに察応する䞍承認的で批刀的な態床。
  3. 最近、Kubernetes の人気が急速に高たり、その蚘憶はただ新しいです。

これらの芁因が組み合わさっお、理性的な刀断胜力が匱たり、奇劙な倚様性だけが残る、呆気なく酞玠のない環境が生み出されたす。 チュヌリップマニア.

リンカヌドの芳点からするず、これは...私が蚀うずころの「混合の祝犏」です。 ぀たり、サヌビス メッシュが、Linkerd が最初に開始された 2016 幎にはなかった圢で䞻流になったこずは玠晎らしいこずですが、このプロゞェクトに人々の泚目を集めるのは非垞に困難でした。 今ではそのような問題はありたせん しかし、悪いニュヌスは、今日のサヌビス メッシュの状況が非垞に混乱しおおり、どのプロゞェクトが実際にサヌビス メッシュ カテゎリに属する​​かを理解するこずがほが䞍可胜であるずいうこずです (特定のナヌスケヌスにどのプロゞェクトが最適であるかを理解するこずはおろか)。 これは間違いなく誰にずっおも問題です (そしお、Linkerd はただ普遍的な゜リュヌションではないため、Istio たたは別のプロゞェクトの方が Linkerd よりも適しおいるケヌスも確かにありたす)。

Linkerd 偎の戊略は、ノむズを無芖し、実際のコミュニティの問題の解決に集䞭し続け、基本的に誇倧宣䌝が静たるのを埅぀こずでした。 最終的には、誇倧宣䌝は静たり、萜ち着いお仕事を続けるこずができたす。

それたでの間、私たちは皆、少し蟛抱しなければなりたせん。

サヌビス メッシュは、しがない゜フトりェア ゚ンゞニアである私にずっお圹立぀でしょうか?

次のアンケヌトは、この質問に答えるのに圹立ちたす。

ビゞネス ロゞックの実装のみに携わっおいたすか? この堎合、サヌビス メッシュは圹に立ちたせん。 もちろん、興味があるかもしれたせんが、理想的には、サヌビス メッシュは環境内の䜕にも盎接圱響を䞎えるべきではありたせん。 お金をもらっお仕事をし続けおください。

Kubernetes を䜿甚しおいる䌁業でプラットフォヌムをサポヌトしおいたすか? はい、この堎合はサヌビス メッシュが必芁です (もちろん、モノリスたたはバッチ凊理を実行するためだけに K8 を䜿甚しおいる堎合は別ですが、なぜ K8 が必芁なのかを尋ねたいず思いたす)。 最終的には、さたざたな人によっお䜜成された倚数のマむクロサヌビスが䜜成される可胜性がありたす。 これらはすべお盞互に圱響し合い、ランタむムの䟝存関係が耇雑に絡み合っおいるため、それらすべおに察凊する方法を芋぀ける必芁がありたす。 Kubernetes を䜿甚するず、「自分甚」のサヌビス メッシュを遞択できたす。 これを行うには、その機胜ず特城を理解し、利甚可胜なプロゞェクトが自分に適しおいるかどうかずいう質問に答えおください (Linkerd から調査を始めるこずをお勧めしたす)。

Kubernetesを䜿わずマむクロサヌビスを䜿っおいる䌚瀟のプラットフォヌム䌁業ですか この堎合、サヌビス メッシュは圹に立ちたすが、その䜿甚は簡単ではありたせん。 もちろんできたす 暡倣する サヌビス メッシュは倚数のプロキシを配眮するこずで機胜したすが、Kubernetes の重芁な利点はデプロむメント モデルにありたす。これらのプロキシを手動で維持するには、より倚くの時間、劎力、費甚が必芁になりたす。

あなたはモノリスを扱う䌁業でプラットフォヌムの責任者ですか? この堎合、おそらくサヌビス メッシュは必芁ありたせん。 明確に定矩され、ほずんど倉化しない察話パタヌンを持぀モノリス (たたはモノリスのコレクション) を操䜜しおいる堎合、サヌビス メッシュが提䟛できるものはほずんどありたせん。 だから、ただ無芖しお、悪い倢のように消え去るこずを望むこずができたす...

たずめ

おそらく、サヌビス メッシュはただ「䞖界で最も誇倧宣䌝されおいるテクノロゞヌ」ず呌ばれるべきではありたせん。この疑わしい名誉はおそらくビットコむンたたは AI に属したす。 圌女はおそらくトップXNUMXに入るでしょう。 しかし、ノむズの局を切り抜けるず、サヌビス メッシュが Kubernetes 䞊でアプリケヌションを構築する人々に真のメリットをもたらすこずが明らかになりたす。

Linkerd を Kubernetes クラスタヌ (たたはラップトップ䞊の Minikube) にむンストヌルしお詊しおみおください。 箄60秒かかりたす, そしお私が䜕を蚀っおいるのかは自分の目で確認しおください。

よくある質問

— サヌビス メッシュを無芖するず、サヌビス メッシュは消えおしたいたすか?
— 残念ですが、サヌビス メッシュは長い間私たちに提䟛されおきたした。

- でもサヌビス メッシュは䜿いたくない!
- そうですね、その必芁はありたせん 䞊蚘の私のアンケヌトを読んで、少なくずもその基本を理解しおおくべきかどうかを理解しおください。

— これは叀き良きESB/ミドルりェアに新しい゜ヌスを加えたものではないでしょうか
— サヌビス メッシュは、セマンティック ロゞックではなく、操䜜ロゞックを扱いたす。 これが䞻な欠点でした ゚ンタヌプラむズ サヌビス バス (ESB。 この分離を維持するこずで、サヌビス メッシュが同じ運呜を避けるこずができたす。

— サヌビス メッシュは API ゲヌトりェむずどう違うのですか?
— このトピックに関する蚘事は XNUMX 䞇件ありたす。 Googleで調べおみおください。

— Envoy はサヌビス メッシュですか?
- いいえ、Envoy はサヌビス メッシュではなく、プロキシ サヌバヌです。 これは、サヌビス メッシュを敎理するために䜿甚できたす (汎甚プロキシであるこずなど)。 しかし、それ自䜓はサヌビス メッシュではありたせん。

— Network Service Mesh はサヌビス メッシュですか?
- いいえ。 名前にもかかわらず、これはサヌビス メッシュではありたせん (マヌケティングの奇跡が奜きですか?)。

— サヌビス メッシュは、メッセヌゞ キュヌ ベヌスのリアクティブ非同期システムに圹立ちたすか?
- いいえ、サヌビス メッシュは圹に立ちたせん。

— どのサヌビス メッシュを䜿甚すればよいですか?
- リンカヌド、 非垞に簡単、考える必芁のない。

- 蚘事は最悪です / 䜜者様倧歓迎
— 友達党員が芋られるように、リンクを共有しおください。

感謝

タむトルから掚枬できるかもしれたせんが、この蚘事はゞェむ・クレプスの玠晎らしい論文「ログ: リアルタむム デヌタの統䞀的な抜象化に぀いおすべおの゜フトりェア ゚ンゞニアが知っおおくべきこず」 XNUMX 幎前に Linked In でむンタビュヌしたずきにゞェむに䌚ったのですが、それ以来、圌は私にずっおむンスピレヌションの源です。

私は自分のこずを「Linkerd 開発者」ず呌びたいのですが、実際にはプロゞェクトの README.md ファむルの管理者に近いです。 Linkerd は今日䜜業䞭です 非垞に, 非垞に, 非垞に ЌМПгП このプロゞェクトは、貢献者ずナヌザヌからなる玠晎らしいコミュニティの参加がなければ実珟しなかったでしょう。

最埌に、Linkerd の䜜成者に特別な感謝を申し䞊げたす。 オリバヌ・グヌルド (プリムス・むンタヌ・パレス)圌は、䜕幎も前に私ず䞀緒に、サヌビス メッシュに関するこのすべおの倧隒ぎに真っ向から飛び蟌みたした。

翻蚳者からの远䌞

私たちのブログもお読みください:

出所 habr.com