Muitos de vocês podem estar cientes de todas as teorias relacionadas a . Mas você sabe como implementar os princípios DevOps na vida real? Neste blog, discutirei os cenários de DevOps Real Time que o ajudarão a obter uma breve compreensão de como as coisas funcionam em tempo real.
As dicas que estarei cobrindo nesteArtigo DevOps Real Time Scenariosestá:
- O que é DevOps?
- Problemas resolvidos pelo DevOps
- Cenários de CI (integração contínua)
- Cenários de CT (teste contínuo)
- Cenários de CD (entrega contínua)
- Cenários de dados DevOps
Portanto, vamos começar com nosso primeiro tópico.
converter duplo para inteiro em java
O que é DevOps?
DevOps é uma abordagem de desenvolvimento de software que envolve Desenvolvimento Contínuo, Teste Contínuo, Integração Contínua, Implantação Contínua e Monitoramento Contínuo do software ao longo de seu ciclo de vida de desenvolvimento. Essas atividades são possíveis apenas no DevOps, não no Agile ou em cascata. É por isso que o Facebook e outras empresas importantes escolheram o DevOps como o caminho a seguir para seus objetivos de negócios.DevOps é preferido principalmente para desenvolver software de alta qualidade em ciclos de desenvolvimento mais curtos, o que resulta em maior satisfação do cliente.
Na próxima seção desteNo artigo Cenários em tempo real do DevOps, daremos uma olhada nos vários problemas resolvidos pelo DevOps.
Problemas resolvidos pelo DevOps
1. Agregar valor aos clientes
- DevOps minimiza o tempo é preciso entregar valor aos clientes. O tempo de ciclo desde a conclusão de uma história / tarefa pelo desenvolvedor até a produção reduz significativamente, permitindo que o valor seja realizado o mais rápido possível.
O valor mais importante percebido por meio do DevOps é que ele permite que as organizações de TI focar em suas atividades de negócios “centrais” . Ao remover as restrições do fluxo de valor e automatizar os pipelines de implantação, as equipes podem se concentrar nas atividades. Isso ajuda a criar valor para o cliente, em vez de apenas mover bits e bytes. Essas atividades aumentam a vantagem competitiva sustentável de uma empresa e criam melhores resultados de negócios.
2. Tempo de ciclo reduzido
Internamente, o DevOps é a única maneira de obter agilidade para fornecer código seguro com insights. É importante ter portas e um processo DevOps bem elaborado. Quando você entrega uma nova versão, ela pode ser executada lado a lado com a versão atual. Você também pode comparar métricas para realizar o que deseja com métricas de aplicativo e desempenho.
DevOps direciona as equipes de desenvolvimento para melhoria contínua e ciclos de liberação mais rápidos . Se bem feito, esse processo iterativo permite mais foco ao longo do tempo, nas coisas que realmente importam. Por exemplo, coisas que criam ótimas experiências para os usuários - e menos tempo no gerenciamento de ferramentas, processos e tecnologia.
3. Tempo para o mercado
O problema mais importante a ser resolvido é o redução da complexidade do processo. Isso contribui significativamente para o sucesso do nosso negócio, reduzindo nosso tempo de colocação no mercado, dando-nos um feedback rápido sobre os recursos e nos tornando mais responsivos às necessidades de nossos clientes.
4. Resolução do problema
O maior valor de uma implementação de DevOps bem-sucedida é maior confiança na entrega, visibilidade e rastreabilidade do que está acontecendo, para que você possa resolver os problemas mais rapidamente.
Outra vantagem importante do DevOps é não perder tempo. Alinhar as pessoas e os recursos de uma organização permite implementações e atualizações rápidas. Isso permite que os programas DevOps corrijam problemas antes que se transformem em desastres.O DevOps cria uma cultura de transparência que promove o foco e a colaboração entre as equipes de desenvolvimento, operações e segurança.
CI (Integração Contínua) emCenários em tempo real DevOps
1. Os indivíduos podem ver a integração contínua contraproducente
Os membros de uma equipe de desenvolvimento têm diferentes funções, responsabilidades e prioridades. É possível que a primeira prioridade do gerente de produto seja o lançamento de novos recursos, o gerente de projeto deve garantir que sua equipe cumpra o prazo. Os programadores podem pensar que, se pararem para consertar um pequeno bug toda vez que ele ocorrer, eles ficarão mais lentos. Eles podem sentir que manter a construção limpa é um fardo extra para eles e não serão beneficiados por seus esforços extras. Isso pode potencialmente prejudicar o processo de adaptação.
Para superar isso:
Em primeiro lugar, certifique-se de que toda a sua equipe esteja a bordo antes de adotar a integração contínua.
CTOs e líderes de equipe devem ajudar os membros da equipe a entender os custos e benefícios da integração contínua.
Destaque o que e quando os codificadores serão beneficiados, dedicando-se a um método de trabalho diferente que requer um pouco mais de abertura e flexibilidade.
2. Integrando CI em seu fluxo de desenvolvimento existente
A adoção da CI inevitavelmente vem com a necessidade de alterar essencialmente algumas partes do seu fluxo de trabalho de desenvolvimento. É possível que seus desenvolvedores não consertem o fluxo de trabalho se ele não estiver quebrado. Isso é possível principalmente se sua equipe tiver uma rotina maior na execução do fluxo de trabalho atual.
Se você deseja alterar o fluxo de trabalho, deve fazê-lo com muito cuidado. Caso contrário, pode comprometer a produtividade da equipe de desenvolvimento e também a qualidade do produto. Sem apoio suficiente da liderança, a equipe de desenvolvimento pode ficar um pouco relutante em realizar uma tarefa com tais riscos envolvidos.
Para superar isso:
Você deve se certificar de que concede tempo suficiente para que sua equipe desenvolva seu novo fluxo de trabalho. Isso é feito para selecionar uma solução flexível de integração contínua que possa suportar seu novo fluxo de trabalho.
Além disso, certifique-se de que a empresa está protegida, mesmo que as coisas não corram muito bem no início.
3. Recaída para os antigos hábitos de teste
O efeito imediato da adoção da integração contínua é que sua equipe fará testes com mais frequência. Portanto, mais testes precisarão de mais casos de teste, e escrever casos de teste pode ser demorado. Conseqüentemente, os desenvolvedores geralmente precisam dividir seu tempo entre consertar bugs e escrever casos de teste.
Temporariamente, os desenvolvedores podem economizar tempo testando manualmente, mas pode prejudicar mais a longo prazo. Quanto mais eles procrastinarem a redação de casos de teste, mais difícil será acompanhar o progresso do desenvolvimento. Na pior das hipóteses, sua equipe pode acabar voltando ao antigo processo de teste.
Para superar isso:
diploma de pós-graduação vs mestrado
Você deve enfatizar que escrever casos de teste desde o início pode economizar muito tempo para sua equipe e pode garantir uma alta cobertura de teste de seu produto.
Além disso, incorpore à cultura de sua empresa a ideia de que os casos de teste são ativos tão valiosos quanto a própria base de código.
4. Desenvolvedores que ignoram mensagens de erro
É um problema comum que, quando equipes maiores trabalham juntas, a quantidade de notificações de IC torna-se opressora e os desenvolvedores começam a ignorá-las e silenciá-las. Portanto, é possível que eles percam as atualizações que são relevantes para eles.
Isso pode levar a um estágio em que os codificadores desenvolvem uma imunidade relativa a compilações interrompidas e mensagens de erro. Quanto mais eles ignoram as notificações relevantes, mais tempo se desenvolvem sem feedback na direção errada. Isso poderia causar grandes reversões, desperdício de dinheiro, recursos e tempo.
Para superar isso:
Você só deve enviar atualizações críticas.
Envie a notificação apenas aos respectivos desenvolvedores que são responsáveis por corrigi-la.
CT (teste contínuo) dentroCenários em tempo real DevOps
Obtendo a especificação de requisitos certa
Se você atender aos seus requisitos corretamente, quase metade da batalha estará ganha. Portanto, se você tiver uma compreensão muito específica e precisa dos requisitos, poderá projetar planos de teste melhor e cobrir bem os requisitos.
Ainda assim, muitas equipes gastam muito tempo e esforço simplesmente esclarecendo os requisitos. Essa é uma armadilha muito comum e, para evitá-la, as equipes podem adotar técnicas de teste baseado em modelo e de desenvolvimento orientado a comportamento. Isso ajuda a projetar cenários de teste de maneira precisa e adequada.
Essas práticas certamente ajudarão a abordar e resolver as lacunas mais rapidamente. Além disso, permite que eles gerem mais casos de teste automaticamente desde os estágios iniciais de um sprint.
Orquestração de pipeline
As vantagens do teste contínuo e entrega contínua estão intimamente ligados à orquestração de pipeline. Isso significa entender diretamente como funciona, por que funciona, como analisar os resultados e como e quando escalonar. Tudo depende do pipeline e, portanto, você precisa integrá-lo ao pacote de automação.
Mas a razão pela qual as equipes se atrapalham é que nenhuma solução fornece o conjunto de ferramentas completo necessário para construir um pipeline de CD.
Normalmente, as equipes precisam procurar as peças do quebra-cabeça que são corretas para elas. Não existem ferramentas perfeitas, normalmente apenas as melhores ferramentas, que fornecem integrações junto com várias outras ferramentas. E, claro, uma API que também permite integrações fáceis.
Resumindo, é impossível implementar testes contínuos sem a velocidade e a confiabilidade de um pipeline padronizado e automatizado.
Ampliando e gerenciando a complexidade
Outro cenário importante é que o teste contínuo se torna mais complexo à medida que avança em direção ao ambiente de produção. Os testes aumentam em número e também em complexidade com o amadurecimento do código e o ambiente se tornando mais complexo.
Você deve atualizar os testes sempre que atualizar diferentes fases e scripts automatizados. Como resultado, o tempo geral necessário para executar os testes também tende a aumentar em direção ao lançamento.
A solução para isso está em uma orquestração de teste aprimorada que fornece a quantidade certa de cobertura de teste em ciclos de sprint mais curtos e permite que as equipes façam entregas com confiança. Idealmente, todo o processo deve ser automatizado com TC realizada em vários estágios. Isso é feito usando portas de política e intervenção manual, até que o código seja colocado em produção.
Criação de loops de feedback
Sem frequentes loops de feedback em cada estágio do ciclo de desenvolvimento, o teste contínuo não é possível. Esta é em parte a razão pela qual o TC é difícil de implementar. Você não precisa apenas de testes automatizados, mas também de visibilidade dos resultados e da execução do teste.
Os loops de feedback tradicionais, como ferramentas de registro, criadores de perfil de código e ferramentas de monitoramento de desempenho, não são mais eficazes. Eles não trabalham juntos nem fornecem a profundidade de conhecimento necessária para corrigir os problemas. Painéis em tempo real que geram relatórios automaticamente e feedback acionável em todo o SDLC ajudam a lançar o software mais rapidamente na produção com menos defeitos. O acesso em tempo real aos painéis e acesso para todos os membros da equipe ajuda o mecanismo de feedback contínuo.
Falta de ambientes
O Teste Contínuo significa simplesmente testar com mais frequência e isso requer acessar vários ambientes com mais frequência. Isso representa um gargalo se os referidos ambientes não estiverem disponíveis no momento em que são necessários. Alguns ambientes estão disponíveis por meio de APIs e alguns por meio de várias interfaces. Alguns desses ambientes podem ser construídos com arquitetura moderna, enquanto outros com sistemas cliente / servidor ou mainframe legados monolíticos.
Mas a questão aqui é como coordenar os testes entre os vários proprietários de ambiente? Também é possível que nem sempre mantenham os ambientes funcionando. A resposta para tudo isso é Virtualização . Ao virtualizar o ambiente, você pode testar o código sem se preocupar muito com áreas que não mudam.Tornar os ambientes acessíveis e disponíveis sob demanda por meio da virtualização certamente ajuda a remover um gargalo significativo de seu pipeline.
CD (entrega contínua) dentroCenários em tempo real DevOps
Implantações demorando muito
Os aplicativos distribuídos normalmente requerem mais do que 'copiar e colar' arquivos em um servidor. A complexidade tende a aumentar se você tiver um farm de servidores. A incerteza sobre o que implantar, onde e como, é uma coisa bastante normal. O resultado? Longos tempos de espera para levar nossos artefatos para o próximo ambiente da rota para atrasar tudo, testar, tempo de vida, etc.
O que o DevOps traz para a mesa? As equipes de desenvolvimento e operações de TI definem um processo de implantação em uma sessão de colaboração sem culpa. Primeiro, eles verificam o que funciona e depois levam para o próximo nível com automação para facilitar a entrega contínua. Isso reduz drasticamente o tempo de implantação e também abre o caminho para implantações mais frequentes.
Artefatos, scripts e outras dependências ausentes
Freqüentemente encontramos falhas após a implantação de uma nova versão de um software funcional. Isso geralmente é causado por bibliotecas ausentes ou scripts de banco de dados que não estão sendo atualizados. Isso geralmente é causado pela falta de clareza sobre quais dependências implantar e sua localização. Promover a colaboração entre o desenvolvimento e as operações pode ajudar a resolver esse tipo de problema na maioria dos casos.
Quando se trata de automação, você pode definir dependências, o que ajuda muito a acelerar as implantações. Ferramentas de gerenciamento de configuração como Fantoche ou Chefe contribuir com um nível extra de definição de dependências. Podemos definir não apenas dependências em nosso aplicativo, mas também no nível de infraestrutura e configuração do servidor. Por exemplo, podemos criar uma máquina virtual para um teste e instalar / configurar gato antes que nossos artefatos sejam publicados.
Monitoramento de produção ineficaz
Às vezes, você configura as ferramentas de monitoramento de uma forma que produz muitos dados irrelevantes de produção, no entanto, outras vezes elas não produzem o suficiente ou nada. Não há definição do que você precisa cuidar e quais são as métricas.
Você deve concordar sobre o que monitorar e quais informações produzir e, em seguida, colocar os controles em prática. As ferramentas de gerenciamento de desempenho de aplicativos são de grande ajuda se sua organização puder pagá-las, dê uma olhada em AppDynamics, New Relic e AWS X-Ray.
Cenários de dados DevOps
DevOps trata da eliminação dos riscos associados ao desenvolvimento de novos softwares: a análise de dados identifica esses riscos. Para medir e melhorar continuamente o processo DevOps, a análise deve abranger todo o pipeline. Isso fornece insights inestimáveis para o gerenciamento em todos os estágios do ciclo de vida de desenvolvimento de software.
1. Menos tempo para analisar dados
Com todos os dados gerados a qualquer momento, as organizações precisam aceitar que não podem analisar tudo. Simplesmente não há tempo suficiente durante o dia - e, infelizmente, os robôs ainda não são sofisticados o suficiente para fazer tudo por nós.
Por esse motivo, é importante determinar quais conjuntos de dados são mais significativos. Na maioria dos casos, isso será diferente para cada organização. Portanto, antes de mergulhar, determine os principais objetivos e metas de negócios. Normalmente, essas metas giram em torno das necessidades do cliente - principalmente os recursos mais valiosos que são mais importantes para os usuários finais. Para um varejista, por exemplo, analisar como o tráfego está interagindo com a página de check-out no site e testar como funciona no back-end está no topo da lista.
Algumas dicas rápidas para identificar quais dados são mais importantes para analisar:
Faça um gráfico: determine o impacto que as interrupções terão em seus negócios, fazendo perguntas como: “Se X quebras , que efeito isso terá em outros recursos? ”
Observe os dados históricos: identifique onde os problemas surgiram no passado e continue a analisar os dados dos testes e criar para garantir que isso não aconteça novamente.
2. Comunicação difícil
Hoje, a maioria das organizações ainda opera com equipes e personas diferentes, identificando seus próprios objetivos e utilizando suas próprias ferramentas e tecnologias. Cada equipe atua de forma independente, desconectada do pipeline e se reunindo com as demais equipes apenas na fase de integração.
Quando se trata de olhar para o quadro geral e identificar o que está e o que não está funcionando, a organização luta para chegar a uma solução. Isso ocorre principalmente porque todos estão deixando de compartilhar os dados gerais, tornando a análise impossível.
Para superar esse problema, reformule o fluxo de comunicação para garantir que todos estejam colaborando em todo o SDLC, não apenas durante o processo de integração.
Primeiro, certifique-se de que haja uma forte sincronização nas métricas de DevOps desde o início. O progresso de cada equipe deve ser exibido em um único painel, utilizando os mesmos indicadores-chave de desempenho (KPIs) para dar visibilidade ao gerenciamento de todo o processo. Isso é feito para que eles possam coletar todos os dados necessários para analisar o que deu errado (ou o que deu certo).
Além da conversa inicial sobre métricas, deve haver comunicação constante por meio de reuniões de equipe ou canais digitais como o Slack.
3. Falta de mão de obra
Quando temos poucos funcionários, precisamos de ferramentas mais inteligentes que utilizem o aprendizado profundo para inserir os dados que estamos coletando e tomar decisões rapidamente. Afinal, ninguém tem tempo para examinar cada execução de teste (e para algumas grandes organizações, pode haver cerca de 75.000 em um determinado dia). O truque é eliminar o ruído e encontrar as coisas certas para se concentrar.
É aqui que a inteligência artificial e o aprendizado de máquina podem ajudar. Muitas ferramentas no mercado hoje utilizam IA e ML para fazer coisas como:
Desenvolva scripts e testes para mover e validar diferentes dados
fatorial de um número java
Relatório de qualidade com base em comportamentos aprendidos anteriormente
Trabalhe em resposta às mudanças em tempo real.
Assim, chegamos ao final deste artigo sobre cenários em tempo real do DevOps.
Agora que você entendeu o que são cenários em tempo real DevOps, confira este pela Edureka, uma empresa de aprendizagem online confiável com uma rede de mais de 250.000 alunos satisfeitos espalhados por todo o mundo. O curso Edureka DevOps Certification Training ajuda os alunos a entender o que é DevOps e ganhar experiência em vários processos e ferramentas DevOps, como Puppet, Jenkins, Nagios, Ansible, Chef, Saltstack e GIT para automatizar várias etapas no SDLC.
Tem alguma questão para nós? Mencione isso na seção de comentários desteArtigo DevOps Real Time Scenariose entraremos em contato com você.