Eu sei que é uma pergunta ampla, então tentarei ser o mais específico possível. Esta questão é mais uma questão "organizacional" do que técnica.
Temos um projeto de vários lados com estes componentes principais:
- Um servidor que hospeda a lógica comercial principal (modelos de dados)
- Um backoffice para clientes que usa a lógica de negócios principal
- Uma API de aplicativo (REST) que também usa a lógica de negócios principal
- Existem aplicativos para smartphone (iOS e android) usando a API do aplicativo
- Há outro aplicativo para tablet (android) diferente do smartphone, que usa a mesma API do aplicativo.
Em breve, estarei em produção com clientes ativos. E, como em qualquer projeto, precisarei manter todos os diferentes componentes ao longo do tempo. Isso significa que todos os itens a seguir podem ser atualizados:
- o código da lógica de negócios principal no servidor (usado pelo back-office, pela API e, como efeito colateral, pelos aplicativos móveis)
- a própria API (usada pelos aplicativos para smartphone e tablet)
- todos os aplicativos móveis (via appstore / googleplay)
Obviamente, as partes do servidor (código da lógica de negócios principal e código da API) podem ser alteradas imediatamente por mim. No entanto, os novos aplicativos móveis devem ser baixados pelos clientes na appstore / googleplay, e não tenho certeza se eles estão atualizados.
Você poderia fornecer alguma orientação, dicas de boas práticas, para tornar essas atualizações suaves e sem riscos para o cliente?
Qual componente eu preciso "versão"? Como garantir que tudo funcione mesmo que o cliente não atualize seu aplicativo móvel? Devo forçá-lo a atualizar para facilitar meu trabalho?
Em uma palavra, como devo me organizar para fazer meu projeto de várias faces viver com o tempo?