2016-09-14 34 views
4

ランタイム中の同じサービスの複数のバージョンの展開をサポートし、消費者が異なるバージョンを使用する方法について、マイクロサービスベースのアーキテクチャのバージョン管理に最適な方法は何ですか? 1)のいずれかの方法がhere を述べたように、我々はルーティングベースのバージョンを使用している場合は、私たちは内部サービスは、消費のためにリバースプロキシを通過する必要が次のような欠点マイクロサービスのバージョン管理

  1. を持っているでしょうね。
  2. 消費者は、常に必要なバージョン管理を意識する必要があります。

バージョン情報をコンシューマに公開することをお勧めしますか?いずれの場合においても

は、私が感じるように、次は常に適用されます。

  1. MAJORバージョン変更のために、消費者が変更しなければなりません。
  2. MINORバージョンの変更(下位互換性)では、追加された機能を必要とするコンシューマのみを変更する必要があります。
  3. PATCHのバージョンを変更するには、オプションで、消費者がそれを利用するためにはシームレスである可能性があります。

上記を有効にする際に、どのようなマイクロサービスのバージョン管理戦略が役立つのですか?

注 - 複数の質問で分割する必要がある場合は、お気軽にお知らせください。

答えて

0

ベストプラクティスはありません。特定のケースでバージョン管理がどのように機能するかによって異なります。

Shawn Wildermuthは、pluralsight videoでapiバージョン管理について説明しました。マイクロサービス実装の詳細については不明ですが、残りのAPIを使用している場合は、実際のペイロードのバージョン管理を試してみてください。

また、Acceptヘッダーでこれを行うこともできます。 Acceptを使用すると、 のAccept Typeヘッダーに、 のAPIに対応するバージョンタイプの注釈を付けることができます。また、コンテンツタイプでもこれを行うことができます。 ベンダのapplication/vndは、返される データのバージョンを指定します。アプリケーションがそれを送信すると、それはペイロードのバージョン のバージョンであることがわかります。これは、API、実際のURI 呼び出し、および戻ってくるデータの形状の両方をバージョンする必要があるため、 のバージョン管理では重要な技術です。

環境内やお客様とユーザーとの間でうまく機能するメカニズムが見つかった場合は、それを使用してください。私は私のmicroserviceのプロジェクトで使用

0

Microserviceベースのアーキテクチャではバージョン管理に適応するためのベストプラクティスは何ですか

一つstartegyは、ルーティングを通じて版にあります。

JSON RPC 2を使用します。0なので、RESTと少し違っていますが、適用することができます。

重要なバージョン管理のみを使用し、古いバージョンと新しいバージョンを同時に使用して、消費者に更新する時間を与えます。

観光情報(あなたには、いくつかのモデルの更新を持っている場合は管理するために本当にハード)生産でのサービス以上の2つのバージョンを持つ

  • 回避の世話をします。

  • 使用しているバージョンが推奨されていないことを消費者に知らせる方法を見つけます。

私はいくつかのmicroserviceアーキテクチャは、バージョン管理なしに住んでいることを知っているが、それは私がこのアプローチをrecommandないかもしれないので、あなたは、消費者と生産者の間に強い結合を有することを意味します。

は、2番目の質問の消費者は、異なるバージョンを使用することができるだろうか

に答えるために?

消費者は一度に1つのバージョンのみを使用する必要があるため、聞こえません。

バージョンが実行時に使用できることを知りたければ、機能の反転とサービスディスカバリを実行することができます。

ルートxが存在する場合、消費者は定期的にサービスディスカバリーを求めます。 trueの場合は機能を使用し、そうでない場合は現在のバージョンを使用します。それはうまくいくかもしれませんが、それはちょっと扱いにくいです。

0

あなたはミックスと異なるstretagies

主はあなたが

アダプタベースのバージョンを使用することができ、他のためにルーティングベースのバージョン

を使用することができます変更するための一致することができます

関連する問題