Relacionadas a publicação anterior ainda precisamos responder duas questões relevantes:
Quais soluções utilizar?
Quais as vantagens obtidas?
Caso não tenha lido a publicação inicial, que gerou a necessidade de responder tais questionamentos, confira o post anterior - Entrega contínua com PaaS (Plataform as a Service)
O ponto é que dependerá das soluções utilizadas, bem como do tipo de demanda da organização em que você aplicará tal solução. Veja que os fatores para que ocorra tal variação serão o tamanho da organização, o orçamento disponível para a implantação, a estrutura a ser orquestrada, a cultura e a maturidade do ciclo de desenvolvimento.
Aqui utilizaremos algumas soluções que são bem aceitas pelo mercado, onde você poderá substituir de acordo com seu cenário. Não estamos tratando de configuração e uso de solução, mas sim propondo um modelo de ciclo e exemplificando com ferramentas disponíveis e de fácil acesso, ou seja, sem nos preocuparmos com licenciamento e custos de sustentação.
Considerando que na primeira publicação implantamos a ideia de entrega contínua e uso do PaaS, agora mostraremos as soluções em um cenário de exemplo.
Premissas e pré-requisitos para o ambiente proposto:
Pré-requisitos
- Ao menos duas máquinas virtuais para simular o ambiente;
- Recursos físicos disponíveis para que o fluxo publicado no post inicial seja efetivado:
Premissas
- Uso dos seguintes componentes:
- IDE (Integrated development environment): Será utilizada para o desenvolvimento do código.
- Repositório de versões: Controlador de versões, gerenciar alterações e mesclagens.
- Ferramenta de integração contínua (CI - Continuous Integration): Fará a integração entre o ambiente do desenvolvimento e os ambientes disponíveis de evolução da aplicação, originalmente publicando alterações no ambiente de desenvolvimento, testes, homologação e produção.
- PaaS (Plataform as a Service): Plataforma que em nosso cenário fictício será o hospedeiro da aplicação nos ambientes mencionados acima.
- Como falamos acima, as soluções utilizadas foram definidas por padrão de mercado ou melhor adaptação e conhecimento, o leitor pode adaptar as soluções desde que saiba trabalhar com as mesmas;
- Licenciamento não serão abordados;
- Desconsideraremos que não é interessante termos os ambientes (desenvolvimento, etc…) em um mesmo servidor físico, sem isolamento de rede, geográfico, e demais recomendações que a ISO 27001 julga relevante.
Quais soluções utilizar?
Na camada de PaaS como solução para uma infraestrutura (datacenter) local ou híbrida, o projeto mais maduro é o OpenShift. Para realizar a integração uma boa indicação é o Jenkins , devido ao número relevante de plugins disponíveis. Com estes plugins o ciclo é facilitado, pois podemos integrar com repositórios GIT/GITHUB, projetos Maven para geração do artefato e não esquecendo da camada de dados plugins para o FlywayDB ou Liquibase.
Quanto a qualidade de código, testes de performance e etc, o Jenkins tem plugins de uso simplificado para utilização do Sonar, jMeter e demais soluções.
Por ser um integrador, não poderia faltar um plugin para realizar a publicação da aplicação no PaaS, o que justifica ainda mais as escolhas mencionadas acima.
Quais as vantagens obtidas?
Poderia citar inúmeras vantagens adquiridas pelo uso do CD, CI, mas focaremos em uma em específico, que é gerada pela composição de soluções mostradas na publicação, independente do valor investido ou do tamanho da organização, e de extrema importância para o desenvolvedor: o ganho de agilidade e preocupar-se com o que importa - a qualidade do desenvolvimento, reduzindo a complexidade de infraestrutura para publicação de aplicações.
Legendas
PaaS: Plataform as a Service
CD: continuous delivery
CI: Continuous Integration
IDE: Integrated development environment]]
Publicação também disponível em: http://ilegra.com/beyonddata/
Publicação também disponível em: http://ilegra.com/beyonddata/