Skip to content

Instantly share code, notes, and snippets.

@roncat
Last active August 29, 2015 14:07
Show Gist options
  • Save roncat/1c23033520cdf1d50604 to your computer and use it in GitHub Desktop.
Save roncat/1c23033520cdf1d50604 to your computer and use it in GitHub Desktop.
DevOps
======
Gene Kim, autor do livro The Phoenix Project, realizou um debate com Steven Witkop, John Skovron e Elis Booker sobre
como plataforma como serviço (PaaS) se encaixa no processo de DevOps. Elis Booker ajudou a discussão com perguntas
sobre DevOps, derrubando mitos sobre nuvens privadas e como começar a utilizá-las.
Gene Kim descreveu a teoria das restrições e suas aplicação em DevOps; também indicou restrições em desenvolvimento de
software que, segundo ele, devem ser abordadas em sequência:
Provisionamento de ambientes/implantação;
Configuração de testes e ambiente para execução de testes;
Mudanças de arquitetura;
Gerência de desenvolvimento e de produtos.
A automação e a orquestração são o que permite ao DevOps fazer entregas com maior qualidade, de forma mais veloz e com
menos recursos humanos. Todos os recursos e indivíduos envolvidos no projeto desempenham algum papel em automatizar as
etapas do ciclo de vida do gerenciamento de serviços. Exemplos incluem gerenciamento de patches, construção contínua,
provisionamento de máquinas virtuais, implantação de aplicações e gerenciamento de identidade, além de backup e monitoração. Quanto maior o grau de automação, mais eficiente é a organização do DevOps. A automação também é elemento fundamental para a disponibilização de auto-serviços para a empresa. Permitir que o negócio produza mais, faz com que as equipes se sintam mais protagonistas e torna a TI mais responsiva às suas necessidades. A TI ganha liberdade para construir e automatizar outros serviços. Cria-se um cenário ganha-ganha.
1 - Métricas por todos os lados
R. Quais? Que ferramentas?
2 - Documentação da infraestrutura
R. Quais? Que ferramentas?
3 - Ambientes de desenvolvimentos e produção espelhados
R. Vagrant, Chef e Puppet (Eu vejo isso com o LXC e o Ansible)
4 - DevOps no horário comercial
5 - Mitigando os riscos de desenvolvedores fazendo operações
Entendimentos
Continuous Integration (A cada biuld (chek-in) do código é compilado e implantodo constante em um
servidor distribuido. Utilizaão de ALM - Application Lify-cicle Management.
R. Como funciona? Que ferramentas? Métricas de qualidade. Requisito funcionais
Continuous Deploy (Integração contínua) o usuário não tem garantia da entrega
R. Como funciona? Que ferramentas?
Continuous Delivery (Foco do negócio) o usuário recebe a garantia da disponibilização da nova funcionalidade.
R. Como funciona? Que ferramentas? Métricas de ambiente. Requisito não funcionais
Precisamos ver algumas metodologias ageis ...
R. Quais? Que ferramentas?
DEVOPS:
Características da cultura DevOps
Para entender a cultura devops sem fazer um texto muito longo, vou pontuar as suas principais características:
Patrick Debois (foi quem cunhou o termo) diz que DevOPs essencialmente é uma cultura, e a descreve utilizando 4 eixos,
são eles:
Cultura
Colaboração
Fim das divisões
Relação saudável entre as áreas
Mudança de comportamento
Automação
Deploy
Controle
Monitoração
Gerência de configuração
Orquestração
Avaliação
Métricas
Medições
Performance
Logs e integração
Compartilhamento
O feedback é tudo
Boa comunicação entre a equipe
Um ambiente DevOps deve ter/possuir/oferecer/permitir:
Infraestrutura como código
Orquestração de servidores
Gerência de configurações
Provisionamento dinâmico de ambientes
Controle de versões compartilhado entre infra e devel
Ambiente de desenvolvimento, teste e produção (no mínimo)
O ambiente de devel deve possibilitar TDD
Infra deve participar dos projetos desde o início [1]
Infra deve participar das reuniões de devel [2]
Devel deve participar das reuniões de infra [3]
Ambiente de entrega contínua [4]
Os desenvolvedores devem conseguir fazer o deploy sem interferência da infra [5]
Monitoramento eficaz com processamento adequado dos eventos e métricas
Capacidade de resposta rápida a incidentes e problemas
Backup e restore confiável
1 - Desenvolvimento ágil (Ver as metodologias ágeis)
2 - Infraesturura ágil (Infraesturura ágil)
Assim que o cliente decide que o software está pronto para ir ao ar e o código é colocado em produção, os verdadeiros usuários começam a usar o sistema. Nessemomento, diversas outras preocupações se tornamrelevantes:
suporte, monitoramento, segurança, disponibilidade, desempenho, usabilidade, dentre outras. Quando o software está em produção, a prioridade é mantê-lo rodando de forma estável. Em casos de falha ou desastres, o time precisa estar preparado para reagir de forma proativa e resolver o problema rapidamente.
Basicamente temos três tipos de ferramentas, são elas:
- Orquestradores (Fabric, Capistano, Func e Mcollective)
- Ferramentas para gerenciamento de configurações (Algumas delas são Puppet, Chef, Cfegine e Salt)
- Ferramentas para bootstrapping e provisionamento (ferramentas como o Kickstart, Cobbler e ansible que atuam neste segmento.)
Equipe de infraestrutura ágil (inspirado no kanban):
Equipes que trabalham com infraestrutura ágil também precisam de um método diferenciado de organização, normalmente
estas equipes estão trabalhando seguindo estes eixos:
Gerenciamento da infra (VAGRANT)
Ambientes temporários (container ou virtualização : LXC, DOCKER, OpenVZ ou ProxMox)
Provisionamento (Chef, Puppet ou Ansible)
Versionamento do código e arquivos de configuração (git - gitlab)
execução de teste no ambiente (Cucumber)
Organização de atividades de forma visual (KANBAN BOARD o LOGSTASH)
Pipeline de entrega (jenkins)
Trabalho em pares
Divisão das atividades em sprints
Reuniões ágeis diárias (standup meeting de 10 minutos - em pé)
Reuniões ágeis periódicas (retrospectiva e planejamento de sprints).
Painel do DevOps
Colaboração
Tipo de ferramenta Ferramentas
--------------------------------- -------------------------------------------------------------------
Automação da infraestrutura Bcfg2, CFEngine, Chef, CloudFormation, IBM Tivoli, Puppet
Automação da implementação Capistrano, ControlTier, Func, Glu, RunDeck
Infraestrutura como serviço Amazon Web Services, CloudStack, IBM SmartCloud, OpenStack, Rackspace
Automação do desenvolvimento Ant, Maven, Rake, Gradle
Automação dos testes J Unit, Selenium, Cucumber, easyb
Controle de versão Subversion, Git, IBM Rational ClearCase
Integração contínua Jenkins, CruiseControl, IBM Rational BuildForge
Gerenciamento de projetos Redmine
Qualidade de código Sonar, EMMA
Monitoramento de aplicações Openshift Metrics, JON, JavaMelody
--------------------------------- -------------------------------------------------------------------
Provisionamento (conceito "indepotente")
http://www.dualtec.com.br/blog/2014/02/18/as-ferramentas-de-trabalho-do-devops/#rmcl
http://devopsbr.com/2013/10/23/devops-na-pratica-comecando-a-trabalhar-com-o-chef/
http://devopsbr.com/2014/04/29/aprenda-a-trabalhar-com-chef/
Ver isso antes: http://1up4dev.org/
CI - Continous Integration
Design, Develop, Test and Release
CD - Continous Delivery
Validations, Acceptance testing, consistent deliveries and constants deliveries
Mudança <—————— > Estabilidade
DEV OPS
Release —— Build
—— Deploy —— Test ——
DevOPs
Processo (Check list) —[Automatizar]——> Deploy (Mudanças) ———> Quantidades de Mudanças ———> Risco
Diminuir a incidencia de erro.
DEV
Código — Teste — Pacote — Servidores — Ambientes — Implantação { Pipe line de entrega }
OPs
Monitoramento — Alerta — Suporte — Análises — FeedBacks — Insights {Pipe line de produção}
DevOps
Controle de versão — Build — Teste Automatizados — Cont. Deploy — Int. Cont — Provisionamento — Ger. Configuração = {Para todo o DevOps}
Ver ainda:
This project has the objective to contemplate the following products below:
lxc
Install (apt-get install lxc)
Initialize: /etc/init.d/lxc start
Create: lxc-create -t ubuntu -n p1
List: lxc-ls -f
Start: lxc-start -n p1
Access console: lxc-console -n p1
Access ssh:
docker
supervisor e upstart
See too:
- Openvz (container)
- kvm (virtualização)
- VirtualBox (vagrant)
The following services will be installed to create the development environment.
sonar
nexus
gitlab
jenkins
apache ou nginx (pound and varnish)
wildFly 8 (Domain mode)
ansible
Other products: Prox mox (http://pve.proxmox.com/wiki/Main_Page) OpenVZ (http://openvz.org/Main_Page) - vzctl KVM (http://www.linux-kvm.org/page/Main_Page)
Vagrant
Pumpt or Chef
kibana (ElasticSearch)
Logstash
GreenBone | OpenVas (security project) - http://www.openvas.org/install-packages-v5.html
Log4jdbc
ASCIIDoctor
Tumblr ou wiki
Chef
Zookeep and dropwizard
oco em automação, colaboração, compartilhamento de ferramentas e de conhecimento
Fabric
Union FS
Projects with Cubietruck
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment