DevSecOps

26 out, 2015

O Tao do DevOps (e suas questões frequentes) – Parte 02

Publicidade

Confira a primeira parte aqui.

Python vs Ruby: o clássico da cultura DevOps

Tudo na vida tem seus clássicos: Rocky contra Apolo, BK contra Mc, Fla contra Flu, Timão contra Verdão, Loubutin contra Versace, Java contra o mundo, vocês sabem. Aliás, falando em linguagem, essa é sempre uma das primeiras perguntas daquela pessoa camaradinha que quer entrar em TI e te vê falar sobre DevOps: “qual linguagem eu preciso aprender?”. E aí na verdade todo mundo precisa aprender tudo (nota pessoal aqui: continuo achando que “ABC, ABC, toda criança precisa de Assembly, Bash Script e C”), mas claro que, na iminência de um aprendizado sadio e de rápido acesso, as duas linguagens campeãs dessa era sempre serão Python e Ruby. Tem muito material, tem no Codecademy, são bem utilizadas e gentis com iniciantes, o que mais se pode querer? Ah, sim, querer saber qual delas é mais eficaz em um processo de desenvolvimento contínuo. E aí, pessoinhas, não tem resposta, tem a sua facilidade, seu amor à camisa, sua vontade de ver funcionar. Sim.

Porém, há diferenças pontuais que fazem com que reflitamos um pouco mais adiante. Focarei só nas qualidades, só no amor, sem rivalidade gratuita.

devops-1

O que Python tem de ótimo:

  • Uma legibilidade maravilhosa, que torna muito mais fácil achar código reutilizável;
  • Uma gama imensa de bibliotecas, inclusive científicas, que podem ser decisivas em clusters de altíssimo desempenho e computação em grade;
  • Um shell muito poderoso, que pode ser integrado ao sistema operacional com destreza;
  • Uma curva de aprendizado indiscutivelmente leve;
  • Alta estabilidade com relação a ambientes Linux.

O que Ruby tem de ótimo:

  • Uma linguagem dinâmica e sinergética que te faz sair dançando pelos trilhos (sacou?);
  • Um conjunto de módulos e APIs muito poderoso para o uso cotidiano;
  • Gems. Um universo de middleware e integração a um comando de distância;
  • APIs completas para uma quantidade imensurável de produtos do universo de DevOps;
  • Sem dúvidas um dos melhores interpretadores cross-platform já escritos na história.

Diante disso, é fácil concluir que não há vencedores. Mas, cá entre nós, no ambiente corporativo, o Ruby consegue ser muito grande. E quem está falando aqui é uma pessoa que aprendeu a amar Python junto com o Linux, pra não dizer que não dei meu voto e, meu, fica a dica.

Koan e literatura básica de DevOps

Chegando a esta parte que é sempre um alívio pra quem quer iniciar os estudos, acho pertinente que entoemos um mantra para que jamais esqueçamos o foco dos profissionais de DevOps. Vai ser simples, te fizeram decorar os ingredientes de um certo sanduíche com esta fórmula. Vamos lá:

“DevOps é continuidade: são cinco fases de magia, integração, desenvolvimento, teste, entrega e melhoria”.

Viu que lindo? E o sanduba nem rimava.

Agora sério, saber disso e dissecar eventualmente torna mais simples saber quais as metodologias e aplicações em que você deve concentrar seu esforço. Integrar é angariar recursos e processos sob uma mesma camada de controle (aí vêm os softwares de CI, contêineres de aplicação, automação e tudo que o lado dev da força permitir). Você pode não lidar ativamente com o desenvolvimento e o teste, mas é da sua alçada prover mecanismos que automatizem esses processos e que mantenham uma base de acesso comum a toda equipe (o lado ops). Se possível, que seja assíncrona sem comprometer a funcionalidade.

devops-2

Entram aí ferramentas de controle de versão, controle de ambiente de desenvolvimento e testes funcionais contínuos. Para quem sentiu falta da palavra implementação e do continuous deployment, ela ainda existe dentro do universo da entrega contínua, que trata de criar barramentos entre os processos (também conhecidos como pipelines) a fim de comodizar a implantação do projeto, permitindo que as melhorias (próximo passo) sejam asseguradas de forma funcional, sem atropelos. Isso permite entregas ágeis (oi, Agile/Scrum/Kanban!) e, por sua vez, a fluidez facilita o refatoramento, permitindo processos mais limpos neste tempo (oi Lean, e oi Tidy se tivermos PaaS). Já deve ser evidente que o trabalho em DevOps encoraja o surgimento de times ágeis e com excelente controle de qualidade. Mas é lindo demais para perder a deixa.

devops-3

Tudo isso explicado, parece um pouco mais claro o tipo de ferramenta que a atividade exige, então vamos às coisas boas da vida. Sobre metodologias já está repetitivo, mas lembre-se de que Agile é essencial e, se for novidade, não tenha vergonha de ser dummy. Mais adiante, este livrinho do InfoQ é um recurso de rápida absorção sobre Scrum e Kanban. Aí tem um mundo de ferramentas incríveis cujos critérios de aceitação dependem apenas da sua familiaridade e, claro, das demandas de cada cliente. Tentarei separar em pequenas categorias e associar alguns livros e documentos que trazem uma boa perspectiva sobre diversos tópicos. Infelizmente, existem mais livrões do que links práticos sobre a maioria das ferramentas, mas podemos mudar isso, não?

Ah, sim: sobre nossas ferramentas preferidas aqui na Concrete, podemos falar mais adiante. Mas já há várias postagens anteriores que dão algumas dicas sobre isso.  Confira!

Langs

Continuous Deploy/Delivery

Continuous Testing

Continuous Integration

Dev Provisioning

Configuration Management

Cloud Computing

E é isso aí! Ficou alguma dúvida, tem alguma sugestão ou acha que falei besteira? Deixe abaixo seu comentário. Até a próxima!