02 – DEVelopment OPerationS – DevOps – Ferramentas

Aula 02 – DEVelopment OPerationS – DevOps – Ferramentas

Voltar para página principal do blog

Todas as aulas desse curso

Aula 01                       Aula 03

DevOps

Se gostarem do conteúdo dêem um joinha 👍 na página do Código Fluente no
Facebook

Link do código fluente no Pinterest

Meus links de afiliados:

Hostinger

Digital Ocean

One.com

DEVelopment OPerationS – DevOps

Livros relacionados:

                                

Limitações do método ágil

O método ágil trouxe uma integração maior entre a equipe de desenvolvimento e o cliente, trouxe velocidade e flexibilidade em relação a mudanças nos requisitos do projeto, de forma a se adaptar mais rapidamente as tendências do mercado.

Mas ainda existe na metodologia ágil, uma separação de funções bem definidas entre a equipe de desenvolvimento e a equipe operacional, a equipe responsável por implantar o software.

Limitações do método ágil

Limitações do método ágil

A ideia do DevOps é quebrar essa barreira.

Os desenvolvedores e o operacional tem que trabalhar juntos de forma mais integrada, o desenvolvedor deve saber sobre infraestrutura e o operacional precisa saber sobre código.

Engrenagem DevOps

Engrenagem DevOps

Estágios do Devops

Estágios do DevOps

Estágios do DevOps

A implantação contínua, isto é, continuous deployment não é considerado uma boa prática, porque antes de lançar um produto no mercado, é preciso verificar muitos detalhes, possivelmente você terá que fazer alguns testes adicionais antes de fazer o deploy, por isso, não é bom que esse processo se dê automaticamente.

Então, é melhor que depois das entregas contínuas da aplicação, a gente use uma ferramenta de gerenciamento de configuração como: ansible, puppet, saltstack, ou mesmo o docker, e fazer o deploy manualmente.

Uma vez que a aplicação esteja em funcionamento, ela precisa ser monitorada com nagios ou splunk por exemplo, que fornecerá informações relevantes a respeito do funcionamento da aplicação.

Ferramentas de Devops

Ferramentas Devops

Ferramentas Devops

Putz, muitos nomes, muita ferramenta!!! 😧

O número de ferramentas para cada coisa que envolve DevOPs é muito extenso, então, seria muito exaustivo explorar cada uma.

Por isso, na parte técnica, pretendo explorar apenas algumas delas, preferencialmente as mais utilizadas, para cada estágio do DevOPs.

Infraestrutura como Código

As ferramentas de DevOps oferecem a facilidade de poder automatizar toda a parte de infra-estrutura e suas configurações.

Por exemplo, digamos que uma loja virtual de chocolates tenha x máquinas oferecendo recursos para: os servidores da aplicação, web, banco de dados, etc.

Em épocas sazonais, como por exemplo, a páscoa, a venda dispara e a loja recebe muito mais acessos do que em outros meses.

Para que a loja continue a atender seus clientes satisfatoriamente, sem que o site da loja caia, ou fique lento e demore a responder, é necessário provisionar mais recursos nesse período, para suportar a demanda mais alta de clientes.

Para isso, talvez seja necessário aumentar a quantidade para 10x máquinas, ou talvez 100x, enfim.

Tudo isso pode ser automatizado com ferramentas de DevOps de automatização de provisionamento de infraestrutura.

Automatizando a Infraestrutura

Com programação, isto é, com código e usando ferramentas adequadas, é possível deixar a parte de infra, ou boa parte dela, no automático, usando ferramentas como: terraformchef, ansible, puppet, entre outras.

Antes do conceito de DevOps, todas essas providências eram de responsabilidade da equipe de infraestrutura, encarregada de manter a aplicação funcionando.

Em geral, as empresas tinham seus parques de máquinas servidoras para suprir todas essas variabilidades na quantidade de clientes durante o ano.

Boa parte dessas máquinas desses parques particulares de empresas, ficavam ociosas, além de que em 2 anos mais ou menos, todas as máquinas se tornavam obsoletas, por isso, depois da consolidação dos servidores em nuvem e automatização de infraestrutura, esse investimento em parques de máquinas particulares, ou seja, infraestrutura on-premise, passou a não compensar mais.

Claro que isso ainda depende de vários fatores, de vários detalhes, mas, em geral, o que se vê são as empresas migrando para computação na cloud utilizando a infraestrutura oferecida por fornecedores de cloud.

Estratégias de automatização de configuração

Existem duas estratégias principais usadas pelas ferramentas de gerenciamento de configuração de infraestrutura:

  • Pull Configuration, a configuração é puxada pela máquina nó, a configuração definida no nó mestre (master node), o chef e o puppet trabalham com essa estratégia.
  • Push Configuration, o ansible e o saltstack seguem um fluxo de trabalho “push“. A máquina onde o ansible ou saltstack é executado, usa SSH nas máquinas clientes, para copiar arquivos, instalar remotamente pacotes, etc.

Conteinerização (Containerization)

Um contêiner é uma opção mais leve do que uma máquina virtual sendo executada em um sistema host.

Ele usa o core do sistema operacional da máquina host, por isso, é muito mais leve do que máquinas virtuais, que emulam uma máquina completa, totalmente independente e justamente por isso, consume muito mais recursos.

A grande vantagem do contêiner é deixar o ambiente de desenvolvimento e de produção bem próximos, de forma que quando a implantação do software em produção for feita, não dê problemas de conflitos, de dependências, etc.

Docker

Um container docker por exemplo, contém os binários executáveis da aplicação, as bibliotecas usadas na aplicação.

O docker é a plataforma de contêiner líder do setor de inovação contínua e de alta velocidade, permitindo que as organizações construam e compartilhem sem problemas qualquer aplicativo.

CoreOS

O principal concorrente é o CoreOS RKT, a pronúncia é “Rocket”, que é uma tecnologia de contêiner muito segura, projetada para diminuir muitas das falhas inerentes do modelo de contêiner do docker.

LXC (LinuX Containers)

Outro concorrente é o LXC (LinuX Containers), uma tecnologia de virtualização no nível do sistema operacional que permite a criação e a execução de vários ambientes virtuais isolados do Linux (VE) em um único host de controle.

Esses níveis ou contêineres de isolamento podem ser usados ​​para aplicativos específicos da área restrita ou para emular um host totalmente novo.

Docker o Líder

Como o docker é sem dúvida o mais utilizado, mais popular, enfim, o líder da tecnologia de contêineres, ele será a ferramenta de contêiner que pretendo focar na parte mais técnica das aulas de DevOPs.

contextualização final sobre a tecnologia de contêineres

A tecnologia de contêineres está moldando o futuro do desenvolvimento de software e está causando uma mudança estrutural no mundo da computação em nuvem.

Os desenvolvedores estão adotando a tecnologia de contêineres e as empresas estão adotando-a a uma taxa explosiva.

As vantagens da tecnologia de contêineres para software são:

1. Independência da plataforma: crie uma vez e execute em qualquer lugar.

Um grande benefício dos contêineres é a portabilidade.

Um contêiner agrupa um aplicativo com tudo o que ele precisa para executar, como arquivos de configuração e dependências.

Isso permite que você execute aplicativos de maneira fácil e confiável em diferentes ambientes, como área de trabalho local, ou seja, sua máquina de desenvolvimento, em servidores físicos, servidores virtuais, ambientes de teste, armazenamento temporário, produção e nuvens públicas ou privadas.

Essa portabilidade concede às organizações uma grande flexibilidade, acelera o processo de desenvolvimento e facilita a troca para outro ambiente ou provedor em nuvem, se necessário.

2. Eficiência e densidade de recursos

Como os contêineres não exigem um sistema operacional separado, eles usam menos recursos.

Enquanto uma máquina virtual normalmente usa muitos gigabytes em disco e memória, um contêiner geralmente usa apenas algumas dezenas de megabytes, possibilitando executar muito mais contêineres do que VMs em um único servidor.

Por usar muito menos recursos computacionais, menos custosos serão os servidores cloud da sua infra.

3. Isolamento efetivo e compartilhamento de recursos

Embora os contêineres sejam executados no mesmo servidor e usem os mesmos recursos, eles não interagem entre si.

Se um aplicativo falhar, outros contêineres com o mesmo aplicativo continuarão funcionando perfeitamente e não terão problemas técnicos.

Esse isolamento também diminui os riscos à segurança: se um aplicativo for invadido ou violado por malware, os efeitos negativos resultantes não se espalharão para os outros contêineres em execução.

4. Velocidade: inicie, crie, replique ou destrua contêineres em segundos

Como mencionado anteriormente, os contêineres são leves e iniciam em menos de um segundo, pois não requerem uma inicialização de um sistema operacional inteiro.

Criar, replicar ou destruir contêineres também é apenas uma questão de segundos, acelerando bastante o processo de desenvolvimento, o tempo de colocação no mercado, isto é, a aplicação rodando em produção e a velocidade operacional.

O lançamento de novos softwares ou versões nunca foi tão fácil e rápido.

Mas a velocidade aumentada também oferece grandes oportunidades para melhorar a experiência do cliente, pois permite que organizações e desenvolvedores ajam rapidamente, por exemplo, quando se trata de corrigir bugs ou adicionar novos recursos.

5. Escala imensa e suave

Um grande benefício dos contêineres é que eles oferecem a possibilidade de escala horizontal, o que significa que você pode adicionar mais contêineres idênticos em um cluster para expandir.

Com o dimensionamento inteligente, onde você executa apenas os contêineres necessários em tempo real, você pode reduzir drasticamente os custos de recursos e acelerar o retorno do investimento.

A tecnologia de contêineres e a escala horizontal têm sido usadas por grandes fornecedores como Google, Twitter e Netflix há anos.

6. Simplicidade operacional

Ao contrário da virtualização tradicional, onde cada VM tem seu próprio sistema operacional, os contêineres executam processos de aplicativos isolados do sistema operacional que o hospeda.

Isso significa que o sistema operacional host não precisa de software específico para executar aplicativos, o que simplifica o gerenciamento do sistema host e a aplicação rápida de atualizações e patches de segurança.

7. Melhor produtividade do desenvolvedor e pipeline de desenvolvimento

Uma infraestrutura baseada em contêiner oferece muitas vantagens, promovendo um pipeline de desenvolvimento eficaz.

Como mencionado anteriormente, os contêineres garantem que os aplicativos sejam executados e funcionem conforme projetado localmente.

Essa eliminação de inconsistências ambientais torna o teste e a depuração menos complicados e demorados, pois há menos diferenças entre a execução do aplicativo na estação de trabalho, no servidor de teste ou em qualquer ambiente de produção.

O mesmo vale para atualizar seus aplicativos: você simplesmente modifica o arquivo de configuração, cria novos contêineres e destrói os antigos, um processo que pode ser executado em segundos.

Além desses benefícios conhecidos, ferramentas de contêiner como o Docker oferecem muitas outras vantagens.

Uma delas é o controle de versão, possibilitando a implantação ou a reversão com tempo de inatividade zero.

Aula 01                       Aula 03

Voltar para página principal do blog

Todas as aulas desse curso

Se tiverem gostado, dêem um joinha 👍 na página do Código Fluente no
Facebook

Link do código fluente no Pinterest

Novamente deixo meus link de afiliados:

Hostinger

Digital Ocean

One.com

Obrigado, até a próxima e bons estudos. 😉

 

 

About The Author
-

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>