Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa Tarde!
Estou iniciando uma evolução de uma aplicação que está em uso por algumas empresas, e me deparei com uma questão que não tinha enfrentado anteriormente.
Primeiramente vou explicar o novo projeto (Estruturalmente diferente do atual) para que alguém possa me auxiliar da melhor maneira possível.
O Projeto em base é uma aplicação para gerenciamento de um setor empresarial.
A Ideia primária é disponibilizar para um maior número de empresas o sistema online, tendo isto em mente, criei uma arquitetura básica sendo totalmente customizado pelo usuário.
Ele vai contar com módulos (dependentes e independentes) ou seja, Vai exigir um mínimo de módulo como (Usuários e Clientes) e disponibilizar módulos adicionais como:
Estou desenvolvendo baseado em um framework que de acordo com a preferência do usuário, ative ou desative módulos na aplicação;
O Principal problema que me atinge é quanto a versões, pois gostaria imensamente total controle sobre versões, tanto do Framework quanto dos módulos.
Exemplo: O usuário pode utilizar o módulo Cliente na versão 1, e o módulo compras, na versão 2, Todo o gerenciamento de informações, base de dados de versões diferentes, etc, meu framework ira realizar. Entretanto estou meio perdido quanto sua disposição em pastas, no servidor.
Imaginei algo como:
Configuração para Servidor
Pasta Raíz {
- Aplicação
- Framework (Aplicação PAI, Programa que gerencia módulos, gera views, etc)
- Dependencias (Dependencias globais do framework)
- $versão (v1, v2, v3)
- Dependencias (Dependencia específica da versão)
- Templates
- Configurações
$framework
- Módulos
- $Módulo
- Dependencias (Dependencias globais do módulo)
- $versão (v1, v2, v3)
- Dependencias (Dependencia específica do módulo)
- Templates
$módulo
- API (Ajax) (Tráfego de informações entre DB <-> Módulo)
- $módulo
- $versão
- Consulta
- Edição
- Adição
- Exclusão
- Template (Todo arquivo de saída padrão, caveçalho, rodapé, img, css, js)
- $versão
- Header
- Menu
- Footer
- Dependencias
- CSS
- JS
- IMG
- Connect (Informações de Conexão)
- Servidor (Conecta ao meu DB, importando configurações, módulos, versões, etc)
$servidor.info
- Cliente (Conecta do DB do Cliente)
-$cliente.info
controlador.php
}
Acima, segue modelo que consegui montar tendo como base o princípio de versões, cada "$versão", exigirá subpastas específicas com suas dependências.
Gostaria de saber de profissionais experientes mais sobre este assunto.
Antecipando todas as sugestões serão bem vindas e desde já, Obrigado!
Ótima solução.
Muito Obrigado!
;)
Esqueci de colocar o link dos mais queridos da comunidade git+ github dupla perfeita, não precisara de mais nada, a não ser privar seu projeto.
Um dos tutos mais completos
http://tableless.com.br/tudo-que-voce-queria-saber-sobre-git-e-github-mas-tinha-vergonha-de-perguntar/
Use Controles de Versões existentes no mercado GIT, Subversion etc.. Reinventar a roda se torna ainda mais complexo.
Se o cliente precisa de uma nova feature exclusiva, faça um fork e pronto.
Do mais, trabalhe em branchs, se precisar atualizar base do cliente, cria as releases e da um push.
Porque isso aqui abaixo não faz o menor sentido
$versão (v1, v2, v3)
Este controle é feito pelo versionamento, ou seja as releases
v.1.0.1
v.1.0.2
v.1.0.2
....
v.1.9.2
Muitos anos depois
v.2.0.0
v.2.0.1
.....
https://pt.wikipedia.org/wiki/Rolling_release