A.なぜ我々はマイクロサービスが必要なのです。
- 新しい、企業のアップデートや修正大きなモノリシックなアプリケーションの需要の増加と伝統的なモノリシック・アーキテクチャの使用(モノリシック・アーキテクチャ)などCRM、ERPおよび他の大規模なアプリケーションなどのアプリケーション開発システムは、ますます困難になります。
- モバイルインターネットの発展に伴い、企業は急速にオンラインアプリケーション機能を実現するために企業が必要と互換性のあるモバイルデバイス用の最新のUIインターフェイスアーキテクチャに自分のアプリケーションを移行することを余儀なくされています。
- 多くの企業はSOA、SOAへの投資に対するリターンが標準化されたサービス・インターフェースの再利用機能により実現したが、急速に変化するニーズに合わせて、モノリシックなアプリケーションを制限され、時には不十分であるように思われたことができます限られています。
- クラウドアプリケーションの人気の高まりとともに、クラウドアプリケーションは、従来のIT開発や遺伝子操作とメンテナンスモードとは異なる技術で生まれました。
II。オープンソースのクラウドコンピューティングと軽量技術の多数は絶えず出現し、成熟します
- インターネット/イントラネット/インターネットは、より成熟しています。
- ・テクノロジーズは(、リバティなどはWASのNode.js)軽量ランタイムが出現します。
- 新しい手法やツール(アジャイル、DevOpsチーム、TDD、CI、XP、パペット、シェフ...)。
- 新しい軽量プロトコル(RESTfulなAPIインタフェース、軽量なメッセージング・メカニズム)。
- 簡素化されたインフラストラクチャ:オペレーティングシステムの仮想化(ハイパーバイザー)、コンテナ化(例えばドッカー)、サービス(IaaSの)などのインフラストラクチャ、ワークロードの仮想化(Kubernetes、スパーク...)というように。
- サービスプラットフォーム(PaaSの):自動スケーリングのクラウドサービスプラットフォーム、ワークロード管理、SLA管理、メッセージング、キャッシング、オンデマンドの管理やその他のサービスを構築するとともに、
- また、新たな永続データモデル:としてのNoSQL、MapReduceの、BASEは、同様CQRS。
- 標準コード管理:Githubのような。
III。マイクロサービスとは何ですか
マイクロサービスは、建築様式、一つ以上のマイクロサービスにより、大規模で複雑なソフトウェアアプリケーションです。各マイクロサービスシステムは、独立して、それぞれのマイクロサービスとの間に緩く結合されて配備されてもよいです。各マイクロは、に焦点を当て、よく作業を行ってタスクを完了するためにのみ機能します。すべての場合において、各タスクは、小さな運用能力を表しています。
2014年3月からマイクロサービスのコンセプトは、Martin Fowler氏は記事に書いた「Microservicesを」。
「マイクロ・サービス」などの建築様式がない正確な定義が、それはいくつかの共通のようなので、上の言語とデータ制御、およびの「脱中央集権」へのビジネスサービスを周りに整理する機能、自動展開、インテリジェントなエンドポイント、などの特徴があります。
思考マイクロサービスアーキテクチャは、生成された全体のコントラストから適用されます。
アプリケーションコンポーネントパッケージのアプローチは、独立して形成された境界の全体的な構造及びマイクロサービスアーキテクチャ、マイクロアーキテクチャサービスのビジネスロジック及び関連データとの間の主な相違点であり、目的は、他のコンポーネントに影響を与えることなく適用することができる(マイクロ高速配信と打ち上げサービス市場のケース)があります。
いくつかの一般的には、3.1マイクロサービスアーキテクチャを備え
分析によると、マイクロサービスアーキテクチャのマーティン・ファウラーは、いくつかのあまり一般的な特徴を持っていますが、すべてではないマイクロサービスアーキテクチャのアプリケーションは、これらの機能のすべてを持っている必要があります。
- サービス実装コンポーネント(Componentizationviaサービス)の適用により:マイクロサービスフレームワークは、ソフトウェアコンポーネント単位が独立して置換されていると定義され、アップグレードされ、アプリケーションは、アプリケーション全体を切断することにより、マイクロアーキテクチャ設計独立展開およびアップグレードサービスモードに分けることができますコンポーネントの設計を行っています。
- サービスへの事業組織の能力(Organizedaroundビジネス機能)周り:、強い:マイクロサービスアーキテクチャの出発点組織のサービス戦略として運用能力を取るために、そのため、マイクロサービスチームの組織構造は、クロスファンクショナル(パイプ用途、またパイプデータベースの両方など)でなければなりません統合運用・保守チームの発展とDevOpsチームは、これらのチームは、通常、(: - なし以上12人、Amazonの「二つのpizzateam」など)が大きすぎるではありません。
- 製品ではなく、プロジェクトモード(Productsnotプロジェクト):伝統的なアプリケーションモデルは、操作および保守チームへの配達が完了した後、完全なアプリケーションの開発を開発するためのモデルプロジェクトチームでは、メンテナンスを担当し、チームは製品の開発などに責任を負わなければならないように、マイクロ・サービス・アーキテクチャを提唱しています「マイクロ・サービス」の完全なライフサイクル、運用・保守への統合的アプローチの開発「を運営、開発、」支持者。
- フラットパイプ(Smartendpoints及びダムパイプ)のインテリジェントエンドポイント:マイクロサービスアーキテクチャは、単純なようであるべきであるインテリジェント端末側ではなく、通信モジュール、通信機構または疎結合構成要素上のコンポーネント/アセンブリの間の関連するビジネスロジック通信を提唱し、 。RESTfulなHTTPプロトコル及び軽量非同期メッセージルーティング機構は、マイクロサービスアーキテクチャの機能のみ、最も一般的に使用される通信メカニズムを提供します。
- 「分散」管理(DecentralizedGovernance):モノリシックアプリケーションは、単一の技術プラットフォームを採用する傾向があり、マイクロサービスアーキテクチャは、そのタスクを完了するために適切なツールを使用することが推奨され、各マイクロサービスが完了するのに最適なツールを選択することが考えられる(例えば異なるなどプログラミング言語)。マイクロサービスのための技術基準は、他の開発者のために見える傾向に成功し、同様の問題を解決するための技術を確認しました。
- 「分散」データ管理(DecentralizedData管理):永続的なマイクロサービスアーキテクチャを提唱方法の多様性(PolyglotPersistence)、それぞれ独自のサービスデータベースをマイクロは、管理だからと異なるデータ永続化技術を使用して、異なるマイクロサービスを可能に。
- インフラ自動化(InfrastructureAutomation):クラウドの展開と自動化技術が大幅に継続的インテグレーションと連続配信方法を適用することによって難易度の導入と運用・保守は、市場の導入を促進する目的を達成するのを助けることができ、建物マイクロサービスを削減します。
- トラブルシューティングのデザイン(Designfor障害):マイクロサービスアーキテクチャによってもたらされた結果の一つは、各サービスの障害が発生したフォールトトレラントメカニズムが考慮されなければならないです。したがって、マイクロサービスは、リアルタイムの監視およびログ記録メカニズムのアーキテクチャとビジネス関連の評価指標の確立を重視します。
- 進化的設計(EvolutionaryDesignは):システムが経時変化と進化をカウントしていきますので、マイクロは、すぐに更新サービスアプリケーションにもっと注意を払います。マイクロサービスのデザインは、ビジネス機能やその他の要因のライフサイクルに影響を与えました。アプリケーションは、モノリシックアプリケーションが、次第にマイクロアーキテクチャのアプリケーションの方向に向かって進化したように、モノリシックなアプリケーションは、コアのままであるが、新しい機能がビルドにAPIを使用するアプリケーションによって提供されるであろう。別の例としては、マイクロサービスアプリケーションであり、代替の基本原則のモジュラー設計は、多くの場合、同時に更新されなければならない2つのマイクロサービスの実装後に、これはそれがマイクロサービスにマージする必要があることを意味する可能性があることがわかりました。
より多くの概念の明確化のいくつかについて:
-
同じ文脈での比較は意味があります:
SOA対1)マイクロ・サービス・アーキテクチャ-建築様式のカテゴリが、異なるの範囲を含む、気になる部分の両方。SOAは、より多くの企業規模の範囲を懸念している、マイクロサービスアーキテクチャは、より規模の適用範囲に関するものです。
2)マイクロ対サービスコンポーネントサービス・コンポーネント-管理の違い、柔軟性に加えて、その異なる粒子サイズを除いて、ビジネス機能の特定の実装に記載されている両方とも。 -
概念的混乱不適切な比較
SOA対1)マイクロサービス-不適切比較。SOAは建築様式である一方、マイクロ・サービスは、コンポーネントのカテゴリです。したがって、比較はマイクロサービスアーキテクチャとSOAであるべきです。
API対2)マイクロサービス-不適切比較。APIは、インターフェイスである公開されたビジネス機能のためのメカニズムです。マイクロサービスアーキテクチャは、ビジネス機能を実装するためのコンポーネントアーキテクチャです。従って、それらは、直接の比較は意味がないです。
サービス対3)マイクロサービス-不適切比較。異なるシナリオの下で、「サービス」は異なる意味を持って、それはさらにコンテキストのその説明を明確にする必要がある、それは、サービス実装、サービス露光、サービスの定義または他のことをいいますか?マイクロサービスも真で、比較が理にかなっているかどうかを決定する前に、特定のコンテキストを持っている必要があります。 -
マイクロサービスアーキテクチャおよびSOAアーキテクチャの比較
機能 | SOA | マイクロサービス |
---|---|---|
コンポーネントのサイズ | ビジネスロジックの大部分 | 個別のタスクや小規模ビジネスロジック |
カップリング | 通常、疎結合 | 常に疎結合 |
企業構造 | いずれのタイプ | クロスファンクショナルチームに焦点を当てた小型、 |
管理 | 中央管理に焦点を当て | 分散管理に焦点を当て |
目標 | アプリケーションが相互運用できることを確認します | 新機能の実装、開発チームの急速な拡大 |
IV。利点とマイクロサービスの欠点
4.1マイクロサービスの利点
- 各サービスは、ビジネス機能に焦点を当て、比較的簡単です。
- マイクロサービスアーキテクチャが緩く的に結合されて、より大きな柔軟性を提供することができます。
- マイクロサービスは、特定の問題を解決するために標的とすることができるさまざまなプログラミング言語やツールの最良かつ最も適切なを使用して開発することができます。
- 各マイクロサービスは、互いに独立して、市場へのスピードを加速する、異なるグループが独自に開発しました。
- マイクロ・サービス・アーキテクチャは、同時に頻繁にシステムの残りの可用性と安定性を維持するためにさまざまなサービスを公開できるように、持続可能な配信(CD)のための巨大な駆動力です。
4.2マイクロサービスの欠点
- 運用・保守費やコスト:マイクロサービスアーキテクチャは、独立したサービスのビルド/テスト/デプロイ/実行数十に必要になることがあり、複数の言語をサポートする必要があるかもしれないが、全体的なアプリケーションは、小規模なクラスタアプリケーションサービスエリアに展開することができますそして、環境。20マイクロサービスから構成される場合は単一システムにおけるこの結果は、40〜60の処理を必要とするかもしれません。
- 固体DevOpsチームの統合運用・保守技術の開発がなければなりません:操作と生産環境の整備に精通していることが開発の必要性、開発者にも採用をもたらすでしょう、など多くの希少強いスキルDevOpsチームを持っているのNoSQL、必要に応じてデータ・ストレージ・テクノロジーを持っている必要があります挑戦。
- 暗黙的なインターフェイスとインターフェイスマッチング:システムは、単純なクロスの変更は、多くのコンポーネント、およびリリースを調整する必要性を変更する必要があるかもしれないことを意味複数の成分に分割された後には、新しいインタフェースを有することになります。実環境では、新しいリリースは、統合ポイントの大幅な増加により、同時に多数のサービスをリリースすることを強制することができる、マイクロサービスアーキテクチャは、より高いリリースのリスクを持っています。
- 繰り返しコード:いくつかの基本的な機能は、「システムに接続された同期」を避けるために、複数のサービスで使用されるように、コードの重複につながるさまざまなサービスにいくつかのコードを追加することが必要な場合があります。
- 複雑な分散システム:分散システム、マイクロサービスを導入複雑さと、ネットワーク待ち時間、フォールトトレランス、信頼できないネットワークのメッセージシーケンス、非同期のメカニズム、バージョン管理などの他の問題の数として、分化作業負荷など、開発者は、分散システムの問題以上のものを検討する必要があります。
- 非同期メカニズム:クロスアプリケーションサービスマイクロトランザクション処理がある場合はマイクロサービスは非同期プログラミング、ニュースや並列処理を使用する傾向があり、その実装メカニズムは複雑になります。
- テストに挑戦することができます:サービスとの間の動的な環境との相互作用で、テストされ、完全に可視化し、することは困難である、非常に微妙な振る舞いを持つことになります。クラシックマイクロサービスがテストにあまり重点になる傾向があり、よりその後すぐにロールバックまたはその他の必要な措置をとる異常な生産環境を監視することである、と。しかし、特別な予防策は、特別なケアのリスクに対する重大な影響を与えることになる規制シナリオや生産環境のエラーを回避する必要があります。
4.3マイクロサービスアーキテクチャのトレードオフ
- 右プロジェクト、右のチームでは、マイクロサービスアーキテクチャの利点を使用することは、コストを上回るだろう。
- マイクロサービスアーキテクチャは、多くの魅力的な場所がありますが、以前のマイクロサービスを包含するようにするだけでなく、それがもたらす課題を認識する必要があります。
- 「マイクロ・サービス」とするために、回避する必要性「マイクロサービスを提供しています。」
- マイクロ・サービス・アーキテクチャ戦略の導入は - 伝統的な企業にとって、最初はマイクロの実装のためではなくオプトインよりも、既存のシステムや新しいマイクロサービスアプリケーションを変換し、徐々に蓄積されたマイクロサービスアーキテクチャを探求し、経験するマイクロサービスアーキテクチャの導入の原則の部分に適して考えてもよいですサービスアーキテクチャ。
リソース:
マイクロサービスアーキテクチャ():マイクロサービスは何である
マイクロサービスアーキテクチャ(2):零細企業統合サービスアーキテクチャの統合
マイクロサービスアーキテクチャ(III):マイクロサービス改造アプリケーションとIBMのソリューション
Microservicesは
マイクロサービスアーキテクチャは何ですか?