Uma proposta para

centralizar práticas
DevOps com uso do
gitlab
Contexto
● Computação em nuvem;
● Entrega contínua de software;
● Processos e Ferramentas.
Motivação

● Centralização de Ferramentas;
● Diminuição de Custos;
● Otimização de Processos.
Objetivos
● Estudo sobre processos DevOps;
● Estudo sobre ambientes de entrega contínua;
● Propor uma infraestrutura que centraliza processos DevOps
em uma única ferramenta. Diminuir custos ao aderir os
processo de CI e CD. E demonstrar como utilizar a
ferramenta open source do gitlab, o gitlab-ce (Community
Edition) e aws.
Conceitos
DevOps
● Aproximação de desenvolvimento e operações;
● Automatização de tarefas operacionais;
● Agilidade na entrega;
● Economia com despesas operacionais;
● Redução do tempo de operação;
Continuous Integration
● Revisões e boas práticas;
● Detecção de bugs;
● Validações;
● Releases.
Continuous Delivery
● Build e execução da suíte de testes;
● Deploy para Estágios de Teste e Produção.
Continuous Delivery
Docker
● Grande força DevOps;
● Plataforma de containers;
● Funciona em diferentes ambientes.
Detalhando os Processos de CD
Detalhando os Processos de CD
1. Definição de Pipeline;
Detalhando os Processos de CD
2. Ferramenta de controle de versão;

● Git
● SVN;
Detalhando os Processos de CD
2. Builds automáticos;

● Make;
● Ant;
● Mave;
● Docker.
Detalhando os Processos de CD
3. Commit Stage;

● Revisão de código;
● Relatórios de falhas;
● Construção e validação das alterações;
Detalhando os Processos de CD
3. Testes de Aceitação;

● Deploy automático em servidores de teste;
● Testes de aplicação em ambiente próximo a produção.
● Garantia de requisitos;
● Candidato a produção;
Detalhando os Processos de CD
3. Deploy em produção;

● Deploy a partir de um botão;
● Diminuição de falhas;
Principais Desafios
● Aplicações massivas e monolíticas;
● Ambientes limitados;
● Desafios técnicos.
Principais Desafios
Desafios Técnicos:

● Falta de ferramentas robustas;
● Diversas implementações;
● Limitações em serviços de terceiros;
Principais Desafios
Desafios Técnicos: Jenkins

● Grande quantidade de plugins;
● Falta de documentação;
● Fraco suporte ao Docker.
● Falta de ferramenta para commit stage;
Principais Desafios
Desafios Técnicos: Travis-CI e CodeShip

● Suporte docker limitado;
● Falta de ferramenta para commit stage;
● Alto custo.
Proposta
Proposta
Gitlab-CE:

● Ferramenta dividida em micro serviços;
● Commit stage;
● Suporte a CI e CD;
● Gitlab Runner;
● Suporte docker;
● Autoscaling;
Proposta
Gitlab-CE:
Proposta
AWS EC2:

● Serviço de VM;
● Suporte docker;
● Autoscaling;
Proposta
Arquitetura:
Proposta
Gitlab-server:
Proposta
Gitlab-Runner:
Proposta

Descrição do Pipeline

gitlab-ci.yml
Proposta
Visões da Ferramenta:
Proposta
Visões da Ferramenta: Pipelines
Proposta
Visões da Ferramenta: Builds
Proposta
Visões da Ferramenta:
Proposta
Comparação de custos: Máquinas Small

Serviço concorrencia custo

Travis-CI 2 129$

CodeShip 2 150$

Gitlab-CE e AWS 2 49$
Proposta
Comparação de custos: Detalhes Gitlab-CE

Serviço VM custo

GitLab-Server 1 16.56$

Gitlab-Runner 2 16.56$

49.68$
Conclusões
● Uso de ferramenta Open Source;
● Baixo custo, comparado ao Travis-CI e CodeShip;
● Centralização de ferramentas e processos;
Dúvidas?
Obrigado!