マイクロサービスを実行していると思いますか?いいえ!モノリスよりも悪い分散モノリスを作ってしまいました。

マイクロサービスを実行していると思いますか?いいえ!モノリスよりも悪い分散モノリスを作ってしまいました。

[[387137]]

この記事はWeChatの公開アカウント「Programmer DD」から転載したもので、著者はZhai Yongchaoです。記事を転載する場合はプログラマーDDの公式アカウントまでご連絡ください。

昨夜寝る前に、いくつかのグループチャットのチャット記録を確認しました。 「分散モノマー」という非常に興味深い用語を見つけ、その手がかりをたどって以前のチャット記録を見てみました。内容は罵倒語だらけなので投稿しません。大まかな内容は、ある企業がマイクロサービス化を進めているが、その変革は中途半端なものだというものです。形式的にはマイクロサービスのように見えますが、本質的には依然としてモノリスであり、モノリスよりもさらに悪いものです。

こうした変化の現象は、実は国内ではかなり一般的です。今日は、分散モノマーという興味深いトピックについてお話します。読者の皆様、あなたの会社でもこのようなミスを犯したことがありますか?

分散モノリスがなぜ悪いのか

まず、この質問について考えてみましょう。モノリスからマイクロサービスに変換する場合、次の手順に従いますか?

  1. ビジネスドメインを決定し、ストレージを分割し、各マイクロサービスの境界を定義する
  2. コードロジックを変更し、元の内部サービス呼び出しをdubboやfeignなどのリモート呼び出しに変更します。

この変革を通じて、次のような多くのメリットが得られました。

  1. コードベースが分離されているため、コードの競合を解決する手間が軽減されます。
  2. CI/CD が分離されており、各サービスは独立して開発、デプロイ、実行できます。
  3. データベースは分離され、独立して実行されるため、異なるビジネス モジュールは互いに影響を及ぼしません。

これらすべての操作を経て、肥大化したモノリシック アプリケーションが複数の洗練された分散アプリケーションに変換されました。変身は完璧に達成されたようですね?しかし、これでマイクロサービスの中心的な目標は達成されたのでしょうか?次の質問について考え続けましょう。

  1. コード ベースは分離されていますが、各サービスは独立して反復処理されていますか?各要件には、多数の同期インターフェースの調整が必要ですか?
  2. CI/CD は分離されていますが、すべてのリリースは無料ですか?すべての機能リリースには、一緒にリリースされる多くのサービスが含まれますか?
  3. データベースは分離されていますが、サービスがダウンしているようで、それでも多くの機能が異常になりますか?

いろいろメリットがあるようですが、本当に開発効率は向上したのでしょうか?以前は 1 つのアプリケーションを起動するのに 3 分かかっていましたが、分割後は 30 分でプロジェクトを開始できるようになりましたが、開発とデバッグごとに複数のプロジェクトを同時に開始する必要がありますか?この開発体験は本当に楽しいですか?

マイクロサービス化が完了したように見えますが、実際はまだ単一のアプリケーションですが、当初の集中型の実装から分散型の実装に変化しています。結局、私たちは無駄な仕事をしただけで、実際の利益はごくわずかだったことがわかりました。

実際のところ、このような変革は、利益が低いことに加え、より多くの不利益をもたらします。あなたの会社がこれを実行している場合、これを実行した後、システム障害の頻度が高くなったように感じますか?安定性は単一アプリケーションよりも悪いようですか? (そうでない場合は、運用保守チームの素晴らしい働きに感謝しなければなりません。同時に、この記事を運用保守チームに転送し、この変革によって彼らがさらに疲れているかどうかを確認するためにインタビューすることをお勧めします。)

なぜそのような変換によってシステムがさらに不安定になるのでしょうか?実は、その理由は非常に単純です。もともと、モノリシック アプリケーションでは、分割されていないリモート呼び出しはすべて内部呼び出しでした。この内部呼び出しによって発生する失敗率はごくわずかでした。この部分をリモート呼び出しに分割した後、各呼び出しにネットワーク IO の要素が追加され、各呼び出しの失敗率が増加しました。その後、システムの同期リモート呼び出しの数に応じて、システム全体の障害率が増加します。運用・保守チームと開発レベルが複雑性の増大に対応できない場合、変換されたシステムの安定性は必然的に元の単一アプリケーションよりも悪くなります。

したがって、このような変革の結果は、多くの利益を得られなくなるだけでなく、安定性の大きな損失ももたらします。

変形の歪みの犯人

では、なぜ上記のような問題が発生するのでしょうか?主な理由は2つあると思います。

1. 不合理なドメイン分割により同期リモート呼び出しが多すぎる

これは最も基本的な問題であり、改修プロセス中に最もよく発生する問題でもあります。正直に言うと、この部分は、ビジネスに対する非常に深い理解と、システム設計とユーザー行動のドメイン モデルに対する十分な理解を必要とするため、変革プロセス全体の中で最も難しい部分です。分割する場合は、同期リモート呼び出しを可能な限り削減し、メッセージを介した非同期対話に置き換えます。同時に、ビジネスニーズに応じて適切なデータ冗長化を実行できます。これにより、分割された各マイクロサービスで結合度を低くすることができます。

結合度が低いため、最適化を行わなくても分散による安定性の損失が少なくなります。後でポイント 2 を実行する作業が少なくなります。同時に、真に自立した開発、展開、運用も可能となります。

2. シンプルで粗雑な実装、分散保護メカニズムの欠如

多くのチームでは、多くのビジネス要求と人員不足の矛盾により、開発者は、インターフェイス プロバイダーの電流制限戦略 (他者による強制終了から自身を保護するため)、インターフェイス呼び出し元の劣化戦略 (ビジネスの高可用性を保護するため)、インターフェイス呼び出し元のサーキット ブレーカー戦略 (他者による強制終了から自身を保護するため) など、リモート呼び出しに対する適切な保護メカニズムを提供できないことがよくあります。分散環境におけるあらゆる依存ポイントを真剣に受け止めることによってのみ、分散変換によって生じる多くの問題を解決することができます。

しかし、これをうまく行うための鍵は、最初のポイントを把握することです。ドメイン モデルでより合理的な分割計画を立てることによってのみ、開発者がこれを適切に実行できるようにサポートできます。そうしないと、分割が恣意的に行われると、すでに大きなプレッシャーを受けている開発者に、大量のインターフェース呼び出しが課せられることになります。そうすると、開発のこの部分の品質を保証することが難しくなり、インターフェースの複雑さが増すにつれて、当然システムの安定性が低下し始めます。最終的に、開発者は私たちのグループ内で不満を言い始めるでしょう...そして、マイクロサービスでは効率性の向上が実現できないのではないかと疑い始める人さえ出てくるでしょう。

最後に、考えてみてください。あなたのマイクロサービスには、ここで述べたような状況がありますか?それとも、他の異なる問題があるのでしょうか?コメントエリアへようこそ。ここであなたの問題について話し合い、あなたの意見を議論しましょう。

オリジナルリンク: https://mp.weixin.qq.com/s/YN4zGzySLMCx3QoT2t4pbA

<<:  クラウド ネイティブとエッジ コンピューティングが出会うと、どのような火花が散るでしょうか?

>>:  クラウドベースのAIモバイルアプリケーションは今後も成長と改善を続けるだろう

推薦する

SEO 業界は Baidu の手動介入を規制できるでしょうか?

Baidu の最新の SEO 規制により、この記事を書くことで多くの注目を集める可能性があり、著者は...

ultravps-40% オフ/512M メモリ/10g SSD/1T トラフィック/2IP/年間支払い $16

versaweb 傘下の VPS ブランドである ultravps は、すべての VPS を 4% ...

ウェブサイトデザイン分析: モジュール化 - 効率的なリファクタリング

モジュール化と言えば、おそらく最初に思い浮かぶのはプログラミングにおけるモジュール設計でしょう。モジ...

IDC: 世界のパブリッククラウドサービス市場は2019年に前​​年比26%成長

IDC の最新レポートによると、2019 年の世界のパブリック クラウド サービス市場は総額 2,3...

情報化時代において、クラウドを活用して新たな問題を解決する

青銅器時代から産業時代へと移行し、私たちは今、急速な技術の発展により、情報化時代という新たな画期的な...

テンセントが匿名ソーシャルアプリ「電玉デート」をリリース、漂流瓶は復活か?

テンセントはソーシャルメディアでの調査のペースを加速させている。 2019年の初め、王欣はMTという...

沈黙の後の目覚め: ウェブマスターがドメイン名 Comedy Star を使用してソーシャル グラフを構築

ドメイン名ニュース:長年沈黙していたダブルピンインドメイン名xiaoxing.comが最近、国内の個...

タオバオ、SNSをターゲットにした過去最大の改訂版を発表

10月18日、易邦電力網は情報筋から、タオバオが史上最大の改訂を完了しようとしており、新バージョンは...

採用ウェブサイトは過去10年間で進化し、プロフェッショナルソーシャルネットワーキングプラットフォームが新たなリーダーとして台頭してきました。

オンライン採用は2000年頃に国内市場に初めて登場しました。10年以上の開発を経て、オンライン採用は...

モバイルソーシャルネットワーキングの進化:WeChatが王座に就き、Momoが誕生しました!

「ソーシャルネットワーキングと電子商取引のどちらかをマスターできれば、世界を支配できる。」インターネ...

hawkhost: ボクシング デー、30% オフ、仮想ホスト/VPS/クラウド サーバー/ディストリビューション

Hawkhost はクリスマスと「ボクシング デー」のプロモーションを提供しています。今回は、VPS...

デスクトップ仮想化: 集中型か分散型か?

[[216241]]仮想デスクトップが必要な理由は何ですか? 10 年以上前、デスクトップ仮想化技...

Jvm 内部キャッシュの選択?あなたの疑問に答える記事

[[277692]]ネイティブJava HashMap のチェーン メソッドに新しい参照を追加するだ...

ベテランウェブマスターがタオバオアフィリエイトコミッションの開催方法についての実践的な経験を共有

2009年から2012年まで、タオバオアフィリエイトは3年間の浮き沈みを経験しました。現在、タオバオ...