マイクロサービスの練習:マイクロサービスとは何ですか
マイクロサービス
マイクロサービスは、ソフトウェアアーキテクチャのスタイルで、単語がから来ているMartin Fowler氏 のブログ記事。彼は自身のブログでマイクロサービスを6つの特性を精緻化
- 小さなサービスのグループ。マイクロサービス提唱のほかに小型にモノマー単位サービスアプリケーションを。
- 運用能力に基づきます。このようなショッピングサイトとして、あなたは、サービス、商品およびサービスの受注、推奨サービスを持つことができます。
- マイクロサービスは、別のプロセスで実行されます。横プロセスを拡張するような技術は、現在の容器として、容器は、物理マシン上に展開することができます。
- 軽量の通信メカニズム。例えば、HTTPプロトコル&JSONメッセージフォーマット。
- 独立した展開。各チームは、独立して、独自のマイクロサービスを展開、それがシステム容量および反復的なビジネスサポート機能を改善するために、特別なチーム間の多くの調整を必要としません。
- いいえ集中管理ありません。オリジナルのアーキテクチャは、適切なテクノロジー・スタックとストレージを選択し、彼らの実際の状況に応じて、統一テクノロジー・スタック、ストレージ、マイクロサービスの請求各サービスを必要とします。
歴史のホイール
初期の頃
私たちは、次のようにその構造があり、ショッピングサイトや管理の背景を分離するために、セキュリティ上の理由から、オンラインスーパーマーケットビジネスのプロジェクトを開始しました:
コードがすぐに実行された後、クラウドサービスを展開するライン上の家を見つけ、自分で始めました。
スケール
規模の拡大した後、Webサイトに加えて、顧客チャネルを拡大するために、また、さらに携帯端末APP、小さなマイクロチャネルプログラムなどを開発し、そのようなので、上のプロモーション活動、精密マーケティング、などいくつかの新しいマーケティングツールを、追加しました。アップグレードされたインフラ、以下のように:
この段階では、多くの不合理があります。
- サイトと同じモバイルクライアントアプリケーションのビジネスロジックのコードの重複の多く。
- 時には、データベースによるデータは、時々インターフェースコール転送を通じて、共有することができます。雑然とインターフェイス呼び出し関係。
- 単一のアプリケーションロジックの数がそれに属していなければならない含む、より徐々に、他のアプリケーションに大きな変化をインタフェースを提供します。ファジー境界のアプリケーション、機能の混乱の所有権。
- デザインの初めに低いレベルを保護するために、管理の背景。他のアプリケーションに影響を与え、データ分析とキャンペーン管理に関連する機能を追加した後、パフォーマンスのボトルネック。
- データベースのテーブル構造は、複数のアプリケーションに依存している、それは再構築と最適化することはできません。
- データベース操作のすべてのアプリケーション、データベースのパフォーマンスのボトルネック。劇的に、データベースのパフォーマンスをデータ分析を実行している場合は特に。
- 開発、テスト、展開、より困難なメンテナンス。でもわずかな変更機能場合は、だけでなく、一緒に全体のアプリケーションを公開する必要があります。会議の後、時には誤っていくつかの未テストのコードを入れて、または機能を変更し、別の予想外のは間違っていました。リリースの影響と失速オンラインビジネスの可能性の影響を軽減するために、すべてのアプリケーションは、朝のリリースでは、3つまたは4つを実行する必要があります。正常な動作のアプリケーションを検証するリリースオーダーした後、ユーザーはその日の次のピークを凝視していた......
- チームは、バック・パッシング現象が現れます。共通の機能のいくつかについての質問は、アプリケーションは、多くの場合、長い時間のために主張する持っている上に構築する必要があり、単に最後またはすべて行う、またはだけの場所ではなく、メンテナンスを置きます。
変更を行います
プログラミングの世界では、最も重要なのは、ビジネス・ロジックによって整理、抽象的に能力がある、初期の抽象的公共サービス能力は、いくつかの公共サービスを作りました。次のように必要なデータを得るために、様々なアプリケーションからわずかこれらのサービスは、このように削除された冗長コードの数が多い、避妊層と薄いフロントエンドを与え、この段階の構造は以下の通りであります:
この段階ではまだ多くの欠点があります。
- データベースのパフォーマンスのボトルネック、および単一障害点のリスクがあります。
- データ管理の混乱を傾向があり、サービスがあるかもしれない現象のデータベースから直接、別のサービスデータを呼び出します。
- データベースのテーブル構造は確かに、サービスの詳細依存する身体全体に影響を与える可能性があり、調整することは困難です。
データベース、互いから分離されたすべての永続化層、個々のサービスの責任を分割するために後で、ビッグバン、。また、リアルタイム性を向上させるために、メッセージキュー機構を追加します。
各サービスは、完全に異質な技術の採用を分割することができた後。そのようなデータ分析サービスとして効率的にいくつかの統計的な計算を行うためには、永続層としてデータウェアハウスを使用することができ、商品やサービスやプロモーションサービスアクセス頻度が比較的大きいので、キャッシング機構に加わりました。
熟女