続行する パラダイムと作業方法の進化と変化の問題 ソフトウェア開発分野のイベント。最近、 という記事で触れました。 「ソフトウェア開発: 現在までの歴史を概観する」, 「クラウドを介した相互運用性: それを実現するにはどうすればよいですか?」 y 「XaaS: クラウド コンピューティング – すべてをサービスとして」今日は、 マイクロサービス.
マイクロサービスは最新のソフトウェア アーキテクチャですは、インストールして使用できる API (アプリケーション プログラミング インターフェイス) やテクノロジそのものではありません。 ソフトウェア パターンとしても知られるソフトウェア アーキテクチャは、テクノロジーの動作方法を確立するだけであり、実装方法を確立するものではないため、プログラミング言語とはまったく無縁です。
はじめに
マイクロサービスは、SOA アーキテクチャ (サービス指向アーキテクチャ) の進化とみなすことができます。これは、一部のハードウェアの使用を最適化する場合と同様の方法で行うのと同じように、機能的かつ自律的で、効率的な方法で再利用できる大容量のモジュール型アプリケーションを開発者が作成できるようにガイドします。必要性をまったく持たずにその可能性を最大限に活用するのではなく、本当に必要な機能が配備されます。
マイクロサービス アーキテクチャ、実際には理論ほど普及していません。 それは使われているというよりもよく知られている。 ただし、これはソフトウェア開発モデルであるため、実装する開発者が増えています。 適用されるプロジェクト内の変数の時間、パフォーマンス、安定性が向上します。 その上、彼の 関連するスケーラビリティが容易 これは、クロスプラットフォーム互換性 (Web、モバイル、ウェアラブル、IoT) が不可欠な開発に特に適しています。
しかし 一方、SOA はより高いレベルのアーキテクチャですつまり、アプリケーションがサービスに基づいて構築されるアーキテクチャであり、サービスは、作成されたアプリケーション内の最小かつ最も機能的な作業単位です。 マイクロサービスアーキテクチャ また サービスを作成できるようになります、しかし、これらのサービスは設計されています 非常に小さく具体的な方法で そのため、非常に正確で時間厳守の機能を果たします。これにより、アプリケーションの残りの部分から切り離され、作成されたアプリケーションの残りの部分から完全に自律的に機能できるようになります。
ソフトウェア アーキテクチャ (パターン) とは何ですか?
マイクロサービス ソフトウェア アーキテクチャをよく理解するには、最もよく知られている既存のソフトウェア アーキテクチャすべてについて少し知っておくとよいでしょう。 のサイトで見ることができるように、多くの既存のものがあります。 ああデザイン または単に Wikipediaという有名な本によると、 『パターンデザインブック』(デザインパターンブック) 既存のパターンは次のように分類できます。
創造的な
オブジェクトのインスタンス化方法を扱い、その目的はインスタンス化プロセスを抽象化し、オブジェクトの作成または初期化方法の詳細を隠すことです。 このクラスには次のものがあります。
- 抽象ファクトリ
- ビルダー
- ファクトリーメソッド
- 試作
- シングルトン
構造
クラスとオブジェクト (単純または複合) を組み合わせてより大きな構造を形成し、新しい機能を提供する方法を説明するもの。 このクラスには次のものがあります。
- アダプタ
- ブリッジ
- 複合
- デコレータ
- ファサード
- フライ級
- プロキシ
ふるまい
システムのオブジェクト間の通信と反復を定義するのに役立つもの。 このパターンの目的は、オブジェクト間の結合を減らすことです。 このクラスには次のものがあります。
- 責任の連鎖
- Command
- 通訳
- イテレータ
- 仲介者
- 形見
- オブザーバー
- 都道府県
- 戦略
- テンプレートメソッド
- ビジター
その他
以前の設計パターンは、ソフトウェア システムを構築するための設計構造を定義するスキーマを表現していました。 しかし、作成されたソフトウェア システムの基本的な組織的および構造的なスキームをより適切に表現したい場合は、通常、次のような別の分類が見つかります。
- 黒板の建築
- DAO: データ アクセス オブジェクト
- DTO: データ転送オブジェクト
- EDA: イベント駆動型アーキテクチャ
- 暗黙的な呼び出し
- 裸の物体
- 階層型プログラミング
- ピアツーピア
- パイプライン
- SOA: サービス指向アーキテクチャ
- XNUMXつのレベル
もあります 「モデルビューコントローラー」 これはよく知られており使用されており、次のように分類されます。
- モデル/ビュー/コントローラー
- モデル/ビュー/プレゼンター
- モデルレンダラーによるモデル/ビュー/レンダラー
- モデル/ビュー/ビュー-モデル
- パッシブ ビューのモデル/ビュー/プレゼンター
- 監視コントローラーを備えたモデル/ビュー/プレゼンター
あること 「ビュー コントローラー モデル」は、現在実装されている最もよく知られているモデルの XNUMX つです。企業アプリケーションに必要な機能を提供するには不十分であり、これが主な理由の XNUMX つです。 マイクロサービス アーキテクチャは、Model-View-Controller (MVC) アーキテクチャを置き換えています。
マイクロサービス アーキテクチャの利点
Web プラットフォームでマイクロサービス アーキテクチャを利用すると、通常、次のような利点があります。
- 解きます 特定の状況に関係するそれぞれの小さなマイクロサービスに対処することで、発生する不都合や問題を簡単に解決できます。
- 和らげる サービスの一般的またはグローバルな障害。マイクロサービスが障害を起こしても、それらは完全に独立しているため、他のサービスには影響しません。
- 緩和するには 各マイクロサービスは個別かつ段階的に追加または削除、更新できるため、完全または特定の機能またはサービスの起動と組み込みが可能になります。
- 良くなって あらゆる種類のデバイスやプラットフォームから作成されたアプリケーションやサービスにアクセスできます。
- 増やす マイクロサービスはさまざまなサーバーに分散でき、さまざまな言語で作成できるため、プラットフォームの多様性が高まります。
オープンソースフレームワーク
多くのがあります オープンソースのオプション ソフトウェア開発者はこれを使用して、マイクロサービス アーキテクチャの一部であるソリューションを開発できます。 このために広く使用されているテクノロジである Java については、具体的には次のようなものがあります。
- クリケット
- ドロップウィザード
- Eclipse マイクロプロファイル
- ヘリドン
- ジャージー
- パヤラマイクロ
- プレイ
- レストレット
- スパーク
- 春のブーツ
- スカッシュ
- スワガー
- テレプレゼンス
- ワイルドフライソーンテイル
- ジプキン
マイクロサービス アーキテクチャを使用した Web の例
大規模なアプリケーション サービスを提供し、サービスと製品プラットフォームのメンテナンスとスケーラビリティを向上させ、シンプル、効果的、高速にするためにマイクロサービス アーキテクチャを段階的に実装している多数の Web サイトの中で、業界の優れた Web サイトを XNUMX つ挙げることができます。彼らは何ですか:
- Amazon
- イーベイ
- Netflix
結論
は明らかです マイクロサービスは現代の Web ベースのソフトウェア開発に多くのことをもたらしますしかし、それらは解決すべき多くの新しい課題に取り組むことも意味します。 問題は、フレームワークの学習と効率的な作業だけでなく、これらの新しい開発がどのように補完され、IT 部門で実装されるか、つまり最終的にフレームワークをオンラインにして管理し、最終決定で重要な投票を行うのは IT 部門に関係する問題です。それぞれの開発における決定。 しかし このアーキテクチャはここにあり、長い間存在し続けています。