Primavera Bota Microservice API Versioning Implementação

user3495691:

Há uma necessidade de modificar o contrato existente (cargas de pedido / resposta), de uma bota Microservice Spring, que são essencialmente quebrando alterações (não compatível com versões anteriores). E é essencial para apoiar ambas as versões do contrato até algum tempo - até o momento todos os clientes atualizações-se à versão mais recente.

A fim de alcançar este objectivo, foi decidido usar URL versionamento estratégia (como / v1 / {recurso} e / v2 / {recurso}).

Agora, a pergunta é qual é a melhor maneira de implementar isso no código? Abaixo estão as duas soluções propostas

  1. Separando a uma versão ( / v1 código) e mantê-lo separadamente até que esta versão é suportada. Este significa essencialmente que cortam o ramo de mestre e compilação / implantação deste ramo e manter duas instâncias do mesmo serviço cada apoio v1 e v2 versões respectivamente.

  2. No mesmo branch master, introduzir um pacote separado (como service.api.v2.request ) e colocar todas as classes o pedido api payload / resposta lá e introduzir um novo controlador de ponto de extremidade para apoio ( / v2 ). Esta abordagem permite que uma única instância para apoiar tanto as versões.

Qual dos acima é uma abordagem melhor? Ou há qualquer padrão outros / as melhores alternativas para conseguir isso? Does Primavera Bota fornece qualquer fora do suporte caixa para tais necessidades?

Chris:

Depende de quanto comunalidade existe por trás do controlador. Se as versões são significativamente diferentes por todo o caminho até o final de volta, então talvez diferentes ramos são mais fáceis de trabalhar, mas se as principais diferenças estão nos caminhos do controlador e a entrada e saída objetos envolvidos em tais métodos, em seguida, 2 ramos, provavelmente, levar à dor de aplicar as alterações para ambos, e lembrando-se de fazê-lo cada vez - é o tipo de situação em que, mais cedo ou mais tarde, uma correção importante vai ser desperdiçada.

É tudo um equilíbrio, e você precisa pesar o custo de manutenção das abordagens no seu caso em termos de tempo e esforço, e também o risco de erros, bem como o custo de implementações separadas.

Acho que você gosta

Origin http://10.200.1.11:23101/article/api/json?id=400964&siteId=1
Recomendado
Clasificación