Baixe o app para aproveitar ainda mais
Prévia do material em texto
Devops O que é ? O termo DevOps deriva da junção das palavras "desenvolvimento" (development) e "operações" (operations). Devops é um termo criado para descrever um conjunto de práticas para integração entre as equipes de desenvolvimento de softwares, operações (infraestrutura ou sysadmin) e de apoio envolvidas (como controle de qualidade) e a adoção de processos automatizados para produção rápida e segura de aplicações e serviços. O conceito propõe novos pensamentos sobre o trabalho para a valorização da diversidade de atividades e profissionais envolvidos e atitudes colaborativas. É um processo que torna possível o desenvolvimento ágil de aplicações em um modelo de gestão de infraestrutura definido sob regras rígidas e burocráticas. Etapas: ● plan (planejar); ● code (codificar); ● build (construir); ● test (testar); ● release (entrega); ● deploy (implantação); ● operate (operar); ● monitor (monitorar). Pilares: Comunicação Para criar um software melhor e fazer lançamentos melhores, as equipes precisam se comunicar constantemente entre si, desde a fase de planejamento até a liberação. Dessa forma é possível resolver impedimentos e melhorar a qualidade do processo de liberação. A equipe precisa estar unida e alinhada a um mesmo objetivo. Os membros precisam conversar e aprender continuamente uns com os outros durante o processo. A comunicação é muitas vezes facilitada com o apoio de ferramentas como Slack, Trello etc. Colaboração A colaboração é fundamental para uma verdadeira abordagem de DevOps. Isso precisa ser buscado sempre da melhor maneira, permitindo que haja cooperação entre as equipes de desenvolvedores e operacionais. Assim, é possível alcançar um processo simplificado que facilita a integração entre eles. O melhor entendimento da infraestrutura ajuda a preparar as pessoas para eventuais mudanças necessárias. Ao preparar e compreender esse processo, é possível aprender continuamente e aumentar as taxas de sucesso dos próximos lançamentos. Normalmente, as equipes de DevOps bem-sucedidas trabalham de maneira eficaz utilizando plataformas de colaboração para suporte como o Yammer, o SharePoint, dentre outras. Automação A automação é o coração de todo o processo de transformação de DevOps bem-sucedido. Ela é o principal facilitador dentro desse movimento. É preciso consolidar ambientes estáveis, desenvolvendo processos consistentes de criação, testes e lançamentos com êxito. A automação pode ser usada para tornar o processo de lançamento mais determinístico e para preencher as lacunas entre concepção e produção. As equipes de desenvolvimento podem aprender com as operações. Juntos, são responsáveis por definir o estado desejado da infraestrutura e convertê-lo em código. Ferramentas como PowerShell DSC, Chef e Puppet podem ser usadas para automatizar quase tudo que a equipe precise. Monitoramento O monitoramento nas equipes de DevOps é necessário para fornecer informações cruciais, visando garantir o cumprimento de prazos do serviço e também que o desempenho esteja dentro do ideal planejado. É importante medir o progresso da abordagem para saber se as equipes estão melhorando ou progredindo. Com o suporte de dados e métricas adequadas para compreender o funcionamento no dia a dia, é fácil para as equipes inspecionar a maneira atual de trabalhar e apresentar ideias ou processos para melhorar o sucesso dos lançamentos, que é o que realmente interessa dentro do movimento. A medição dos recursos e processos atuais ajuda as equipes a determinar as áreas problemáticas e definir pontos de atenção que precisam ter recursos dedicados para fazer as alterações de rota. Benefícios: Integração entre áreas Não é repetitivo abordar essa questão. Mesmo porque o DevOps não só une times de áreas específicas da TI como também promove uma ruptura nas barreiras existentes com o negócio, com os gestores de processos e com os “donos” de produtos e de serviços. Assim, além de promover uma atuação sinérgica entre quem desenvolve e quem coloca uma solução na rua, o DevOps permite uma maior comunicação com o demandante de funcionalidades para otimizar os negócios, já que a visão passa a ser fim a fim e o propósito de entregar real valor ao cliente prepondera. Simplificação de processos Esse modo de trabalho prega algumas premissas que permitem tornar fluxos de trabalho menos onerosos e burocráticos. Uma delas é o reuso de módulos de software, a flexibilidade nos projetos para que se adaptem às mudanças e a redução de esforços de entrega. Automação de tarefas Na cultura DevOps, os deploys manuais e outras atribuições dos times de TI passam a ser substituídos por rotinas automatizadas. Com isso, equipes antes alocadas nas etapas para subir novas funcionalidades ou softwares inteiros passam a se dedicar ao aprendizado, à documentação, ao entendimento dos erros recorrentes e à proposição de melhoria contínua. Racionalização de processos Se há simplificação e automação, não há como não ocorrer uma revisão dos processos da TI de modo a torná-los mais racionais, eficientes e econômicos. Um exemplo clássico é a redução do tempo dos ciclos de entregas, dotando os pequenos pacotes de desenvolvimento de um valor antes não reconhecido. A internalização do novo modelo obriga as empresas a adequarem os seus padrões e a redirecionarem os seus esforços para criar um terreno favorável ao pleno funcionamento do paradigma DevOps. Modernização da TI da empresa É intrínseca ao DevOps a tendência da cloud computing, já que plataformas, softwares e infraestruturas oferecidos por terceiros podem ser utilizados para viabilizar os objetivos do cliente. Assim, é possível atuar com nuvens híbridas que diminuem custos operacionais e melhoram a rotina da TI da empresa. Elas ainda agregam ao padrão interno tecnologias de ponta sem que a empresa precise investir em aquisição de equipamentos de última geração. https://gaea.com.br/veja-como-otimizar-os-processos-de-entrega-de-software/ https://gaea.com.br/veja-como-otimizar-os-processos-de-entrega-de-software/ https://gaea.com.br/a-gestao-em-ti-na-era-do-cloud-computing-voce-esta-preparado/ https://gaea.com.br/cloud-hibrida/ Estímulo à colaboração A nuvem trouxe uma nova cultura para as organizações, na qual pessoas passam a ter acesso facilitado à informação e, com isso, afirmam-se em relação à sua atuação e à sua capacidade de contribuir com sugestões e melhorias. No DevOps, essa questão é potencializada ao estimular a integração entre áreas e o entendimento da solução que está sendo desenvolvida por todos os envolvidos. Com isso, problemas podem ser identificados com mais facilidade e a resposta para ele, também. Empoderamento dos times de TI A atuação em DevOps pressupõe o envolvimento de parceiros estratégicos provedores de soluções em nuvem. E eles só se firmam no mercado quando oferecem bons níveis de qualidade, escalabilidade, capacidade e disponibilidade. Gerenciar toda essa esteira é algo complexo e, ao tomar contato com esse tipo de realidade, as equipes envolvidas na TI da empresa aprendem, reciclam os seus conhecimentos e tomam contato com as tendências do mercado. Elasticidade e escalabilidade Os fornecedores de recursos em nuvem oferecem infraestrutura e inteligência que entendem os movimentos do negócio e se adaptam a ele. Isso significa que, ao adotar DevOps, parceiros capazes de expandir ou de retrair recursos entrarão em jogo e permitirão que a empresa contratante pague apenas pelo que usa e tenha, sempre à disposição, componentes na medida da sua necessidade. Fatores que conduzem a adoção do Devops: ● Uso de processos e metodologias de desenvolvimento ágil ● Ampla disponibilidade de infraestrutura https://gaea.com.br/como-fazer-gestao-de-conhecimento/ ● Uso Crescente de automação de data center e ferramentas de gerenciamento de configuração . Filosofiacultural: Em uma Empresa no Devops não se tem duas equipes separadas, com o devops as duas equipes trabalham juntas com objetivo de otimizar a produtividade do desenvolvimento e a confiabilidade das operações, mas para que isso ocorra é necessário uma mudança de cultura e mentalidade pois tradicionalmente as equipes trabalham separadas em ciclos causando lentidão, conflito de comunicação entre outras obstruções, esta barreira entre as equipes e removida com o devops, com o devops a equipe não está responsável por parte daquele serviço e sim com todo o serviço. Com uma cultura nova a empresa fica mais unida, quebrando os obstáculos que impediam a colaboratividade da equipe. Como adotar a DevOps? A DevOps representa uma verdadeira cultura empresarial. Ela não apenas otimiza os processos de desenvolvimento, mas muda a forma dos colaboradores de pensar no seu produto e interagir entre si e com os clientes. Para adotar essa metodologia, é preciso preparar o terreno e implementar certas práticas. Comece estabelecendo as metas específicas que busca alcançar para, então, encontrar as ferramentas que farão sua equipe chegar lá. Isso envolve algumas mudanças estratégicas, como proporcionar aos desenvolvedores maior capacidade de monitoramento dos processos (produção, preparo e teste). Dê autonomia para que as equipes possam visualizar e avaliar o próprio desempenho, evitando grandes silos de informações. Além disso, torne o desempenho um requisito fundamental do time — afinal, entrega rápida exige qualidade na execução e retrabalho perto de zero. Por fim, estabeleça métricas compartilhadas e garanta que o foco da equipe esteja na experiência do usuário. https://www.cronapp.io/5-formas-de-desenvolver-times-auto-organizaveis-em-sua-empresa/ https://www.cronapp.io/experiencia-do-usuario-ux-entenda-como-torna-la-ainda-melhor/ https://www.cronapp.io/experiencia-do-usuario-ux-entenda-como-torna-la-ainda-melhor/ Essas são mudanças essenciais para a implementação da DevOps. Entretanto, não se esqueça de que isso depende da adoção de soluções específicas para viabilizar a gestão e o desenvolvimento. Mitos: DevOps é exclusivista Profissionais de TI acostumados a frameworks bastante consolidados no mercado, como ITIL e Cobit, consideram que não há como conjugar esses métodos tradicionais com o DevOps. O 1º argumento para derrubar essa ideia é a origem do DevOps. Já dissemos que ele está inserido no contexto da TI bimodal, que alia as convenções já estabelecidas com inovações. E isso, por si só, contraria a noção de exclusividade de um método oriundo desse tipo de filosofia. Nas organizações onde já há DevOps implementado, é comum a convivência pacífica com outros modelos. O importante é saber quais processos migram para o novo método e quais permanecem no antigo. Além disso, resolver como esses 2 polos se comunicarão é o “pulo do gato” para uma gestão eficiente dessa bimodalidade em TI. Sem Cloud não há DevOps Não há dúvidas sobre a importância da nuvem na cultura DevOps. E isso faz alguns profissionais entenderem que um não existe sem o outro. Mas na realidade não é bem assim. É perfeitamente cabível a instituição de modelos DevOps em empresas que optam por manter toda a sua infraestrutura internalizada e que preferem desenvolver internamente as suas soluções, de ponta a ponta. https://gaea.com.br/entenda-o-que-e-framework/ https://gaea.com.br/itil-ou-cobit-ainda-ha-duvida/ O foco, nesse caso, é mais sobre cultura do que sobre localização. O importante é que as áreas se integrem para executar da forma mais positiva possível as suas atribuições. Não há exigência de participação de terceiros nem de alocação de recursos externos — embora seja cada vez mais comum e uma forma reconhecidamente produtiva de implementar DevOps, já que há mais mobilidade, colaboração e escalabilidade. Sem um engenheiro de DevOps, o modelo não anda Já que DevOps é uma cultura, mais vale disseminar conceitos, conscientizar colaboradores e compartilhar conhecimentos do que contratar um agente especializado externo para suprir as necessidades de um modelo mais dinâmico, rápido e eficiente. Trazer o DevOps para dentro da cultura da empresa é preciso, e por isso é importante capacitar os times de TI para atuarem dentro desse padrão. Isso não significa que seja desaconselhável contratar uma consultoria especializada. Ela pode ser de grande valia na recomendação de ferramentas, no ajuste de processos e na estrutura organizacional mais adequados ao pleno funcionamento do novo parâmetro. Já se nasce DevOps A ideia de que uma empresa tradicional na sua atuação de TI não pode migrar para o DevOps ainda existe e precisa ser derrubada. Uma área de TI não precisa nascer DevOps para alcançar um bom desempenho nesse estilo de atuação. É possível absorver alguns aspectos dessa cultura e modificar a situação atual do desenvolvimento e da operação de soluções na empresa. O mundo gira e o mercado exige adaptação a novas realidades. Então, não há como sustentar a noção de que algo seja imutável em uma empresa, tampouco que uma TI não possa ser modernizada por já ter se firmado em um alicerce mais tradicional. DevOps elimina a possibilidade de outsourcing A afirmação de que DevOps integra equipes às vezes é interpretada com o sentido de que o DevOps fecha as possibilidades para que equipes externas entrem no jogo. E isso não é verdade. https://gaea.com.br/consultoria-de-ti-tire-aqui-todas-as-suas-duvidas/ https://gaea.com.br/e-book-gratuito-guia-das-ferramentas-devops/ Até pela influência da cloud nessa dinâmica, o DevOps é bastante alinhado com outsourcing, de forma que terceiros podem se responsabilizar por entregas, se essa for uma direção de interesse na gestão da TI da empresa. É sabido que outsourcing em TI traz, para dentro da empresa, uma visão e uma competência especializada. Por isso, a terceirização conjugada com DevOps é possível e até desejável, desde que haja compatibilidade e colaboração entre lado interno e lado externo. Ferramentas: Plan São as principais ferramentas dessa fase: ● Trello: ferramenta prática, flexível e ajustável para gerenciamento ágil de projetos; ● Jira: criação de tarefas de projetos, com um gerenciamento abrangente; ● Asana: auxilia no gerenciamento de tarefas em equipe, com foco em gestão de projetos. Code São as principais ferramentas dessa fase: ● Subversion: focado na área de TI, realiza o controle de versionamento e revisão do código fonte; ● GIT: sistema que facilita a colaboração de criação e manutenção de código fonte. Build São as principais ferramentas desta fase: ● Maven: permite a automatização de compilação de código fonte, podendo ser usada em várias linguagens; ● DBMaestro: automatiza as entradas de versões de banco de dados com maior confiança, já que as atualizações são confirmadas e auditadas pela ferramenta. Test https://gaea.com.br/outsourcing-leitura-obrigatoria-para-entender-os-principais-mitos/ https://gaea.com.br/guia-sobre-gerenciamento-agil-de-projetos/ https://gaea.com.br/guia-sobre-gerenciamento-agil-de-projetos/ https://gaea.com.br/descomplicando-saiba-como-funciona-a-entrega-de-um-codigo-fonte/ São as principais ferramentas desta fase: ● JUnit: ferramenta facilitadora de testes, com apresentação de resultado, feita para programação Java; ● NUnit: ferramenta de construção de testes de forma automatizada, com atuação na plataforma Microsoft.NET. Release São as principais ferramentas desta fase: ● DockerHub: gerencia versionamento de artefatos do Docker; ● Nexus: proporciona um repositório de versionamento para qualquer artefato criado ou utilizado em um projeto específico; ● Python Package Index: repositório de artefatos da linguagem Python. Deploy São as principais ferramentas dessa fase: ● Puppet: responsável pelo gerenciamento de configurações, garantindo quesejam feitas igualmente em todas as máquinas do ambiente; ● Chef: realiza o processo de instalação e configuração de ferramentas necessárias para o uso do ambiente. Operate São as principais ferramentas dessa fase: ● Amazon AWS: disponibiliza servidores virtuais para execução das aplicações; ● Azure: similar ao Amazon AWS, porém, fornecido pela Microsoft, oferecendo algumas soluções próprias. Monitor ● Splunk: ferramenta analítica de logs; ● Zabbix: monitora Sistemas Operacionais, Switches e Storages, com agilidade e praticidade; ● Appydynamics: realiza o monitoramento de máquinas virtuais que operem na linguagem Java. Quem usa ? Grandes empresas que utilizam o DevOps Como já sabemos, o DevOps foi desenvolvido para melhorar as formas estratégicas, o trabalho em equipe e a otimização dos serviços. Isto posto, temos aqui, exemplos de grandes empresas que utilizam o DevOps. Walmart Uma das redes de supermercados mais conhecidas no Brasil e no mundo já adota a cultura do DevOps. Suas estratégias visam estratégias para eliminar a concorrência. Adotando o software Opens Stack, formulando a nuvem privada da empresa, o Walmart cria aplicativos com uma escrita lógica contando com um código aberto e compartilhando infraestruturas que são capazes de diminuir o tempo para o desenvolvimento de muitos serviços dentro da empresa. Adobe A Adobe já tem a cultura adotada desde o ano de 2012 e seu intuito é integrar e automatizar de forma muito mais rápida. Os produtos de softwares empacotados são entregues aos seus clientes de forma mais rápida. Para isso, seus colaboradores estão mais livres manusear os programas uma vez que, trabalham CloudMunch, uma nuvem integradora. Facebook A Fidelity , empresa responsável pelo Facebook, possui muitos negócios que desenvolvem aplicativos. Neste sentido, os processos de lançamento acabam por serem mais demorados, então, a empresa optou pela cultura DevOps que hoje, ela possui uma equipe perfeita. Nos lançamentos de aplicativos, não existem falhas ou atrasos. Isso quer dizer, que a empresa deixa de perder mais de 2 milhões de dólares em processos de aplicativos que não fossem devidamente automatizados. Target Com o desenvolvimento do DevOpsDays, a empresa conseguiu ter mais economia em suas compras. Tudo isso porque esta metodologia visa contar às equipes o trabalho que está sendo desenvolvido de modo que todos possam opinar. A ideia da implantação da cultura do DevOps partiu de uma equipe de desenvolvimento de software. Netflix A empresa que desenvolveu a plataforma mais adorada de todos os tempos, sempre adotou a cultura do DevOps para desenvolver seus trabalhos. Neste sentido, para atender seus milhares de usuários, a empresa aposta em código aberto de automação. Este tipo de implementação permite que os engenheiros de sistema façam o seu trabalho de forma mais ágil durante o dia. Sony A grande e conhecida empresa Sony também adotou a cultura do DevOps e hoje fornece sistemas de gerenciamento que visam vários recursos de entretenimento aos seus usuários finais. Desta maneira, é possível processos mais eficazes que permitem qualidade e otimização na hora da entrega. Nordstrom A empresa que lida com lançamentos de serviços compartilhados, implementou em seu sistema uma forma de DevOps que visa a otimização da atualização nos aplicativos. Ela também resolveu adotar a cultura em todas as suas equipes de desenvolvimento e evita problemas com atrasos e falhas pertinentes a uma antiga sistematização. Amazon A Amazon ao adotar a cultura do DevOps fez com seus colaboradores parassem de desperdiçar 40 % de seu tempo em serviços manuais entre outros. A empresa transferiu seus arquivos para a nuvem, e dessa maneira pode reduzir custos, otimizar suas entregas e satisfazer seus clientes finais. Twiter O Twiter também adotou a cultura do DevOps. É certo que os serviços de atualização podem ser demorados, neste sentido, a empresa adotou a cultura com o objetivo de reduzir a taxa de falhas. Isso permite que o tempo da resposta seja fundamentado, além de otimizar as eventuais paradas que pode ocasionar no sistema. TIM A empresa brasileira de telecomunicação também ganhou muitos benefícios com a adoção da cultura do DevOps. Para isso, ela contou com a virtualização de serviços realizando testes e identificando possíveis bugs antes que eles pudessem entrar em produção. Exemplo: DevOps e suas vantagens O DevOps, que une o desenvolvimento e as operações, foi projetado para aumentar a frequência e a qualidade das liberações de código. Em uma configuração ideal, você deve ter um alto nível de confiança ao divulgar as liberações de código de maneira frequente e altamente automatizada. A alta automação gera economia de tempo e custo e maior eficiência no desenvolvimento. É provável que esses benefícios sejam vistos cada vez mais à medida que as equipes de aplicativos e desenvolvimento aumentam. Ter confiança em lançamentos de código rápidos e ágeis é essencial para promover uma equipe de desenvolvimento eficiente e móvel. Neste artigo: • Fornecerei um estudo de caso de DevOps na Netflix • Examinarei os benefícios de crescer com serviços baseados em nuvem, contêineres e criação de falhas • Optei por assistir a Netflix devido à escala em em que a empresa opera e por causa de sua forte reputação técnica. Eles foram, por exemplo, os primeiros a adotar microsserviços 1 • Termino com um breve resumo dos benefícios de construir um negócio que entenda e tire proveito de uma cultura positiva do DevOps Como alavancar os serviços em nuvem existentes Desde 2007 , a Netflix lançou sua oferta de streaming on-line 2 desde 2007. Desde então, cresceu para uma posição em que em 2015 o serviço representava mais de 36% do tráfego da Internet na América do Norte 3 em 2015. E em 2017, seus usuários transmitiram pouco mais de um bilhão de horas de conteúdo por semana. 4 Para ajudar a lidar com essa escala, a empresa começou a migrar para provedores de nuvem em 2008, um processo concluído em janeiro de 2016. “Nossa jornada para a nuvem na Netflix começou em agosto de 2008, quando experimentamos uma grande corrupção de banco de dados e por três dias não pudemos enviar DVDs para nossos membros. Foi quando percebemos que tínhamos que nos afastar de pontos únicos de falha na escala vertical, como bancos de dados relacionais em nosso datacenter, para sistemas distribuídos altamente confiáveis e escaláveis horizontalmente na nuvem. ” Yury Izrailevsky, vice-presidente de computação em nuvem e engenharia de plataformas da Netflix. Você pode obter o dimensionamento horizontal adicionando mais máquinas ao seu pool de recursos, em vez de dimensionar verticalmente onde você aumenta o desempenho de suas máquinas existentes. A escala horizontal pode fornecer mais opções para escalar dinamicamente e reduzir os riscos de tempo de inatividade. Como uma empresa que precisa lidar com grandes quantidades de tráfego, a Netflix aponta para as vantagens de escalabilidade da nuvem como um dos principais fatores para sua decisão de migrar. Você pode criar todos esses recursos a partir do zero. Mas isso afastaria o foco da sua empresa das necessidades de negócios e, em direção aos inevitáveis desafios técnicos, teria que ser dimensionado de forma eficaz e confiável. “Permitir que a Amazon se concentre na infraestrutura do datacenter permite que nossos engenheiros se concentrem na construção e melhoria de nossos negócios.” John Ciancutti, co-fundador, 60dB. A Netflix também aponta para um certo nível de incerteza em torno das tendências previstas no tráfego e na aceitação de novos recursos. 7 A alavancagem dos serviços em nuvem existentes, com planos de crescimento implementados, elimina as suposições do dimensionamento. Se uma empresaprevê que crescerá 50% nos próximos seis meses, desejará ter certeza de que sua infraestrutura pode lidar com esse aumento de tráfego. Picos curtos no tráfego, onde o tráfego aumenta por um breve período de tempo, mas depois retorna à sua taxa normal, também devem ser tratados. Com os serviços em nuvem, tudo isso é resolvido, o que significa que, como você está menos preocupado com a forma como dimensionará, pode se concentrar na criação de um ótimo produto. Construindo com contêineres A conteinerização é um método de abstrair um ambiente de tempo de execução de aplicativos para que você possa executá-lo consistentemente em diferentes plataformas. A conteinerização com o Docker se tornou cada vez mais popular nos últimos anos. Além de promover a consistência entre ambientes, uma das principais vantagens da conteinerização é que os contêineres podem ser destruídos e criados muito rapidamente. Isso ajuda com dimensionamento, confiabilidade e reversões eficientes. Em abril de 2017, a Netflix ultrapassou um milhão de contêineres lançados por semana. 8 O dimensionamento com serviços em nuvem e contêineres geralmente andam de mãos dadas e existem aplicativos como o Kubernetes que ajudam a automatizar esse processo. A Netflix desenvolveu sua própria ferramenta de gerenciamento de contêiner chamada Titus. “Titus: a base de infraestrutura da Netflix para aplicativos baseados em contêiner. O Titus fornece gerenciamento de recursos e cluster em escala da Netflix, além de execução de contêiner com profunda integração do Amazon EC2 e ativação comum da infraestrutura da Netflix. ” Andrew Spyker, Andrew Leung, Tim Bozarth, Blog de tecnologia da Netflix. A função de Titus é gerenciar contêineres. A Netflix decidiu criar seu próprio software de gerenciamento de contêineres por causa de seus próprios requisitos exclusivos. Eles também se viram em uma situação em que estavam migrando aplicativos de nuvem existentes para um ambiente em contêiner. Titus permite que aplicativos existentes sejam executados sem modificação em um contêiner. Ele também se integra à AWS, lida com o compartilhamento de recursos e gerencia a capacidade. 9 O aplicativo reduz assim os problemas de atrito e dimensionamento que surgem ao executar um aplicativo em um ambiente em contêiner. Construindo o fracasso Na véspera de Natal de 2012, a Netflix sofreu uma interrupção parcial do serviço que durou várias horas. A causa disso foi uma falha na AWS. 10 Em 2014, estimou-se que uma hora de inatividade custaria à Netflix US $ 200.000. 11 Interrupções mais recentes da AWS viram sites importantes ficarem offline. No entanto, a plataforma da Netflix agora pode lidar com esses tipos de problemas. 12 13 Para ajudar a se preparar para esses cenários, o Netflix cria falhas. Isso significa aceitar que em algum momento algumas partes de seus aplicativos provavelmente não funcionem conforme o esperado. Com essa expectativa, você pode se preparar, da melhor maneira possível, para essas eventualidades. O 'Exército Simian da Netflix' faz parte dos esforços da empresa para construir o fracasso. Por exemplo, eles têm uma ferramenta que eles chamam de 'Macaco do Caos', que os ajuda a testar a estabilidade de seus aplicativos de produção. “Uma ferramenta que desativa aleatoriamente nossas instâncias de produção para garantir que possamos sobreviver a esse tipo comum de falha sem nenhum impacto no cliente. O nome vem da idéia de liberar um macaco selvagem com uma arma em seu data center (ou região da nuvem) para abater aleatoriamente instâncias e roçar cabos - enquanto continuamos a servir nossos clientes sem interrupção. ” Blog de tecnologia da Netflix. As equipes, trabalhando para projetar uma solução para proteger contra possíveis falhas, devem estar ainda mais motivadas a criar uma boa solução se souberem que esses problemas serão simulados em ambientes de produção reais. Ter controle sobre o tempo dessas simulações permite alocar recursos adequados. E, ao simular as falhas pelas quais a Netflix está construindo, a empresa pode aprender com essas experiências e se proteger melhor contra falhas não planejadas de natureza semelhante. Criando uma cultura de DevOps Observei algumas das práticas que a Netflix promove em sua cultura de DevOps, bem como, brevemente, algumas das ferramentas que eles desenvolveram como resultado disso. Em sua essência, uma cultura DevOps positiva deve promover lançamentos frequentes, alta automação e confiabilidade do software. Além disso, é aconselhável compartilhar um entendimento de alto nível de algumas das motivações e objetivos de uma grande cultura DevOps entre sua equipe de negócios maior. Isso promoverá a estabilidade e a capacidade de atualização de aplicativos e ajudará você a alinhar seus ambientes de desenvolvimento e operações com os objetivos maiores de seus negócios, à medida que se esforça para obter sucesso no mundo online. A Netflix realiza centenas de implantações por dia, sem o uso de ferramentas como Chef ou Puppet, sem um departamento de garantia de qualidade e sem engenheiros de liberações. Para conseguir tal feito, a Netflix desenvolveu um PaaS próprio, permitindo que cada equipe realize implantações de suas partes da infraestrutura, sempre que quiserem e quantas vezes for necessário. Durante a QCon Nova York 2013, Jeremy Edberg realizou uma palestra sobre a infraestrutura que a Netflix construiu para suportar esse ritmo acelerado de iterações, utilizando serviços de nuvem da Amazon. A Netflix usa uma arquitetura orientada a serviços para implementar sua API, que trata a maioria das requisições do site (cerca de 2 bilhões por dia). Nos bastidores, a API é dividida em muitos serviços, com cada serviço gerenciado por um time. Isso permite que os times trabalhem de forma relativamente autônoma e decidam por eles mesmos quando e com qual frequência querem implantar novas funcionalidades. A Netflix adota fortemente a cultura DevOps. Os desenvolvedores constroem, implantam e operam seus próprios clusters de servidores e têm responsabilidade sobre problemas ocorridos em seus setores. No caso de falha, uma reunião é organizada para investigar a causa raiz, onde são discutidas abordagens para prevenir questões similares no futuro, de modo similar à técnica dos cinco porquês. Implantações (deployments) na Netflix são completamente automatizadas. Quando um serviço precisa ser implantado, o desenvolvedor primeiro adiciona as alterações a um repositório de código. O código é selecionado pelo Jenkins, que posteriormente realiza a construção de um novo pacote da aplicação. Após isso, uma nova imagem da VM (AMI) é criada a partir de uma imagem base, contendo http://www.netflix.com/ http://www.opscode.com/chef/ https://puppetlabs.com/ https://qconnewyork.com/user/310 https://qconnewyork.com/user/310 http://en.wikipedia.org/wiki/5_Whys http://jenkins-ci.org/ uma distribuição Linux, além do software que todos os servidores da Netflix executam, incluindo uma JVM e um Tomcat, possivelmente com customizações adicionais feitas pela equipe. Em cima dessa estrutura, o pacote da aplicação é instalado. A partir desse conjunto, uma AMI é produzida e registrada com o sistema. Para implantar as imagens das VMs na infraestrutura da empresa, a Netflix construiu o Asgard. Através da interface web do Asgard, as imagens das VMs podem ser instanciadas para criar novos clusters EC2. Todo cluster consiste de pelo menos três instâncias EC2 para garantir redundância, espalhadas por múltiplas zonas de disponibilidade. Ao implantar nova versão, o cluster executando a versão anterior é mantido em funcionamento, enquanto a nova é instanciada. Assim que a nova versão inicializa e se registra utilizando o registro de serviço da Netflix, chamado Eureka, o balanceadorde carga direciona todo o tráfego para o novo cluster. O novo cluster é monitorado cuidadosamente e mantido em funcionamento durante a noite. Se tudo ocorrer bem, o cluster antigo é destruído. Se algo der errado, o balanceador de carga é apontado de volta para a versão antiga do cluster. Falhas acontecem com frequência na infraestrutura da Netflix. O software, portanto, precisa ser capaz de lidar com falhas de hardware, falhas de conectividade na rede, e muitos outros tipos. Mesmo se a falha não ocorrer naturalmente, ela é provocada propositalmente utilizando o Simian Army. O Simian Army consiste de um número de "macacos digitais" que introduzem falhas de forma randômica. Por exemplo, o Chaos Monkey derruba aleatoriamente servidores enquanto o Latency Monkey introduz aleatoriamente latência na rede. Assegurar que as falhas ocorram https://github.com/Netflix/asgard https://github.com/Netflix/asgard http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html https://github.com/Netflix/eureka https://github.com/Netflix/SimianArmy http://www.infoq.com/br/news/2012/08/netflix-chaos-monkey constantemente torna impossível para o time ignorar problemas e cria uma cultura onde uma das prioridades principais é a resiliência a falhas. Muitas partes da infraestrutura da Netflix já são open source e estão disponíveis no Github. É objetivo da Netflix, no fim, ter toda sua infraestrutura liberada para que outras companhias se beneficiem dela. http://netflix.github.io/ http://netflix.github.io/
Compartilhar