Startups e DevOps
PhD José Bringel FilhoLagoas Digitais / CUIA
Por que DevOps? Qual a relação com a minha Startup? Por que eu preciso disso?
2
Startup Enxuta - Lean Startup
3
Aprende Construir
Ideia
Dados Produto
Medir
MVP
Devo Contruir
MVPs
4
PRODUTO
Na verdade, várias versões de MVP conforme a validação e aprendizado do negócio
5
Utilizando metodologia ágil para entregar valor ao cliente rapidamente
6
MVP
De forma alinhada com a validação/descoberta de clientes – Startup Enxuta
7
CONSUMIDOR
Mas precisamos manter o foco no cliente!!!
8
Conhecendo bem os seus problemas e necessidades que mudam continuamente
9
Então precisamos construir MVPs rapidamente, continuamente e sem interrupções/falhas
10
Como então responder rapidamente as demandas dos nossos consumidores, aliando entregas rápidas e com infraestrutura dimensionada para atender?
11
Surge então em 2008/2009 o movimento DevOps, recebendo influencia do movimento ágil e propondo eficiencia na entrega de infraestrutura/operacional para os desenvolvedores
A união de 2 mundos até então separados por cultura, mas que devem caminhar juntos em busca do atendimento rápido as mudanças do mercado
13
DevOps está em constante evolução e com terminologia em mutação contínua
14
É cada vez mais comum a aproximação e trabalho colaborativo de profissionais de desenvolvimento com os de infraestrutura, em busca de objetivos comuns de negócio
15
Colaboração
Comunicação
Integração
Melhorando a comunicação, colaboração e integração, em prol de produtos confiáveis, com maior qualidade e menor taxa de erros/falhas de disponibilidade
DevOps possui 4 eixos principais: Cultura, Automação, Avaliação e Compartilhamento
16
17
Beleza, entendi o que é DevOps. Agora, o que eu devo fazer?
1º Entender as características de um ambiente DevOps
18
Como é um ambiente com características DevOps?• Infraestrutura como código
• Orquestração de servidores
• Deploy Automatizado
• Gerência de configurações
• Provisionamento dinâmico e automatizado de ambientes
• Controle de versões compartilhado entre infraestrutura e desenvolvimento
• Múltiplos ambiente para sistemas - desenvolvimento, teste, produção
• Ambientes de entrega e integração contínua
19
Como é um ambiente com características DevOps?• Publicação de novas versões de software passando por um pipeline
de testes automatizados que aceitam ou não a versão
• Coleta, Processamento, Armazenamento e visualização de dados dos serviços e sistemas
• Monitoramento do ponto de vista do negócio com processamento adequado dos eventos e métricas
• Capacidade de resposta rápida a incidentes e problemas utilizando automação
• Backup e restauração confiáveis
20
Entendi como é um ambiente e vejo que já usava ferramentas DevOps na empresa, mas não tinha a cultura. O que fazer agora?
2º Inserir a cultura nos novos projetos
21
Minha empresa iniciará 1 novo projeto, o que fazer?• Equipe da Infraestrutura deve participar do
desenvolvimento desde o início• Quem irá garantir disponibilidade, segurança, desempenho e
monitoração?
• Quanto mais falhas forem resolvidas durante o período de desenvolvimento do projeto menor é a possibilidade de problemas serem expostos aos clientes
• Quando os times trabalham juntos o produto tem maior qualidade e desempenho pois ambos agregam valor e conhecimento ao projeto
22
DevOps para a equipe de Infraestrutura
• Infraestrutura deve participar das reuniões de desenvolvimento
• A infraestrutura também precisa observar quais são as metas da empresa a longo prazo, principalmente aquelas ligadas ao desenvolvedor
• Ao entender onde o setor de desenvolvimento quer chegar, ela pode se programar melhor para ter certeza que a infraestrutura tecnológica estará preparada para atendê-los quando necessário
23
DevOps para a equipe de desenvolvimento
• Desenvolvimento deve participar das reuniões de infraestrutura• A infraestrutura precisa envolver o desenvolvimento em suas reuniões, deve
haver sempre um representante acompanhando as reuniões técnicas para que o desenvolvedor entenda e tenha ciência da realidade de infraestrutura
• Dessa maneira, é possível enxergar suas qualidades, atribuições, planos de melhorias, atualizações programadas e agendas de manutenção, além de conhecer os recursos disponíveis e as limitações da equipe
• Além disto, o desenvolvedor pode ser um grande aliado da infraestrutura na solução de problemas, afinal o conhecimento que o desenvolvedor traz pode ajudá-los a melhorar a forma com que administram seu ambiente, tornando o processo mais eficiente, principalmente na parte de automação
24
Vantagens para Infraestrutura
• Infraestrutura como código• equipe para de administrar e passa a desenvolver a infraestrutura
• Infraestrutura mais eficiente e rápida usando métodos ágeis
• Equipe de infraestrutura mais organizada
• Equipe de infraestrutura se comunica melhor
• Infraestrutura fazendo mais em menos tempo com menos gente
• Ambientes de gerência de configuração, orquestração e provisionamento implantados
• Implementações de infraestrutura (novos ambientes) mais rápidos e seguros => entrega rápida
• Ambiente padronizado e sob controle
• Feedback rápido em todas as atividades de infraestrutura
25
Vantagens para Desenvolvimento
• Desenvolvimento tem ambiente mais adequado para trabalhar (dev/teste/prod)
• Desenvolvimento passa a contar com ambiente de entrega e integração contínua
• Desenvolvimento passa a contar com testes automatizados
• Desenvolvimento de apps (novas versões) mais rápidos e seguros => entrega rápida
• Feedback rápido em todas as fases de desenvolvimento
26
Benefícios mútuos
• Acaba a divisão Infraestrutura vs Desenvolvimento
• Infraestrutura participa dos projetos e acompanha de perto tudo o que acontece
• Infraestrutura participando resulta em melhor planejamento do ambiente de produção
• A participação da infraestrutura resulta em monitoramento mais eficaz da aplicação
• Desenvolvimento começa a compreender melhor a infra e isso resulta em um produto melhor
• Equipes trabalhando em conjunto para aumentar o valor do negócio
27
Para a empresa
• Melhor comunicação entre desenvolvimento e infraestrutura• Diminuição de conflitos
• As soluções funcionam com maior estabilidade e desempenho
• Entregas mais rápidas
• Menor tempo de paradas
• Diminuição de incidentes
• Diminuição de custos
• Diminuição de riscos
• Aumento do valor do negócio
28
29
30
31
Ciclo de evolução de produtos em uma infra DevOps
32
1) Desenvolvedores
2) Repositório de código 3) Construção 4) Testes 5) Implantação - Nuvem
6) Monitorar e melhorar
Macro-etapas de operação DevOps
Existem muitas empresas que fornecem serviços DevOps?
Veja o cenário apenas no ecossistema de Israel
33
34
A minha startup já está com a cultura, veja as vantagens e o que utilizamos
35
Vantagens de DevOps para Startups
• Melhoria na frequência de implantações - Deployments• Menor tempo para ir ao mercado - Time to Market
• Baixa taxa de falhas - failures
• Tempo de espera menor - Lead time
• Tempo de recuperação menor - Faster recovery
36
Estudo de Caso – DevOps na Startup CONTRIB (Contrib.vc)
37
38
Ferramentas utilizadas na CONTRIB
• Gerenciamento da Cadeia de Suprimentos - Supply Chain Management (SCM)
• GitHub: para controle de versão de projetos que a Contrib tenha interesse em tornar públicos para que a comunidade em geral possa reutilizar e contribuir com melhorias
• Reutilizamos libs e pacotes open sources nos projetos da Contrib
• GITLAB: Para controle de versão de projetos privados e naqueles que a equipe precisa de mais facilidade na integração de código
• GIT: Utilizamos o Git como ferramenta para controle de versão de repositórios locais, e para integrar com repositórios remotos
39
Sistema de Automação de Compilação - Build
• GRADLE• Utilizamos o Gradle para automatizar a compilação dos projetos
• É útil pois alguns processos de compilação demoram de 2 a 10 minutos, e a ferramenta ajuda a compilar apenas o necessário
• Também é útil na importação e gerenciamento de dependências
• MAVEN• A Contrib utiliza o maven em projetos JSF para automatizar a
compilação e gerir as dependências.
40
Testes - tests
• SELENIUM• A Contrib está implantando a prática de testes de software antes
do lançamento de releases• O que é uma prática pouco frequente aqui em Teresina
• E a ferramenta Selenium tem nos ajudado pois reduz o envolvimento humano em tarefas manuais e repetitivas a cada lançamento de versão de software
• JUNIT• A Contrib também utiliza JUNIT para testes unitários, e assim
verificar se as alterações realizadas não vão quebrar regras de negócios
41
Máquinas Virtuais Automatizadas
• VAGRANT• A Contrib planeja implantar o uso da ferramenta Vagrant
para criarmos rapidamente ambientes virtuais para fazermos testes, desenvolvimento ou provisionamento de versões de softwares minimamente funcionais e assim poupar tempo em configuração de ambientes.
42
Nuvem - Cloud
• HEROKU• A Contrib adotou o Heroku para distribuir todas as
aplicações• Ela foi uma das primeiras plataformas de nuvem, já está
em desenvolvimento desde junho de 2007, e hoje já aceita aplicações criadas em Java, Ruby, Node.js, Scala, Python e PHP
• E não só pela diversidade, mas pela facilidade em implantar e escalar
43
Colaboração
•TRELLO•A ferramenta TRELLO é mais uma ferramenta que nos auxilia quando trabalhamos em equipe
•Por ser baseada no “kanban” nos proporciona a organização, manejo de prazos e tarefas que precisamos
44
Será que iremos parar no DevOps? O que virá pela frente?
45
46
“NoOps é uma evolução lógica de DevOps com a filosofia: Humanos
devem resolver novos problemas e as máquinas resolver problemas
conhecidos!”
47
Botmetric CEO Vijay Rayapati
Principais tendências: DevOps -> NoOps
• Programação sem servidor - Serverless Programming• Este paradigma de programação e implantação eliminará
significativamente o requisito do DevOps para o gerenciamento de provisionamento e configuração
• O mundo da nuvem só verá uma trajetória de crescimento para o movimento NoOps, já que todos os fornecedores de nuvem amadurecem suas ofertas sem servidor
• Contêinerização – Containerization• Os contêineres, como o Docker, irão resumir ainda mais as
dependências e o compartilhamento de recursos entre diferentes componentes, alavancando soluções de gerenciamento de cluster e orquestração como Kubernetes, Mesos, ECS, Nomad, etc., para fornecer uma visão comum da infra-estrutura subjacente
48
Principais tendências: DevOps -> NoOps
• Arquitectura de Microserviços• ajudará os engenheiros e as empresas a desacoplar
a complexidade dos sistemas monolíticos em componentes pequenos e gerenciáveis que lidam com responsabilidade específica
• Como a conteinerização se torna uma maneira padrão de implantar componentes na nuvem, ele verá uma adoção rápida
49
Principais tendências: DevOps -> NoOps
• Operações inteligentes e unificadas• Ferramentas estáticas com (ou sem inteligência)
estão crescendo lentamente para os engenheiros
• Para este fim, houve um aumento no uso da inteligência de máquina e uma maior adoção de técnicas de aprendizado
• Consequentemente, a indústria verá mais adoção de ferramentas que dinamicamente podem ajudá-las nas operações do dia-a-dia
50
Principais tendências: DevOps -> NoOps
•Auto-cura e remediação automática• O mundo DevOps estava limitado a construir,
implementar e provisionar enquanto as operações do dia-a-dia são tratadas de forma manual ou semi-automatizada
• No NoOps as máquinas podem resolver problemas conhecidos e repetitivos e os engenheiros podem resolver novos problemas
51
Bom, preciso correr e melhorar a cultura DevOps da minha empresa. Irei mapear as ferramentas, criar o pipeline, executar o sequenciamento de MVPs, ... São muitos ingredientes para essa “formula”
52
Preciso de uma verdadeira “tabela periódica” de ferramentas para montar/implantar o DevOps na minha empresa. Ainda bem que ...
53
https://xebialabs.com/periodic-table-of-devops-tools/