deploys.複数の異なるテストとデプロイメントのパイプラインを維持し、各サービスのためにインフラのオーバーヘッドを負担しなければならない一方で、必要なときに必要なデータに常にアクセスできるとは限りません。各サービスは独立して配置されているため、サービス間の通信はネットワークを介することになり、通信のたびに遅延が発生し、信頼性が低下します。複数のサービスにまたがる大規模なリファクタリングには、依存するすべてのサービスを変更し、デプロイを調整する必要があり、面倒な作業となります。downsides.私たちは、デプロイメントユニットの数を増やさずにモジュール性を高め、モノリスとマイクロサービスの両方のメリットを、多くのデメリットなしに得られるソリューションを求めていました。マイクロサービス移行を見込んでモジュラーモノリスを初期から採用するとかモノリスよりはモジュール分割のコストがかかるいきなりマイクロサービスにしてサービス境界を見誤る、変化した場合のダメージは大きいモジュラーモノリスであれば同一コードベース内で完結するため、まだ修正コストは低いシンプルなモノリスでは厳しい。不必要・向いていないケース開発組織のスケールがモジュラーモノリスでは達成できない場合?モノリスではあるので、あまりにも開発者が多い場合には流石に厳しくなる。50人とかは流石に怪しいモジュラーモノリスのシステムを複数持つ構成はありな気がするUberのDOMAのようにドメイン単位でシステムを切って、それらのシステムをモジュラーモノリスを構成するイメージ(サービスの切り方とか配分は適当)開発者50人でマイクロサービス自体は3つ。「マイクロサービスはカプセル化されたビジネス機能を一つ以上のネットワークエンドポイントを介して公開する。それらはネットワークを介して相互に通信しあい、分散システムを形成する。マイクロサービスはデータの保存や検索をカプセル化して、適切に定義されたインターフェイスを介してデータを公開する。initiatives.マイクロサービスで解決しようとしている問題が現実と一致していないため、モノリスが未来である。正直に言うと、私は以前、マイクロサービスからモノリスになり、また戻ってきたことがあります。多くの人はこう言います。"モノリスでは規律を失ってしまった。Fourの本を買ってきて、戻ってきてデザインパターンをやり始めたのに、辞めてしまったから、コードベースの半分はここでこんなことをやっているんだ......」と。コードベースがひどくなって、あなたはこう言いました。"「どうすればいいかわかりますか?壊してしまおう。解体して、元々持っていなかった技術的な規律をなんとか見つけよう」と。結局、50個のデプロイメント可能な製品を作ることになるのですが、それは実際には分散型モノリスです。同じことをしているのですが、関数呼び出しやクラスのインスタンス化の代わりに、何かを開始し、それをネットワークに投げて、戻ってくることを期待しているのです。確実に戻ってくることができないので、PrometheusやOpenTracingなどのものを導入しています。私は「何をしているんだ!」と思いました。悪いコードを書くことから、悪いインフラを構築して、その上に悪いコードをデプロイすることになったのです。マイクロサービスを導入するには理由があります。私にとってマイクロサービスが意味を持つのは、次のような場合だと思います。あなたは銀行で、すべてをこなす大きなモノリスを持っています。そこにモバイルが登場します。モバイル・バンキングをやりたいが、それには別のAPIが必要だとします。モノリスに追加する必要はありません。モバイル関連のほとんどを処理する新しいアプリケーションを作成し、既存のインフラに接続してその作業を行えばいいのです。私にはそれが理にかなっていると思います。「マイクロサービスはベストプラクティスである」というこの考えは、ほとんどの人の取り組みでは不評のようですね。architecture.つまり、組織はパフォーマンスを犠牲にして、運用上のメリットのためにマイクロサービスを採用しているのです。マイクロサービスをサポートするために必要なインフラを維持するためのコストも負担しなければなりません。多くの状況では、このトレードオフは非常に理にかなっていることがわかりますが、マイクロサービス・アーキテクチャを早急に採用することを否定する強い論拠にもなります。誰が何を所有してるのか?誰が意思決定をするのか?所有権の境界線が曖昧・混乱してることによる課題ここでの話とはそれるが、誰がメンテするのかわからない共有ライブラリの存在を思い出した。マイクロサービスはシステムの境界をネットワーク越しで独立させることで所有権を定義してる初期段階、チームメンバーが少ない段階であえてマイクロサービスの複雑性を受け入れる必要はない。分散モノリス複数のサービスで構成されているものの、何らかの理由でシステム全体を一緒にデプロイする必要があるシステム分散システム、マイクロサービスの欠点を持ち、単一プロセスモノリスの欠点も持つ。