2016-05-16 6 views
2

分散システムには多数のマイクロサービスがありますが、そのうちの1つは、その境界にあるコンテキストをよりよく反映するように名前が変更され、同様に名前が付けられた別のサービスで曖昧さがなくなります。マイクロサービスの名前を変更しましたが、セマンティックバージョンではどうしますか?

名前を変更する時点で、サービスはバージョン3.1.0になりました。私の質問は、私は今バージョンで何をしていますか?それは4.0.0ですか?それとも、概念的には新しいサービスで、古いものを置き換えて1.0.0からやり直すのですか?

私は後者のオプションに傾いていますが、サービスと一致するようにdbスキーマもバージョン管理していますが、サービスが1.0.0でdbスキーマが3.1.0 ...

+1

サービスの名前はサービスのIDと同じですか?あなたの名前を変更した場合は、別の人ですか、同じ人ですか?あなたのアイデンティティがあなたの名前以上のものであるように、あなたのサービスのアイデンティティは単なる名前ではないということを私は提案します。 –

+0

私はあなたのポイントを見ます。消費者の視点から見れば、主要なバージョン変更のために何らかの作業をするのと同じように、新しい名前でサービスを利用するためにいくつかの作業を行う必要があります。 – MattDavey

+0

サービスの[tag:interface]の名前を変更したのか、それとも[tag:interface-implementation]の名前を変更したのかを明確にするのに役立ちます。 –

答えて

1

バージョン4.0にアップグレードする必要があります。アイデアはサービスの名前ではなく、その歴史と系統のヒントです。この例では、実行可能ファイルを呼び出すメソッドは変更されていますが、データベースの行はそのまま残り、以前のバージョンが存在した履歴を保持する必要があります。

メジャーバージョンをバンプすることは、すでにすべてのユーザーに互換性のない変更が発生したことを知らせるため、誰もこの新しい呼び出しバージョンを偶然選択することはありません。

他の人が議論に同意しなくてもコアの教義に従い続けるために、セマンティックバージョン管理は故意に指定されていません。つまり、セマンティックバージョニングは、を指定するだけで、はでなければならず、となります。

関連する問題