免責事項
私は誰かのつま先を踏んだり、どちらかのコンセプトの愛好家を怒らせたりしていないことを願っています
バックグラウンド
私は明確な答えを見つけることなく、サービス指向アーキテクチャとマイクロサービスの真の違いを探していました。
私は次のようなものを読みます:
- SOAの副作用
- SOAはアンチパターン
- マイクロサービスはSOAの障害を修正するようになりました
- ESBは実際にはESBではなく、EAIです。
- メッセージブローカーへの過度の依存
- ベンダーはSOAの概念を悪用し、自社製品の販売を試みています
- SOAが制御不能に成長する
しかし、それでもなお、サービス指向アーキテクチャー(概念として)とマイクロサービス(概念として)の間のアーキテクチャーの違いを明確に定義するものはありません
私が理解したところによると、彼らはどちらも持っています:
- 1つのことだけを行うサービスプロバイダー
- これらのサービスをコンシューマーに公開するService Gateway / ESB
- ESB / Service Gatewayを介してサービスにアクセスするサービスコンシューマー
質問
では、SOAをマイクロサービスに再ラベル付けする以外に何か違いはありますか?マイクロサービスがマクロになることを制限するために配置されたテクノロジーの制約ですか?
注:箇条書きで意見を探すのではなく、難しい事実を探しています。
参考文献
- ソフトウェア工学の質問
- マーティン・ファウラーのサイト(彼はそれが大いに嫌いだと思う)
- 情報の世界
- マイケル・フェザースのウェブサイト
- スタックオーバーフローの質問
更新
スタックオーバーフローの質問でも同様の議論が起こったようです。意見が分かれるかどうかにかかわらず、マイクロサービスは変装したサービス指向アーキテクチャーです。
SOの質問からの結論:
- MSはSOAの特殊なケースです
- MSは、サービスをホスティングするアプリケーションのより小さなサイズを推奨します
- MSはテクノロジーに依存します(オープンプロトコルオプションではなくHTTPの使用)
- MSはテクノロジーを利用して規律を強化します(サービスの自動展開)
- MSはESB(悪)を考慮しますが、IMHOがESBの一種である APIゲートウェイを使用します
次の条件に当てはまる場合、MSはSOAであると結論付けます。
- MSはオーケストレーションの概念をサポートしていますか?ワークフローを管理する1つ以上のマスタープロセス
- MSにメッセージブローカーレイヤーはありますか?メッセージフォーマットをサービスプロデューサーのメッセージスペースからサービスコンシューマーに変換する一連のアダプター
- マイクロサービスはモノリシックエンタープライズアプリケーションからデータを読み取ることができますか?モノリシックアプリケーションのAPIにすることはできますか?それとも独立して動作できるスタンドアロンの自己完結型アプリケーションでなければなりませんか?
最後の質問に対する答えが「いいえ」であることが判明した場合、マイクロサービスは、クレジットカード管理システムや照合システムなどの複雑なワークフローシステムを処理することができません。
Martin Fowler's Site (I think he hates it big time)
バルセロナで彼の講演に行ったとき、それは私の気持ちではありませんでした。彼はトレードオフと、MSがすべての人に適しているわけではないことを考慮せずに、人々がどのようにしてこのアーキテクチャに盲目的に移行したかを認識しています。