第12章まとめ

 
マイクロサービスの12.1原則
 
私たちは、第2章で議論し、どのような役割マイクロサービスの原則は、再生します。彼らは主に何をすべきかを説明し、なぜ質問はそうすべきです。これらの原則は、システムを構築する際の意思決定のすべての種類を作るために私たちを助けることができます。あなたは絶対に自分の原則を定義する必要がありますが、図12-1にまとめたマイクロサービスの主要な原則のいくつかは、私はヤンはここに述べ価値があると思います。これらの原則は、私たちはうまく自治の仕事かもしれ小さな一連のサービスを作成するのに役立ちます。これまでのところ、何も新しい章私たちは、少なくとも本に一度言及したマイクロサービスのすべての内容が、精錬自社のコアエッセンスも貴重です。二:;
 
あなたはこれらの原則を使用してすべてを選択するか、組織のその部分に意味のあるものを使用してカスタマイズすることができます。ノートは、しかし、これらの原理の組み合わせの値:値は、使用する合計の一部の全体的な使用よりも大きいです。あなたが原則の一つを放棄することを決定したのであれば、あなたは彼らの損失をもたらし理解させます。
 
各原則のために、私はこの本の中で試してみて、それらをサポートするいくつかのプラクティスです。言うように行く:すべての道はローマに通ず。あなたはこれらの原則を達成するために独自の方法を使用することができるが、以下のとおり、実際にあなたに良いスタートをもたらすことができます。
図12-1:マイクロサービスの原則
モデリング事業のコンセプトの周り12.1.1
 
経験は、ビジネス・コンテキスト定義の周りの境界インターフェイスは、技術の周りの概念のインタフェース定義よりも安定であることが示されています。システムはこの領域でどのように機能するかのモデルには、だけでなく、より安定した界面を形成するために、だけでなく、我々は、ビジネスプロセスの変化を反映しやすくなりますことを確認するために私たちを助けることができます。使用囲まれた領域は、コンテキストの境界を画定することができます。
 
自動化された文化の12.1.2受け入れ
 
マイクロサービスは、重要な部分は、我々は多数のサービスを管理しなければならないということである多くの複雑さを、ご紹介します。この問題を解決するための主要な方法は、オートメーション・文化を受け入れることです。初期の理にかなって、ビルドのサポートマイクロサービスツールにはいくつかのコストを費やしています。モノリシックシステムと比較して自動テストは、我々はサービスの多くは、より複雑なプロセスである仕事ができることを保証するために、必要不可欠です。各高速フィードバックの重要な一部であることにコミットした後、製品品質の継続的デリバリーの使用であり、それぞれの環境は非常に便利である実践にシステムを展開するのと同じ方法で、統一されたコマンドラインを呼び出します。
 
展開する統一された方法を使用する能力を維持しながら、あなたは明らかに異なる環境間の違いを定義するのに環境を使用することを検討してください。展開をスピードアップするためにカスタムイメージを作成することを検討し、完全に自動化されたサーバーの不変を作成し、それがシステム自体の容易な位置付けになります。
 
12.1.3内部非表示の実装の詳細
 
他のサービスのサービスに依存しないためには、独自の進化を最大限にする能力、実装の詳細を隠蔽するには、ジェンをシャットダウンします。それは私たちが共有する必要があるとその隠されるべきかのモデルに焦点を当てることができますので、有界コンテキストモデリングは、この点で助けることができます。サービスも一緒に鍋の1種類の伝統的なサービス指向アーキテクチャーで最も一般的であり、データベースの結合、に陥る避けるために、自分のデータベースを隠す必要があります。データ・ポンプ(データポンプ)ポンプまたはイベントデータ(イベントデータポンプ)は、レポートの機能を実現するために一緒に複数のサービス間でデータを統合します。
 
可能で、あなたに別のテクノロジ・スタックを使用することを選択する自由を可能にする、独立した技術APIを選択してみてください。RESTを使用することを検討してください、それはRPCを使用した場合でも、あなたはまだ、これらのアイデアを使用することができ、実装の詳細を分離する内部および外部の標準的な方法になります。
 
12.1。レッツ・ゴーすべての集中管理へ
 
もたらすことができるマイクロサービスの自律性を最大化するために、我々は意思決定と制御を委任したチームに奉仕する機会を探し続けする必要があります。可能な限り、このプロセスの最初では、これらの事を行うには、人々は、ソフトウェア、開発、できるだけ単純にテストの導入を要求することを可能にするリソースのセルフサービスを使用して、別々のチームを避けるようにしてください。
 
この旅では、チームはサービスの所有権は、理想的に、重要なステップである、あるいはチームがときに、ライン上でそれらの変更を行うことが決定できるように保つことを確認してください。内部で使用するオープンソースモデルは、人々がこのモデルを実現するために、以下のことを他のチームが持っているサービスを変更、しかし、注意してくださいできることを確保することが、多くの作業が必要です。チームや組織一貫したのでコンウェイの法則が働くことを、してみましょう、と助けチームは、彼らがそのビルド事業分野の専門家になるように、ビジネス指向のサービスを構築しています。一部のグローバルガイダンスが必要である、共有のガバナンスモデルを使用しようとするので、技術ビジョンシステムの共進化を担当するチームの各メンバー。
 
エンタープライズ・サービス・バスまたはサービス・デリバリー・システムのようなこのような方式は、あなたがそれらを使用しないでください、ビジネスサービスセンターのロジックとダムをリードします。代わりに、サービス区切り内のそのデータと関連するロジック、凝集を確実にするために、インテリジェント(スマートエンドポイント)を使用して、相乗的オーケストレーションまたはダミーミドルウェア、エンドポイントを使用してのサービスを維持します。
 
12.1.5独立して展開することができます
 
我々は常にマイクロサービスは独立して展開することができることを保証するために努力すべきです。あなたがする必要がある場合でも、互換性の変更はありませんが、我々はまた、消費者が徐々に新バージョンに移行することができ、新旧両方のバージョンを提供する必要があります。これは、新機能の放出速度を加速するために私たちを助けることができます。これらのマイクロサービスチームを持っている彼らが展開プロセスの割り当てを行うことを続行する必要はありませんので、我々は、より多くの自律性を持つことができます。統合RPCベースを使用する場合は、javaRMIのようなその杭の使用を避けることが強固に結合技術クライアント/サーバー、コード生成を使用して提供しました。
 
単一のサービスの単一ホストモードを使用することにより、あなたは、このような別の完全に無関係なサービスの影響として、サービスによって引き起こされる副作用を軽減するために展開することができます。青/緑またはカナリア展開技術の導入、展開、およびリリースは、エラーの解除の危険性を減らす区別使用することを検討してください。消費者主導契約テストの使用は、破壊的な変化の前にそれらをキャプチャします。
 
その後、他のサービスの展開へのリンクせずに本番環境にデプロイする、これが当たり前ではなく、例外である必要があり、あなたが単一のサービスを変更することができ、覚えておいてください。あなたの消費者は、更新に、あなたがそれらに適応する必要がある場合に決定する必要があります。
 
12.1.6分離失敗
 
マイクロサービスアーキテクチャでは、我々はシステムの故障モードを理解し、それに応じて計画することを提供し、モノリシック構造よりも柔軟にすることができます。私たちは、下流の呼び出しが失敗する可能性があるという事実を考慮していない場合、システムは、システムがこれまで以上に脆弱になり、壊滅的なカスケード故障を被るだろう。
ときにネットワーク呼び出しは、それが別の故障モードを隠しているため、リモート呼び出しを扱うローカル呼び出しとして使うことが好きではありません。だから、オーバー抽象化なし長距離通話、クライアントライブラリを使用してください。
 
私たちの心は、抗脆弱な信条を保持する場合は、予想される障害は、我々は正しい軌道に乗っているかを示し、どこかの街で起こります。いつ、どのように障害のあるコンポーネントを制限するために、ノックオン効果隔壁と回路ブレーカを使用することを理解するために、あなたのタイムアウトを設定してください。システムの場合は一部だけで、ユーザーへの影響を理解するために、通常の動作ではありません。あなたは、ネットワークパーティションが特定のケースではと可用性や一貫性は正しい決断だったかどうかを犠牲を意味するかもしれないものを知っています。
 
12.1.7高さを観察することができます
 
私たちは、システムが正常に機能しているかどうかを確認するために、単一のサービスインスタンスの観察、またはサーバーの動作に依存することはできません。代わりに、我々は全体として何が起こっているかを調べる必要があります。お使いのシステムに統合トランザクションを注入することにより、システムが正常に機能しているかどうかを確認するために、セマンティック監視を使用するために、実際のユーザーの行動をシミュレートします。あなたは問題が発生したときシンジケートあなたのログおよびデータは、そう、あなたはさらにその理由を分析することが可能となります。あなたは迷惑な問題を再現するために、あるいは単に本番環境でお使いのシステムが対話型であるかを確認する必要があるときに、あなたはあなたのコールトラッキングシステムとの間の関連性を特定するのに役立ちます。
 
12.2ときあなたはマイクロサービスを使用しないでください
 
私はこの質問を何度尋ねてきました。アドバイスの私の最初の作品は、より多くのあなたは、難しく、それをサービスのための右のコンテキストを見つける囲まれた領域を知らないということです。我々は先に述べたように、サービスを頻繁に変更する必要があるとの間でサービス部門のエラーの境界は、コラボレーションにつながる可能性があり、この変更は高価です。あなたはフィールドには、1つのブロックシステムを理解していないのであれば、その後、サービスの分割前、最初にすることは、システムがやっていることを理解して、明確な境界モジュールを特定しようとするいくつかの時間を費やすことです。
 
ゼロから開発も非常に困難です。そのドメインは新しいものかもしれないので、だけでなく、ために、物事の既存の分類だけでなく、はるかに簡単に分類するよりも、存在しない事!このように、分割が再び安定したら、再びシステムは最初、モノリシックを構築することを検討してください。
 
ときにマイクロスケールのサービスを、あなたはより深刻になるだろう直面している課題の多く。あなたは主に物事を行うには、手動の方法を使用している場合、それは5-10サービスであれば、時に1つまたは2つのサービス、に対処する必要ができますか?CPUやメモリの指標を表示するには、この方法のように、監視の古い習慣、大丈夫、しかし、唯一のいくつかのサービス、あなたはより多くの痛みを伴うことになるサービスの中でより多くのコラボレーションに準拠しています。より多くのサービスの増加に伴い、あなたは一定のタッチでこれらの痛みのポイントを自分自身を見つけるでしょう。私はあなたがこれらの問題のいくつかを予測し、これらの問題を解決する方法についていくつかの特定のヒントを理解するのを助けることができるこの本の提案を願っています。私が前に言ったように、REAとギルトは前にマイクロのサービスの大規模な使用する能力を持っている、それが助けマイクロ管理サービスへのすべてのコンフィギュレーション・ツールや慣行にいくつかの時間がかかりました。これらの経験は、私はもっと緩やかなスタートの重要性を確信作られ、それはあなたが意欲と正しいマイクロサービスを支援する組織変更の能力を理解するのに役立ちます。
 
12.3別れの言葉
 
マイクロサービスアーキテクチャを使用すると、また、より多くの意思決定を行う必要がある、あなたに多くの選択肢を提供します。シンプルなシングルピースシステムと比較すると、ミクロの世界でのサービスでは、意思決定を行うことは、より一般的な活動です。私はあなたが常に意思決定にいくつかのミスであることを保証することができます。今、あなたが知っていることを、私たちは必然的にそれを行う方法を、その後、何かが間違っをしますか?ああ、私はあなたがそれぞれの意思決定の範囲を狭めることを試みることをお勧め。その結果、完了間違っている場合は、それだけでシステムの小さな部分に影響を与えます。進化のアーキテクチャの概念を受け入れることを学びなさい。あなたが何か新しいことを学ぶの後にこの概念では、システムは拡張し、変更します。これは、システムの柔軟性を保つことができ、徐々にシステムへの一連の変更を行って、ビッグバンの書き換えを考えると、時間をかけて、それを交換しないでください。
 
希望はこれまでのところ、私はあなたがマイクロサービスがあなたのために右である決定に役立つ共有知識と経験を十二分あなたを与えるでしょう。あなたのためのマイクロサービスならば、私はあなたが旅ではなく、宛先としてそれを参照してください願っています。ステップバイステップ前進。お使いのシステムを分割し、徐々に学ぶためにブロック。これに慣れる:多くの点では、絶えず変化し、システムを進化、この本の中で私のシェアよりも、このルールが重要であることをあなたに知識を与えます。変更は、今、それを受け入れる、避けられません!
 

おすすめ

転載: www.cnblogs.com/mongotea/p/11992125.html