SlideShare una empresa de Scribd logo
1 de 37
Descargar para leer sin conexión
DevOps & Docker
Com a stack Microsoft
Grazi Bonizi
Sou Consultora DevOps e auxilio empresas durante seu processo
de transformação digital. Coordeno a trilha de Arquitetura .Net no
The Developers Conference, compartilho código no GitHub,
escrevo no Medium, e participo de Meetups e PodCasts sobre
DevOps, Azure, .Net, Docker e DDD
https://twitter.com/grazibonizi
https://github.com/grazibonizi
https://medium.com/@grazibonizi
https://www.linkedin.com/in/graziella-bonizi-b14835a0/
1
2
Conteúdo
Fundamentos do DevOps
Introdução ao Docker
Introdução ao Kubernetes
Apresentando o Azure DevOps
3
DevOps é um assunto amplo, e envolve tanto um lado mais humano e cultural, quanto
um lado técnico e mais prático. O conteúdo desta palestra é voltado para o lado prático,
portando, além dos conceitos do DevOps, apresentarei os fundamentos de Docker e
Kubernetes, relacionados à containerização e microsserviços, e também apresentarei a
plataforma de DevOps da Microsoft, o Azure DevOps, antigo VSTS.
Por que DevOps?
4
• DevOps consiste em um conjunto de práticas para entregar software melhor e mais
rápido.
• Um dos pilares é a aproximação entre as áreas Desenvolvimento e Operações, tanto
culturalmente, quanto por meio de tecnologias e ferramentas que atravessem ou
reduzam esses limites.
• Reduzindo o tempo entre o desenvolvimento e a entrega, é possível ter ciclos que
favoreçam a aprendizagem validada, viabilizando maior integridade, segurança e
eficiência nas entregas.
Disciplinas DevOps
Agile Planning
Version Control
Continuous
Integration
Continuous
Delivery
Public & Hybrid
Clouds
Monitoring &
Logging
Containers
Microservices
Infrastructure
as a Code
5
• As disciplinas DevOps são as principais áreas que uma organização pode focar para
entregar e sustentar uma solução com maior agilidade e eficiência.
• Algumas envolvem uma quebra de paradigma, como Planejamento Ágil e Nuvens
Híbridas, outras não necessariamente, como Infraestrutura como Código.
• Algumas são mais subjetivas e podem surtir efeito a longo prazo, outras são mais
práticas e de resultado concreto – com a implementação de integração e entrega
contínuas (CI/CD), por exemplo, é possível reduzir deploys que demoravam horas a
dias para serem executados manualmente a apenas alguns minutos.
• Algumas afetam mais a área de Desenvolvimento, outras a de Operações.
Agile Planning
Agile Planning
Version Control
Continuous
Integration
Continuous
Delivery
Public & Hybrid
Clouds
Monitoring &
Logging
Containers
Microservices
Infrastructure
as a Code
6
• Planejamento Ágil, ou Práticas Lean, envolvem um conjunto de processos e mudança
de mindset para reduzir o ciclo de entregas e permitir a aprendizagem validada.
Kaban, Scrum, CMMI ou outras frameworks de trabalho podem ser utilizadas.
• Essa disciplina se torna bem desafiadora por trazer um impacto direto na cultura da
empresa, inclusive na forma em que a contratação de desenvolvimento de software é
realizada – por escopo e/ou por prazo.
• É importante abordar esta disciplina, porém insistir nela quando há uma resistência
muito forte pode trazer o efeito oposto ao que se busca, causando desgaste entre as
pessoas, impactando os prazos e diminuindo a qualidade das entregas. Jeff Ries fala
sobre isso em seu artigo “Developers should abandom Agile”, disponível no link
https://ronjeffries.com/articles/018-01ff/abandon-1/
Agile Planning
7
Independente de usar ou não alguma framework Ágil, o planejamento, distribuição e
acompanhamento de atividades deve ser realizado. A ferramenta de apoio deve permitir
• Organizar e distribuir tarefas
• Garantir a visibilidade do andamento do projeto
• Trazer indicadores para viabilizar a aprendizagem validada das entregas
Version Control
Agile Planning
Version Control
Continuous
Integration
Continuous
Delivery
Public & Hybrid
Clouds
Monitoring &
Logging
Containers
Microservices
Infrastructure
as a Code
9
Versionamento de código é uma disciplina que a maioria das empresas já atua em algum
nível. É muito claro que o código precisa ser versionado, porém alguns pontos muitas
vezes não são abordados com os devidos cuidados:
• Mesmo que haja apenas um desenvolvedor trabalhando no código, ele precisa ser
versionado, desde suas primeiras linhas
• Demos, samples e scripts utilitários também deveriam ser versionados em um
repositório apropriado – você nunca sabe quando irá precisar deles
• Scripts de banco e de automação de infraestrutura também são código, portanto
deveriam ser versionados
• O time deve conseguir recuperar determinada versão de código facilmente – por
exemplo, o que está em produção, ou a versão anterior
Version Control
10
• Hoje, a ferramenta mais sólida e aceita no mercado para versionamento é o Git
• Controle de Versão não se trata apenas de armazenamento e histórico – afeta
diretamente como a equipe trabalha
• Para isso, defina estratégias de branches, ou ramificações de código, para que o time
possa trabalhar isoladamente sem sobreescrever o trabalho um do outro
• Permita que o time revise o código antes de disponibilizá-lo, com estratégias de pull
requests e branch policies
• É importante utilizar ferramentas que permitam vincular o código desenvolvido à
tarefas planejadas para permitir o rastreamento (ex: vincular o ID de um commit com
o ID de uma tarefa)
Continuous Integration
Agile Planning
Version Control
Continuous
Integration
Continuous
Delivery
Public & Hybrid
Clouds
Monitoring &
Logging
Containers
Microservices
Infrastructure
as a Code
12
Continuous Integration é uma disciplina chave para o DevOps. Com ela são
implementadas ferramentas e automações para garantir que o código no servidor esteja
sempre íntegro e pronto para ser obtido por alguém da equipe ou deployado em algum
ambiente.
Continuous Integration
13
As ferramentas de CI fornecem o feedback rápido se o código que está sendo enviado
manteve os critérios definidos pela equipe em relação à integridade, por exemplo
• Compila?
• Atende a padronização especificada?
• Os testes unitários / integração / aceitação foram bem sucedidos?
• Os testes unitários atendem a taxa mínima de cobertura de código?
• Está protegido contra vulnerabilidades conhecidas?
Continuous Integration
14
A esteira, ou pipeline de build / CI, consiste normalmente nos seguintes passos
• Obtenção do código em um local “limpo”, sem configurações prévias de dependências
de aplicação (ex: se um programador novo clonar o repositório e executar algum
script de inicialização, será o suficiente para que o código compile? Ou será
necessária alguma operação manual?)
• Compilação
• Execução das etapas de validação de integridade (testes, análise estática de código)
• Geração do artefato (também chamado de “Build” ou “Pacote”)
• Publicação do artefato em um repositório centralizado
Continuous Integration
15
• Uma das premissas do processo de Integração Contínua é a geração de um artefato
imutável. O artefato, que pode ser por exemplo um executável, um conjunto de dll’s,
páginas web ou scripts, quando combinado com as configurações de um ambiente, é
um release em potencial neste ambiente
• Se o artefato permitir alterações, não há a garantia de que o que foi validado em um
ambiente será o mesmo conteúdo a ser publicado no próximo ambiente
• Mais informações sobre como lidar com artefatos e arquivos de configuração podem
ser vistas no
• https://12factor.net/build-release-run
• https://12factor.net/config
Continuous Delivery
Agile Planning
Version Control
Continuous
Integration
Continuous
Delivery
Public & Hybrid
Clouds
Monitoring &
Logging
Containers
Microservices
Infrastructure
as a Code
17
• Continuous Delivery é o conjunto de processos e ferramentas que permitem que o
produto seja entregue no ambiente de destino automaticamente, isto é, sem
necessidade de intervenção manual.
• Essa disciplina traz efeitos imediatos na velocidade de entrega da empresa ou
organização. Aproxima as áreas de Desenvolvimento e Operações, permitindo que os
desenvolvedores se foquem na entrega das soluções de ponta a ponta, e operadores
foquem na sustentação e crescimento dos ambientes e plataforma.
Continuous Delivery
18
• As ferramentas de automação de esteira de deploy devem permitir configurar fluxo de
aprovação, deploy em horários agendados, pré e pós condições
• Continuous Delivery significa que toda versão estável de código é um release em
potencial
• Continuous Deployment significa que toda versão estável será disponibilizada
Continuous Delivery
19
Exemplo de pipelines de Build e Release combinadas:
• Determinado commit dispara um processo de build, gerando um artefato.
• A cada estágio da esteira (DEV, BETA e PROD) o artefato é combinado com a
configuração deste ambiente e entregue
• As entregas ficam mais velozes, menos sujeitas a falhas humanas, e o fluxo de
aprovação tem mais credibilidade
Public & Hybrid Clouds
Agile Planning
Version Control
Continuous
Integration
Continuous
Delivery
Public & Hybrid
Clouds
Monitoring &
Logging
Containers
Microservices
Infrastructure
as a Code
21
O uso de nuvens públicas ou híbridas está para a área de Infraestrutura como o CI/CD
para a área de Desenvolvimento. Enquanto com o CI/CD é possível reduzir o tempo de
deploy de aplicações de dias para minutos, com os grandes provedores de nuvens
públicas, como a Azure, AWS e Google Cloud Platform, é possível reduzir o tempo de
provisionamento de recursos de semanas para horas ou minutos.
Public & Hybrid Clouds
22
Para ilustrar o impacto da utilização de nuvens públicas em uma organização, pense no
seguinte cenário: uma empresa fornece uma solução que foi muito bem aceita no
mercado, e passou a ter um crescimento exponencial de usuários, exigindo uma
expansão de recursos.
• Datacenter On Premises: Caso a infraestrutura da solução esteja em um datacenter
local, será necessário adquirir mais hardware. Em um processo tradicional, o
responsável pela infra fará uma requisição de compra, que passará por uma série de
etapas até ser aprovada. O hardware será entregue no estabelecimento, e precisará
ser configurado para ficar disponível. Isso supondo que o datacenter suporte
fisicamente a expansão de hardware. Caso contrário, será necessário montar um outro
datacenter ou migrar para uma área maior, com resfriamento, no-breaks, e talvez
implique até na contratação de mais pessoas para suportá-lo 24/7. Isso pode
demorar semanas ou até meses.
• Nuvem Privada: Esse processo é reduzido a abrir um chamado com o fornecedor e
aguardar o cumprimento do SLA, que pode durar horas ou poucos dias.
• Nuvem Híbrida: Provedores como o Azure fornecem portais e ferramentas em que é
possível solicitar diretamente o recurso e tê-lo disponível em minutos.
Public & Hybrid Clouds
23
• Utilizar nuvens públicas pode implicar em uma quebra de paradigma, principalmente
se a organização lida com dados altamente confidenciais, como financeiros ou
judiciais.
Porém as nuvens públicas possuem mais certificados de segurança, alta
disponibilidade e eficiência no atendimento do que a maioria das nuvens privadas,
quanto mais em relação à datacenters on premisses.
• Conheça mais sobre os Azure Datacenters com esta curta demonstração:
https://channel9.msdn.com/Blogs/Azure/Azure-Datacenter-Video
Monitoring & Logging
Agile Planning
Version Control
Continuous
Integration
Continuous
Delivery
Public & Hybrid
Clouds
Monitoring &
Logging
Containers
Microservices
Infrastructure
as a Code
25
• DevOps não diz respeito apenas ao desenvolvimento e deploy de software, e sim a
práticas que permitem o crescimento sustentável da solução em todo o seu ciclo de
vida. Isso inclui ferramentas de logging e monitoramento em diversos níveis.
• Informação consistente, atual e disponível é um pilar para a aprendizagem validada.
Monitoring & Logging
26
O monitoramento pode ser aplicado em vários níveis:
• Infraestrutura: Acompanhe o uso de CPU, disco e memória do servidores e rede,
identifique falhas e faça projeções para o aumento de capacidade de acordo com o
uso
• Aplicação: Acompanhe o consumo dos serviços, identifique falhas e tenha acesso aos
logs para maior agilidade no troubleshoot
• Comportamento de usuários: Obtenha feedback sobre as features da solução, e
identifique quais áreas são mais utilizadas e o grau de satisfação
Infrastructure as a Code
Agile Planning
Version Control
Continuous
Integration
Continuous
Delivery
Public & Hybrid
Clouds
Monitoring &
Logging
Containers
Microservices
Infrastructure
as a Code
28
Infrastrutura como código é transformar o provisionamento e/ou configuração de
recursos em scripts que podem ser versionados e até testados.
Infrastructure as a Code
29
• Com a infraestrutura como código, é possível guardar os pré requisitos de
determinado ambiente para que seja possível recriá-lo sempre que necessário.
• Isso aumenta a velocidade no provisionamento de recursos e diminui as chances de
falha humana. Aliando essa prática à utilização de nuvens públicas, é possível criar
múltiplos recursos com a mesma configuração, em um intervalo de minutos.
• “Servers are not pets” – essa frase mostra uma quebra de paradigma ao se
considerar um servidor On Premises configurado manualmente, em que há a
preocupação em mantê-lo operacional, e servidores criados via script na nuvem, que
podem ser descartados e recriados facilmente.
Containers
Agile Planning
Version Control
Continuous
Integration
Continuous
Delivery
Public & Hybrid
Clouds
Monitoring &
Logging
Containers
Microservices
Infrastructure
as a Code
31
A utilização de containers abstrai claramente alguns princípios do DevOps de
aproximação entre as áreas de Desenvolvimento e Infraestrutura.
Com containers, o que é entregue é todo um ambiente, desde o sistema operacional até
a aplicação pronta para ser executada, ao invés de apenas os binários e arquivos da
aplicação.
Containers
32
• O problema mais clássico que a utilização de containers reduz é o famoso “funciona
na minha máquina”. O ambiente de produção é diferente do ambiente de
homologação, por sua vez, diferente do ambiente de desenvolvimento. Até a máquina
de um desenvolvedor é diferente da máquina do outro. Sem algum nível de
isolamento, a aplicação pode depender de recursos que estão pré-configurados na
máquina, que podem não ser compatíveis em outros ambientes.
• O container provém esse isolamento. A aplicação fica dentro de uma estrutura
semelhante à uma máquina virtual, porém muito mais leve, possibilitando que todos
os pré-requisitos de software e dependências da aplicação estejam contidas dentro
dessa estrutura, independente da configuração do ambiente em que o container está
rodando.
• Em 2020, mais de 50% das empresas irão rodar aplicações
críticas, conteinerizadas e nativas para a nuvem em produção,
comparando com os menos de 5% de hoje. – Gartner
• Docker é a plataforma mais bem sucedida e aceita de
containers no Mercado
• Suporte a containers Windows e Linux
Por que Docker?
33
Docker é uma plataforma open source de containers, a mais aceita no mercado. Já
deixou de ser uma novidade e é hoje uma solução consolidada
Dockerfile Imagem Container
Elementos
34
Para entender mais sobre Docker, é importante estar familiarizado com os seguintes
termos:
• Dockerfile: conjunto de instruções de criação e configuração do ambiente
• Imagem: binários compactados de forma a serem armazenados e transportados
• Container: imagem em execução
Dockerfile Imagem Container
Elementos
35
Uma analogia que pode ajudar a compreender o que representam esses termos:
• Dockerfile: receita de bolo
• Imagem: mistura para bolo
• Container: o próprio bolo

Sistema Operacional
Middleware
Dependências de aplicação
Web Server
Aplicação
Comando de inicialização
Debian
DotnetCore Runtime
Pacotes Nuget
Kestrel
Binários e arquivos estáticos
dotnet app.dll
Estrutura comum de um Dockerfile
36
Um exemplo de aplicação containerizada na estrutura de um Dockerfile, desde o SO até
o comando que será executado quando o container for inicializado.
Atenção para o ponto em destaque – em um contexto tradicional, o que é entregue é
um pacote com os binários e arquivos estáticos da aplicação. No contexto de aplicações
containerizadas, todo o restante também é fornecido
FROM microsoft/dotnet:sdk AS build-env
WORKDIR /app
# Copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore
# Copy everything else and build
COPY . ./
RUN dotnet publish -c Release -o out
# Build runtime image
FROM microsoft/dotnet:aspnetcore-runtime
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
37
Exemplo de um dockerfile
Microservices
Agile Planning
Version Control
Continuous
Integration
Continuous
Delivery
Public & Hybrid
Clouds
Monitoring &
Logging
Containers
Microservices
Infrastructure
as a Code
40
Microsserviços é um conceito muito atual no mercado. Quando aplicado de maneira
adequada, permite o crescimento sustentável e maior escalabilidade de soluções
complexas, porém aumenta o grau de complexidade do gerenciamento da solução como
um todo.
Antes de mais nada, é importante frisar: uma aplicação monolítica ou um conjunto
pequeno de serviços normalmente é o suficiente para atender um produto. Não aplique
o conceito de microsserviços sem haver a real necessidade disso.
Microservices
41
• A principal diferença entre uma aplicação monolítica de uma solução em
microsserviços é que o desenvolvimento não é apenas distribuído, mas independente.
Pense ainda que é uma única solução, mas com componentes cujo ciclo de vida é
individual.
• Isso adiciona a complexidade técnica de gerenciar dezenas ou centenas de
repositórios e esteiras de deploy, além da complexidade de versionamento/
compatibilidade e dificuldade de realizar testes integrados.
• Porém é possível lidar com serviços mais críticos de maneira diferenciada. Para um e-
commerce durante a Black Friday, é necessário escalar os serviços de autenticação e
carrinho de compras, mas não o de cadastro de produtos novos, por exemplo. Não só
em relação à escalabilidade, é possível utilizar tecnologias mais adequadas em
aplicações de alta performance, definir os times de desenvolvimento de maneira
coerente à complexidade do serviço e outras práticas que o desenvolvimento
distribuído permite.
• Plataforma completa para publicação e gerenciamento de
serviços, oferecendo alta disponibilidade, autocura
• Gerenciamento de comunicação externa e interna dos containers
• Gerenciamento de configurações e senhas
• Coleta e centraliza logs
• Facilida a gestão de elasticidade e escalabilidade das aplicações
Por que Kubernetes?
42
• Quando se fala em Microsserviços, podem haver dezenas ou centenas de serviços se
comunicando para atender uma solução de negócio. Alguns deles podem ser
acessados externamente, como o frontend de um e-commerce ou uma API de
produto, e outros se comunicam apenas internamente. O grau de criticidade e
disponibilidade pode ser diferente, alguns podem exigir mais processamento que
outros…
• O Kubernetes é uma plataforma desenhada para o gerenciamento de containers em
um cenário de Microsserviços.
• A plataforma permite gerenciar cenários complexos de uma maneira muito mais
simples, comparando com configurações.
43
• Um cluster Kubernetes normalmente é composto por um ou mais servidores master
e dois ou mais nodes. O master é responsável pela orquestração e gerenciamento, e
os containers e outros recursos são executados dentro dos nodes. É possível dividir
de maneira lógica o cluster em ambientes – (DEV, HML e PROD), mas sem se
preocupar necessariamente com a divisão física, isto é, que nodes atendem DEV,
HML ou PROD.
• Isso por padrão não importa para a plataforma – a divisão lógica, também chamada
de Namespace, é isolada por natureza.
• O mesmo namespace utilizar recursos de nodes distintos permite que, caso um node
fique indisponível, os recursos dele sejam realocados nos outros sem comprometer a
disponibilidade da solução.
Secrets Config Maps
App 1
Registry
App 2
Storage
44
• Em um namespace há tudo que é necessário para a execução das aplicações –
repositório de imagens docker, configurações, segredos, armazenamento, permissões,
logs, e as aplicações em si.
• É possível criar ambientes para representarem o fluxo de validação tradicional (ex:
DEV / HML / PRD), ou criá-los sob demanda.
• Em resumo, quando se trata de containers e microsserviços, o Kubernetes é uma das
plataformas mais consolidadas no Mercado para o gerenciamento de aplicações.
MS Outros
Git source control Azure DevOps Bitbucket, GitLab
Agile Planning Azure DevOps Jira, Trello
CI/CD Azure DevOps Bamboo, Jenkins
Wiki Azure DevOps Confluence
Package Management Azure DevOps Nexus
Monitoring Application Insights Kibana, New Relic
Tests Azure DevOps ALM
Container Registry Azure Container Registry Docker Hub
Kubernetes Platform Azure Kubernetes Service Openshift
Comparativo de ferramentas
47
O Azure DevOps reúne os principais recursos para viabilizar a implementação do
DevOps em uma organização. Combinado com outros recursos do Azure, como o
Application Insights, Container Registry e o AKS, é possível contemplar todas as práticas
mencionadas nesta apresentação, de forma moderna, intuitiva e integrada.
• Introdução ao DevOps: https://docs.microsoft.com/en-us/azure/devops/what-is-devops
• Podcast sobre Kubernetes: https://www.lambda3.com.br/2018/04/lambda3-podcast-94-
kubernetes/
• 12-Factor App: https://12factor.net/
• Developers should abandom Agile: https://ronjeffries.com/articles/018-01ff/abandon-1/
Aprofunde seus conhecimentos
48
Grazi Bonizi
https://twitter.com/grazibonizi
https://github.com/grazibonizi
https://medium.com/@grazibonizi
https://www.linkedin.com/in/graziella-bonizi-b14835a0/
49

Más contenido relacionado

La actualidad más candente

Open4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSourceOpen4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSource
tdc-globalcode
 

La actualidad más candente (20)

DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia II
DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia IIDevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia II
DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia II
 
Boas práticas de desenvolvimento ágil com Continuous Integration + Delivery e...
Boas práticas de desenvolvimento ágil com Continuous Integration + Delivery e...Boas práticas de desenvolvimento ágil com Continuous Integration + Delivery e...
Boas práticas de desenvolvimento ágil com Continuous Integration + Delivery e...
 
Alm open source
Alm open sourceAlm open source
Alm open source
 
Open4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSourceOpen4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSource
 
Migração SVN para GIT
Migração SVN para GITMigração SVN para GIT
Migração SVN para GIT
 
Arquitetura de Software para a Entrega Continua
Arquitetura de Software para a Entrega ContinuaArquitetura de Software para a Entrega Continua
Arquitetura de Software para a Entrega Continua
 
Jenkins workshop
Jenkins workshopJenkins workshop
Jenkins workshop
 
São Paulo MuleSoft Meetups - DevOps
São Paulo MuleSoft Meetups - DevOpsSão Paulo MuleSoft Meetups - DevOps
São Paulo MuleSoft Meetups - DevOps
 
E se ao invés de Dev e Ops for DevOps? Uma introdução a cultura DevOps
E se ao invés de Dev e Ops for DevOps? Uma introdução a cultura DevOpsE se ao invés de Dev e Ops for DevOps? Uma introdução a cultura DevOps
E se ao invés de Dev e Ops for DevOps? Uma introdução a cultura DevOps
 
DevOps Apresentação Encontro Rational 2013
DevOps Apresentação Encontro Rational 2013DevOps Apresentação Encontro Rational 2013
DevOps Apresentação Encontro Rational 2013
 
DevOps - visão geral
DevOps - visão geralDevOps - visão geral
DevOps - visão geral
 
O que é DevOps? Introdução à abordagem pela IBM
O que é DevOps? Introdução à abordagem pela IBMO que é DevOps? Introdução à abordagem pela IBM
O que é DevOps? Introdução à abordagem pela IBM
 
Implementando Entrega Contínua
Implementando Entrega ContínuaImplementando Entrega Contínua
Implementando Entrega Contínua
 
Latinoware 2019 - Kubernetes a plataforma de grandes ideias
Latinoware 2019 - Kubernetes a plataforma de grandes ideiasLatinoware 2019 - Kubernetes a plataforma de grandes ideias
Latinoware 2019 - Kubernetes a plataforma de grandes ideias
 
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsQuebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
 
Introdução a Application Life-cycle Management Open Source
Introdução a Application Life-cycle Management Open SourceIntrodução a Application Life-cycle Management Open Source
Introdução a Application Life-cycle Management Open Source
 
Continuous delivery
Continuous deliveryContinuous delivery
Continuous delivery
 
São Paulo MuleSoft Meetup - Unwired API Led & Custom Polices
São Paulo MuleSoft Meetup - Unwired API Led & Custom PolicesSão Paulo MuleSoft Meetup - Unwired API Led & Custom Polices
São Paulo MuleSoft Meetup - Unwired API Led & Custom Polices
 
DevOps - A Origem
DevOps - A OrigemDevOps - A Origem
DevOps - A Origem
 
Agile Tester – a importância da automação dos testes no DevOps - Sidnei Eiji ...
Agile Tester – a importância da automação dos testes no DevOps - Sidnei Eiji ...Agile Tester – a importância da automação dos testes no DevOps - Sidnei Eiji ...
Agile Tester – a importância da automação dos testes no DevOps - Sidnei Eiji ...
 

Similar a DevOps & Docker com a stack Microsoft

Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptx
Carlos Gonzaga
 

Similar a DevOps & Docker com a stack Microsoft (20)

MIT DevOps IaC - Infra como Código
MIT DevOps IaC - Infra como CódigoMIT DevOps IaC - Infra como Código
MIT DevOps IaC - Infra como Código
 
Como aplicar práticas DevOps em um sistema monólito
Como aplicar práticas DevOps em um sistema monólito Como aplicar práticas DevOps em um sistema monólito
Como aplicar práticas DevOps em um sistema monólito
 
Falando sobre DevOps no azure
Falando sobre DevOps no azureFalando sobre DevOps no azure
Falando sobre DevOps no azure
 
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
 
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021
 
Projeto e Desenvolvimento de Software
Projeto e Desenvolvimento de SoftwareProjeto e Desenvolvimento de Software
Projeto e Desenvolvimento de Software
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de Software
 
TDC2018SP | Trilha Arq .Net - 12-factor apps: Boas praticas na construcao de ...
TDC2018SP | Trilha Arq .Net - 12-factor apps: Boas praticas na construcao de ...TDC2018SP | Trilha Arq .Net - 12-factor apps: Boas praticas na construcao de ...
TDC2018SP | Trilha Arq .Net - 12-factor apps: Boas praticas na construcao de ...
 
12 Factor App TDC São Paulo 2018
12 Factor App TDC São Paulo 201812 Factor App TDC São Paulo 2018
12 Factor App TDC São Paulo 2018
 
Ferramenta de Cloud Computer para apoio à Engenharia de Software
Ferramenta de Cloud Computer para apoio à Engenharia de SoftwareFerramenta de Cloud Computer para apoio à Engenharia de Software
Ferramenta de Cloud Computer para apoio à Engenharia de Software
 
Azure Bootcamp 2018 - DevOps para profissionais de Infra - Infomach / Goiânia
Azure Bootcamp 2018 - DevOps para profissionais de Infra - Infomach / GoiâniaAzure Bootcamp 2018 - DevOps para profissionais de Infra - Infomach / Goiânia
Azure Bootcamp 2018 - DevOps para profissionais de Infra - Infomach / Goiânia
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptx
 
The twelve factor apps and openruko
The twelve factor apps and openrukoThe twelve factor apps and openruko
The twelve factor apps and openruko
 
O desafio de sustentar centenas de servicos
O desafio de sustentar centenas de servicosO desafio de sustentar centenas de servicos
O desafio de sustentar centenas de servicos
 
Subm_SamuelPereira_FINAL
Subm_SamuelPereira_FINALSubm_SamuelPereira_FINAL
Subm_SamuelPereira_FINAL
 
Women@MicrosoftCommunities - DevOps e Azure: uma combinação perfeita!
Women@MicrosoftCommunities - DevOps e Azure: uma combinação perfeita!Women@MicrosoftCommunities - DevOps e Azure: uma combinação perfeita!
Women@MicrosoftCommunities - DevOps e Azure: uma combinação perfeita!
 
Construindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em GoConstruindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em Go
 
Curso de Verão - Aula 03 - Introdução ao CI-CD e Infraestrutura como Código
Curso de Verão - Aula 03 - Introdução ao CI-CD e Infraestrutura como CódigoCurso de Verão - Aula 03 - Introdução ao CI-CD e Infraestrutura como Código
Curso de Verão - Aula 03 - Introdução ao CI-CD e Infraestrutura como Código
 
TDC 2019 Cloud - Liberte sua arquitetura com cloud native
TDC 2019 Cloud - Liberte sua arquitetura com cloud nativeTDC 2019 Cloud - Liberte sua arquitetura com cloud native
TDC 2019 Cloud - Liberte sua arquitetura com cloud native
 
MIT - Estudo de Caso utilizando Cloud & DevOps
MIT - Estudo de Caso utilizando Cloud & DevOps  MIT - Estudo de Caso utilizando Cloud & DevOps
MIT - Estudo de Caso utilizando Cloud & DevOps
 

DevOps & Docker com a stack Microsoft

  • 1. DevOps & Docker Com a stack Microsoft Grazi Bonizi Sou Consultora DevOps e auxilio empresas durante seu processo de transformação digital. Coordeno a trilha de Arquitetura .Net no The Developers Conference, compartilho código no GitHub, escrevo no Medium, e participo de Meetups e PodCasts sobre DevOps, Azure, .Net, Docker e DDD https://twitter.com/grazibonizi https://github.com/grazibonizi https://medium.com/@grazibonizi https://www.linkedin.com/in/graziella-bonizi-b14835a0/ 1 2
  • 2. Conteúdo Fundamentos do DevOps Introdução ao Docker Introdução ao Kubernetes Apresentando o Azure DevOps 3 DevOps é um assunto amplo, e envolve tanto um lado mais humano e cultural, quanto um lado técnico e mais prático. O conteúdo desta palestra é voltado para o lado prático, portando, além dos conceitos do DevOps, apresentarei os fundamentos de Docker e Kubernetes, relacionados à containerização e microsserviços, e também apresentarei a plataforma de DevOps da Microsoft, o Azure DevOps, antigo VSTS.
  • 3. Por que DevOps? 4 • DevOps consiste em um conjunto de práticas para entregar software melhor e mais rápido. • Um dos pilares é a aproximação entre as áreas Desenvolvimento e Operações, tanto culturalmente, quanto por meio de tecnologias e ferramentas que atravessem ou reduzam esses limites. • Reduzindo o tempo entre o desenvolvimento e a entrega, é possível ter ciclos que favoreçam a aprendizagem validada, viabilizando maior integridade, segurança e eficiência nas entregas.
  • 4. Disciplinas DevOps Agile Planning Version Control Continuous Integration Continuous Delivery Public & Hybrid Clouds Monitoring & Logging Containers Microservices Infrastructure as a Code 5 • As disciplinas DevOps são as principais áreas que uma organização pode focar para entregar e sustentar uma solução com maior agilidade e eficiência. • Algumas envolvem uma quebra de paradigma, como Planejamento Ágil e Nuvens Híbridas, outras não necessariamente, como Infraestrutura como Código. • Algumas são mais subjetivas e podem surtir efeito a longo prazo, outras são mais práticas e de resultado concreto – com a implementação de integração e entrega contínuas (CI/CD), por exemplo, é possível reduzir deploys que demoravam horas a dias para serem executados manualmente a apenas alguns minutos. • Algumas afetam mais a área de Desenvolvimento, outras a de Operações.
  • 5. Agile Planning Agile Planning Version Control Continuous Integration Continuous Delivery Public & Hybrid Clouds Monitoring & Logging Containers Microservices Infrastructure as a Code 6 • Planejamento Ágil, ou Práticas Lean, envolvem um conjunto de processos e mudança de mindset para reduzir o ciclo de entregas e permitir a aprendizagem validada. Kaban, Scrum, CMMI ou outras frameworks de trabalho podem ser utilizadas. • Essa disciplina se torna bem desafiadora por trazer um impacto direto na cultura da empresa, inclusive na forma em que a contratação de desenvolvimento de software é realizada – por escopo e/ou por prazo. • É importante abordar esta disciplina, porém insistir nela quando há uma resistência muito forte pode trazer o efeito oposto ao que se busca, causando desgaste entre as pessoas, impactando os prazos e diminuindo a qualidade das entregas. Jeff Ries fala sobre isso em seu artigo “Developers should abandom Agile”, disponível no link https://ronjeffries.com/articles/018-01ff/abandon-1/
  • 6. Agile Planning 7 Independente de usar ou não alguma framework Ágil, o planejamento, distribuição e acompanhamento de atividades deve ser realizado. A ferramenta de apoio deve permitir • Organizar e distribuir tarefas • Garantir a visibilidade do andamento do projeto • Trazer indicadores para viabilizar a aprendizagem validada das entregas
  • 7. Version Control Agile Planning Version Control Continuous Integration Continuous Delivery Public & Hybrid Clouds Monitoring & Logging Containers Microservices Infrastructure as a Code 9 Versionamento de código é uma disciplina que a maioria das empresas já atua em algum nível. É muito claro que o código precisa ser versionado, porém alguns pontos muitas vezes não são abordados com os devidos cuidados: • Mesmo que haja apenas um desenvolvedor trabalhando no código, ele precisa ser versionado, desde suas primeiras linhas • Demos, samples e scripts utilitários também deveriam ser versionados em um repositório apropriado – você nunca sabe quando irá precisar deles • Scripts de banco e de automação de infraestrutura também são código, portanto deveriam ser versionados • O time deve conseguir recuperar determinada versão de código facilmente – por exemplo, o que está em produção, ou a versão anterior
  • 8. Version Control 10 • Hoje, a ferramenta mais sólida e aceita no mercado para versionamento é o Git • Controle de Versão não se trata apenas de armazenamento e histórico – afeta diretamente como a equipe trabalha • Para isso, defina estratégias de branches, ou ramificações de código, para que o time possa trabalhar isoladamente sem sobreescrever o trabalho um do outro • Permita que o time revise o código antes de disponibilizá-lo, com estratégias de pull requests e branch policies • É importante utilizar ferramentas que permitam vincular o código desenvolvido à tarefas planejadas para permitir o rastreamento (ex: vincular o ID de um commit com o ID de uma tarefa)
  • 9. Continuous Integration Agile Planning Version Control Continuous Integration Continuous Delivery Public & Hybrid Clouds Monitoring & Logging Containers Microservices Infrastructure as a Code 12 Continuous Integration é uma disciplina chave para o DevOps. Com ela são implementadas ferramentas e automações para garantir que o código no servidor esteja sempre íntegro e pronto para ser obtido por alguém da equipe ou deployado em algum ambiente.
  • 10. Continuous Integration 13 As ferramentas de CI fornecem o feedback rápido se o código que está sendo enviado manteve os critérios definidos pela equipe em relação à integridade, por exemplo • Compila? • Atende a padronização especificada? • Os testes unitários / integração / aceitação foram bem sucedidos? • Os testes unitários atendem a taxa mínima de cobertura de código? • Está protegido contra vulnerabilidades conhecidas?
  • 11. Continuous Integration 14 A esteira, ou pipeline de build / CI, consiste normalmente nos seguintes passos • Obtenção do código em um local “limpo”, sem configurações prévias de dependências de aplicação (ex: se um programador novo clonar o repositório e executar algum script de inicialização, será o suficiente para que o código compile? Ou será necessária alguma operação manual?) • Compilação • Execução das etapas de validação de integridade (testes, análise estática de código) • Geração do artefato (também chamado de “Build” ou “Pacote”) • Publicação do artefato em um repositório centralizado
  • 12. Continuous Integration 15 • Uma das premissas do processo de Integração Contínua é a geração de um artefato imutável. O artefato, que pode ser por exemplo um executável, um conjunto de dll’s, páginas web ou scripts, quando combinado com as configurações de um ambiente, é um release em potencial neste ambiente • Se o artefato permitir alterações, não há a garantia de que o que foi validado em um ambiente será o mesmo conteúdo a ser publicado no próximo ambiente • Mais informações sobre como lidar com artefatos e arquivos de configuração podem ser vistas no • https://12factor.net/build-release-run • https://12factor.net/config
  • 13. Continuous Delivery Agile Planning Version Control Continuous Integration Continuous Delivery Public & Hybrid Clouds Monitoring & Logging Containers Microservices Infrastructure as a Code 17 • Continuous Delivery é o conjunto de processos e ferramentas que permitem que o produto seja entregue no ambiente de destino automaticamente, isto é, sem necessidade de intervenção manual. • Essa disciplina traz efeitos imediatos na velocidade de entrega da empresa ou organização. Aproxima as áreas de Desenvolvimento e Operações, permitindo que os desenvolvedores se foquem na entrega das soluções de ponta a ponta, e operadores foquem na sustentação e crescimento dos ambientes e plataforma.
  • 14. Continuous Delivery 18 • As ferramentas de automação de esteira de deploy devem permitir configurar fluxo de aprovação, deploy em horários agendados, pré e pós condições • Continuous Delivery significa que toda versão estável de código é um release em potencial • Continuous Deployment significa que toda versão estável será disponibilizada
  • 15. Continuous Delivery 19 Exemplo de pipelines de Build e Release combinadas: • Determinado commit dispara um processo de build, gerando um artefato. • A cada estágio da esteira (DEV, BETA e PROD) o artefato é combinado com a configuração deste ambiente e entregue • As entregas ficam mais velozes, menos sujeitas a falhas humanas, e o fluxo de aprovação tem mais credibilidade
  • 16. Public & Hybrid Clouds Agile Planning Version Control Continuous Integration Continuous Delivery Public & Hybrid Clouds Monitoring & Logging Containers Microservices Infrastructure as a Code 21 O uso de nuvens públicas ou híbridas está para a área de Infraestrutura como o CI/CD para a área de Desenvolvimento. Enquanto com o CI/CD é possível reduzir o tempo de deploy de aplicações de dias para minutos, com os grandes provedores de nuvens públicas, como a Azure, AWS e Google Cloud Platform, é possível reduzir o tempo de provisionamento de recursos de semanas para horas ou minutos.
  • 17. Public & Hybrid Clouds 22 Para ilustrar o impacto da utilização de nuvens públicas em uma organização, pense no seguinte cenário: uma empresa fornece uma solução que foi muito bem aceita no mercado, e passou a ter um crescimento exponencial de usuários, exigindo uma expansão de recursos. • Datacenter On Premises: Caso a infraestrutura da solução esteja em um datacenter local, será necessário adquirir mais hardware. Em um processo tradicional, o responsável pela infra fará uma requisição de compra, que passará por uma série de etapas até ser aprovada. O hardware será entregue no estabelecimento, e precisará ser configurado para ficar disponível. Isso supondo que o datacenter suporte fisicamente a expansão de hardware. Caso contrário, será necessário montar um outro datacenter ou migrar para uma área maior, com resfriamento, no-breaks, e talvez implique até na contratação de mais pessoas para suportá-lo 24/7. Isso pode demorar semanas ou até meses. • Nuvem Privada: Esse processo é reduzido a abrir um chamado com o fornecedor e aguardar o cumprimento do SLA, que pode durar horas ou poucos dias. • Nuvem Híbrida: Provedores como o Azure fornecem portais e ferramentas em que é possível solicitar diretamente o recurso e tê-lo disponível em minutos.
  • 18. Public & Hybrid Clouds 23 • Utilizar nuvens públicas pode implicar em uma quebra de paradigma, principalmente se a organização lida com dados altamente confidenciais, como financeiros ou judiciais. Porém as nuvens públicas possuem mais certificados de segurança, alta disponibilidade e eficiência no atendimento do que a maioria das nuvens privadas, quanto mais em relação à datacenters on premisses. • Conheça mais sobre os Azure Datacenters com esta curta demonstração: https://channel9.msdn.com/Blogs/Azure/Azure-Datacenter-Video
  • 19. Monitoring & Logging Agile Planning Version Control Continuous Integration Continuous Delivery Public & Hybrid Clouds Monitoring & Logging Containers Microservices Infrastructure as a Code 25 • DevOps não diz respeito apenas ao desenvolvimento e deploy de software, e sim a práticas que permitem o crescimento sustentável da solução em todo o seu ciclo de vida. Isso inclui ferramentas de logging e monitoramento em diversos níveis. • Informação consistente, atual e disponível é um pilar para a aprendizagem validada.
  • 20. Monitoring & Logging 26 O monitoramento pode ser aplicado em vários níveis: • Infraestrutura: Acompanhe o uso de CPU, disco e memória do servidores e rede, identifique falhas e faça projeções para o aumento de capacidade de acordo com o uso • Aplicação: Acompanhe o consumo dos serviços, identifique falhas e tenha acesso aos logs para maior agilidade no troubleshoot • Comportamento de usuários: Obtenha feedback sobre as features da solução, e identifique quais áreas são mais utilizadas e o grau de satisfação
  • 21. Infrastructure as a Code Agile Planning Version Control Continuous Integration Continuous Delivery Public & Hybrid Clouds Monitoring & Logging Containers Microservices Infrastructure as a Code 28 Infrastrutura como código é transformar o provisionamento e/ou configuração de recursos em scripts que podem ser versionados e até testados.
  • 22. Infrastructure as a Code 29 • Com a infraestrutura como código, é possível guardar os pré requisitos de determinado ambiente para que seja possível recriá-lo sempre que necessário. • Isso aumenta a velocidade no provisionamento de recursos e diminui as chances de falha humana. Aliando essa prática à utilização de nuvens públicas, é possível criar múltiplos recursos com a mesma configuração, em um intervalo de minutos. • “Servers are not pets” – essa frase mostra uma quebra de paradigma ao se considerar um servidor On Premises configurado manualmente, em que há a preocupação em mantê-lo operacional, e servidores criados via script na nuvem, que podem ser descartados e recriados facilmente.
  • 23. Containers Agile Planning Version Control Continuous Integration Continuous Delivery Public & Hybrid Clouds Monitoring & Logging Containers Microservices Infrastructure as a Code 31 A utilização de containers abstrai claramente alguns princípios do DevOps de aproximação entre as áreas de Desenvolvimento e Infraestrutura. Com containers, o que é entregue é todo um ambiente, desde o sistema operacional até a aplicação pronta para ser executada, ao invés de apenas os binários e arquivos da aplicação.
  • 24. Containers 32 • O problema mais clássico que a utilização de containers reduz é o famoso “funciona na minha máquina”. O ambiente de produção é diferente do ambiente de homologação, por sua vez, diferente do ambiente de desenvolvimento. Até a máquina de um desenvolvedor é diferente da máquina do outro. Sem algum nível de isolamento, a aplicação pode depender de recursos que estão pré-configurados na máquina, que podem não ser compatíveis em outros ambientes. • O container provém esse isolamento. A aplicação fica dentro de uma estrutura semelhante à uma máquina virtual, porém muito mais leve, possibilitando que todos os pré-requisitos de software e dependências da aplicação estejam contidas dentro dessa estrutura, independente da configuração do ambiente em que o container está rodando.
  • 25. • Em 2020, mais de 50% das empresas irão rodar aplicações críticas, conteinerizadas e nativas para a nuvem em produção, comparando com os menos de 5% de hoje. – Gartner • Docker é a plataforma mais bem sucedida e aceita de containers no Mercado • Suporte a containers Windows e Linux Por que Docker? 33 Docker é uma plataforma open source de containers, a mais aceita no mercado. Já deixou de ser uma novidade e é hoje uma solução consolidada
  • 26. Dockerfile Imagem Container Elementos 34 Para entender mais sobre Docker, é importante estar familiarizado com os seguintes termos: • Dockerfile: conjunto de instruções de criação e configuração do ambiente • Imagem: binários compactados de forma a serem armazenados e transportados • Container: imagem em execução
  • 27. Dockerfile Imagem Container Elementos 35 Uma analogia que pode ajudar a compreender o que representam esses termos: • Dockerfile: receita de bolo • Imagem: mistura para bolo • Container: o próprio bolo 
  • 28. Sistema Operacional Middleware Dependências de aplicação Web Server Aplicação Comando de inicialização Debian DotnetCore Runtime Pacotes Nuget Kestrel Binários e arquivos estáticos dotnet app.dll Estrutura comum de um Dockerfile 36 Um exemplo de aplicação containerizada na estrutura de um Dockerfile, desde o SO até o comando que será executado quando o container for inicializado. Atenção para o ponto em destaque – em um contexto tradicional, o que é entregue é um pacote com os binários e arquivos estáticos da aplicação. No contexto de aplicações containerizadas, todo o restante também é fornecido
  • 29. FROM microsoft/dotnet:sdk AS build-env WORKDIR /app # Copy csproj and restore as distinct layers COPY *.csproj ./ RUN dotnet restore # Copy everything else and build COPY . ./ RUN dotnet publish -c Release -o out # Build runtime image FROM microsoft/dotnet:aspnetcore-runtime WORKDIR /app COPY --from=build-env /app/out . ENTRYPOINT ["dotnet", "aspnetapp.dll"] 37 Exemplo de um dockerfile
  • 30. Microservices Agile Planning Version Control Continuous Integration Continuous Delivery Public & Hybrid Clouds Monitoring & Logging Containers Microservices Infrastructure as a Code 40 Microsserviços é um conceito muito atual no mercado. Quando aplicado de maneira adequada, permite o crescimento sustentável e maior escalabilidade de soluções complexas, porém aumenta o grau de complexidade do gerenciamento da solução como um todo. Antes de mais nada, é importante frisar: uma aplicação monolítica ou um conjunto pequeno de serviços normalmente é o suficiente para atender um produto. Não aplique o conceito de microsserviços sem haver a real necessidade disso.
  • 31. Microservices 41 • A principal diferença entre uma aplicação monolítica de uma solução em microsserviços é que o desenvolvimento não é apenas distribuído, mas independente. Pense ainda que é uma única solução, mas com componentes cujo ciclo de vida é individual. • Isso adiciona a complexidade técnica de gerenciar dezenas ou centenas de repositórios e esteiras de deploy, além da complexidade de versionamento/ compatibilidade e dificuldade de realizar testes integrados. • Porém é possível lidar com serviços mais críticos de maneira diferenciada. Para um e- commerce durante a Black Friday, é necessário escalar os serviços de autenticação e carrinho de compras, mas não o de cadastro de produtos novos, por exemplo. Não só em relação à escalabilidade, é possível utilizar tecnologias mais adequadas em aplicações de alta performance, definir os times de desenvolvimento de maneira coerente à complexidade do serviço e outras práticas que o desenvolvimento distribuído permite.
  • 32. • Plataforma completa para publicação e gerenciamento de serviços, oferecendo alta disponibilidade, autocura • Gerenciamento de comunicação externa e interna dos containers • Gerenciamento de configurações e senhas • Coleta e centraliza logs • Facilida a gestão de elasticidade e escalabilidade das aplicações Por que Kubernetes? 42 • Quando se fala em Microsserviços, podem haver dezenas ou centenas de serviços se comunicando para atender uma solução de negócio. Alguns deles podem ser acessados externamente, como o frontend de um e-commerce ou uma API de produto, e outros se comunicam apenas internamente. O grau de criticidade e disponibilidade pode ser diferente, alguns podem exigir mais processamento que outros… • O Kubernetes é uma plataforma desenhada para o gerenciamento de containers em um cenário de Microsserviços. • A plataforma permite gerenciar cenários complexos de uma maneira muito mais simples, comparando com configurações.
  • 33. 43 • Um cluster Kubernetes normalmente é composto por um ou mais servidores master e dois ou mais nodes. O master é responsável pela orquestração e gerenciamento, e os containers e outros recursos são executados dentro dos nodes. É possível dividir de maneira lógica o cluster em ambientes – (DEV, HML e PROD), mas sem se preocupar necessariamente com a divisão física, isto é, que nodes atendem DEV, HML ou PROD. • Isso por padrão não importa para a plataforma – a divisão lógica, também chamada de Namespace, é isolada por natureza. • O mesmo namespace utilizar recursos de nodes distintos permite que, caso um node fique indisponível, os recursos dele sejam realocados nos outros sem comprometer a disponibilidade da solução.
  • 34. Secrets Config Maps App 1 Registry App 2 Storage 44 • Em um namespace há tudo que é necessário para a execução das aplicações – repositório de imagens docker, configurações, segredos, armazenamento, permissões, logs, e as aplicações em si. • É possível criar ambientes para representarem o fluxo de validação tradicional (ex: DEV / HML / PRD), ou criá-los sob demanda. • Em resumo, quando se trata de containers e microsserviços, o Kubernetes é uma das plataformas mais consolidadas no Mercado para o gerenciamento de aplicações.
  • 35. MS Outros Git source control Azure DevOps Bitbucket, GitLab Agile Planning Azure DevOps Jira, Trello CI/CD Azure DevOps Bamboo, Jenkins Wiki Azure DevOps Confluence Package Management Azure DevOps Nexus Monitoring Application Insights Kibana, New Relic Tests Azure DevOps ALM Container Registry Azure Container Registry Docker Hub Kubernetes Platform Azure Kubernetes Service Openshift Comparativo de ferramentas 47 O Azure DevOps reúne os principais recursos para viabilizar a implementação do DevOps em uma organização. Combinado com outros recursos do Azure, como o Application Insights, Container Registry e o AKS, é possível contemplar todas as práticas mencionadas nesta apresentação, de forma moderna, intuitiva e integrada.
  • 36. • Introdução ao DevOps: https://docs.microsoft.com/en-us/azure/devops/what-is-devops • Podcast sobre Kubernetes: https://www.lambda3.com.br/2018/04/lambda3-podcast-94- kubernetes/ • 12-Factor App: https://12factor.net/ • Developers should abandom Agile: https://ronjeffries.com/articles/018-01ff/abandon-1/ Aprofunde seus conhecimentos 48