Temos um site baseado no Django para o qual desejamos tornar parte do conteúdo (texto e lógica de negócios, como planos de preços) facilmente editáveis internamente e, por isso, decidimos armazená-lo fora da base de código. Geralmente, o motivo é um dos seguintes:
É algo que pessoas não técnicas desejam editar. Um exemplo é o copywriting para um site - os programadores preparam um modelo com texto cujo padrão é "Lorem ipsum ..." e o conteúdo real é inserido posteriormente no banco de dados.
É algo que queremos mudar rapidamente, sem a necessidade de implantar um novo código (o que atualmente fazemos duas vezes por semana). Um exemplo seria os recursos atualmente disponíveis para os clientes em diferentes níveis de preços. Em vez de codificá-los, nós os lemos do banco de dados.
A solução descrita é flexível, mas há algumas razões pelas quais eu não gosto.
Como o conteúdo precisa ser lido no banco de dados, há uma sobrecarga de desempenho .
Atenuamos isso usando um esquema de cache, mas isso também adiciona alguma complexidade ao sistema.
Os desenvolvedores que executam o código localmente veem o sistema em um estado significativamente diferente em comparação à forma como ele é executado na produção. Testes automatizados também exercitam o sistema em um estado diferente. Situações como testar novos recursos em um servidor de temporariedade também ficam mais complicadas - se o servidor de temporariedade não tiver uma cópia recente do banco de dados, poderá ser inesperadamente diferente da produção.
Poderíamos atenuar isso comprometendo o novo estado ao repositório ocasionalmente (por exemplo, adicionando migrações de dados), mas parece uma abordagem errada. É isso?
Alguma idéia de como melhor resolver esses problemas? Existe uma abordagem melhor para lidar com o conteúdo que estou ignorando?