2017-11-06 10 views
2

は、私は私が見つけた(今まで)スーザン・ファウラー氏の著書「生産準備microservices」を読んで、二つの場所でのバージョン管理Microservicesは、ベストプラクティス

  • (26ページ)、「バージョニングMicroservicesとエンドポイントを避ける」、
  • 」とにかくバージョニングmicroservicesが簡単にmicroservice生態系で
  • は、microservicesのバージョン管理が推奨され、組織の悪夢」(27ページ)になることができます(58ページ)

、私が使用しgitタグ、debパッケージのバージョン管理、pythonパッケージのバージョン管理、http apiのバージョンなど、すべての種類のさまざまなバージョンのバージョン管理を行っていました。プロジェクトのバージョン管理に大きな問題はありませんでした。これに加えて、私はいくつかの失敗やバグがあった場合に、どのバージョンをリリースするかを正確に知っていました。

誰にも、この本ではマイクロサービスのバージョン管理が非常に非難されていて、そのトピックに関するアドバイスはありますか?

答えて

0

本の著者は、APIのバージョンを更新することが難しいという点で、特に人気がある場合は特に正しいです。これは、古いバージョンのすべてのユーザーを検索してアップグレードするか、または同時に2つのバージョンのソフトウェアをサポートする必要があるためです。

でも、APIのIMHOはバージョンアップする必要があります。 APIバージョンを決して変更しないでください。 APIでバージョンをサポートする必要があるのは、いつ変更する必要があるかわからないからです。だからバージョンを追加するが、すべての変更を避ける必要があります。多くの場合、現在のバージョン契約を破らない方法で、新しいAPIを使用するか、既存のAPIを拡張する方が簡単です。

今後、新しい技術やデザインパターンがいつ現実化されるのかわからないので、1つのAPIの2つのバージョンが非常に上品な方法で同じソフトウェアインスタンスに簡単に存在することができます。このようなことが起こった場合、APIのバージョンの変更が増えることがあります。

+0

Afaikは、すべての主要ベンダー(Google、Facebook、Twitter、アマゾン)がAPIにかなり人気のあるapisとバージョンを持っています。私はまだそれが反パターンである理由を理解していません。彼女が「私たちの組織は面倒ではない、あるいは役に立たない」と言うかどうかはわかりますが、反パターンはまったく異なります。あなたのマイクロサービスアーキテクチャはどのようなものですか?バージョンはありますか? –

+0

バージョン管理は反パターンではないため、バージョンを変更することはできません。彼女が見たのは、バージョンの変更が反パターンの場合、バージョン管理を削除して問題を解決できるということです。このようなことの多くは意見です。あなたの腸に行って、それが問題につながるならば、それに対処してください。私は今あなたが十分なアドバイスを集めていて、話題についてよく読んでいると思います。 –

1

は彼女がサービスの名前にバージョンを組み込むことについて、またはエンドポイントの名前に話していなかったことをあなたはよろしいですか? バージョン管理されたget_order_2_4_1のエンドポイントを持つOrderProcessing_2_4_1というサービスは非常に悪い考えです。バージョン管理されたget_order_2_4のエンドポイントを持つOrderProcessing_2_4は少し悪くはありませんが、まだ問題があります。

マイクロサービスへの呼び出しで名前にバージョン番号を持つエンドポイントを指定する必要がある場合は、サービスを変更するたびにメンテナンス(および制作)の悪夢があります。他のすべてのサービスとクライアントは、更新されたサービスへの参照を変更するためにチェックする必要があります。

これは、APIのコード、コードサービスと異なる点です。実際にマイクロサービスの利点の多くを得ようとしている場合は、これらが必要です。

お客様のオーケストレーション機能は、クライアントのバージョン要件(バージョン2.6.2のクライアント「Enter New Order」アプリケーションは、少なくとも「バージョン2.4」以上のサービス「OrderProcessing」を必要とします)に合った正しいバージョンのサービスを見つけることができなければなりません。 NATO製品分類をサポートするために0)。

同時に複数のバージョンのサービスを運用することがあります(2.4.0は廃止されましたが、依然として一部のクライアントに対応しています。2.4.1が導入されています。GAの前に最新のUIと機能をテストしている顧客の場合は0です)。

これは、24時間365日実行し、サービスを動的に更新する必要がある場合に特に当てはまります。 オーケストレーション機能は、サービスとエンドポイントが一致する場所で、新しいバージョンのサービスを導入するときには、オーケストレーションデータベースを更新して、必要な他のサービスのバージョンを記述します。 (OrderProcessingの私の新しいバージョン2.4.1では、製品データにNATO製品分類が追加されたため、バージョン2.2.0以降のProductManagerが必要です)。

関連する問題