Melhores práticas do DevOps

Parte 5. DevOps na nuvem

Comments

Conteúdos da série:

Esse conteúdo é a parte # de # na série: Melhores práticas do DevOps

Fique ligado em conteúdos adicionais dessa série.

Esse conteúdo é parte da série:Melhores práticas do DevOps

Fique ligado em conteúdos adicionais dessa série.

Introdução

A computação baseada em nuvem promete — e muitas vezes entrega — recursos como soluções corporativas escaláveis e virtualizadas, infraestruturas elásticas, serviços robustos e plataformas maduras. A arquitetura baseada em nuvem parece oferecer um potencial ilimitado, mas também apresenta muitos desafios e riscos. O escopo da computação baseada em nuvem vai de ferramentas de desenvolvimento baseadas em nuvem a infraestruturas elásticas que possibilitam que os desenvolvedores usem ambientes de teste de tamanho grande que são baratos e fáceis de construir e desmontar, conforme a necessidade. A primeira etapa é entender qual é a melhor forma de usar a computação em nuvem no gerenciamento de ciclo de vida do aplicativo (ALM).

Computação baseada em nuvem e ALM

A computação baseada em nuvem é compreendida mais adequadamente no contexto do ALM. Os profissionais de tecnologia frequentemente usam ferramentas baseadas em nuvem em cada estágio do ciclo de vida de desenvolvimento para gerenciar o fluxo de trabalho e todas as tarefas necessárias. As ferramentas de ALM baseadas em nuvem normalmente incluem gerenciamento do código fonte, automação do fluxo de trabalho (inclusive o rastreamento de defeitos e tarefas), gerenciamento de conhecimento e fóruns baseados em comunidade. As ferramentas baseadas em nuvem podem ser usadas em todo o ALM. Muitas organizações utilizam bem a nuvem mantendo a sua própria nuvem particular. Os ambientes virtualizados permitem a entrega contínua e ambientes de teste robustos. A verdadeira vantagem da computação baseada em nuvem é a capacidade de entregar arquiteturas corporativas a um custo baixo e, em seguida, escalar a arquitetura conforme a demanda aumenta. As empresas que usam tecnologias baseadas em nuvem podem focar mais em gastos operacionais (OPEX) do que em gastos de capital (CAPEX). Portanto, as empresas podem manter os custos iniciais baixos e pagar apenas pelo uso dos recursos, conforme o uso do sistema aumenta. Entretanto, a nuvem também tem seu próprio conjunto de riscos e possíveis armadilhas.

O lado negro da computação baseada em nuvem

A computação baseada em nuvem vem com uma série de problemas que vão da complexidade técnica aos desafios de ter que depender de um terceiro — que pode não ter as mesmas prioridades ou o mesmo senso de urgência que a sua organização tem. Por exemplo, embora você valorize a privacidade e segurança dos dados dos seus clientes, talvez alguns fornecedores não consigam implementar medidas de segurança fortes e nem mesmo considerem que o risco é uma questão importante a tratar. Como muitos varejistas descobriram, violações de dados podem comprometer a reputação da organização e prejudicar os negócios. Os clientes não querem saber se o culpado pela violação com um terceiro. Alguns provedores de serviço afirmam que cuidam das questões de conformidade de e governança de TI no lugar do cliente. Essa afirmação pode ser verdadeira ou não, dependendo dos requisitos regulamentares e de auditoria. A computação em nuvem tem desvantagens, mas a boa notícia é que o DevOps pode ajudar a minimizar efetivamente esses riscos e até mesmo fornecer um plano de backup em caso de problema. Primeiro, é necessário entender os recursos de nuvem que você está usando.

Qual nuvem?

A computação baseada em nuvem é um tópico muito amplo, que vai de uma nuvem particular dentro da infraestrutura da própria organização a serviços alugados de um provedor da nuvem:

  • Software como serviço (SaaS): software fornecido com base em assinatura ou de acordo com a necessidade. O provedor de serviços gerencia a infraestrutura subjacente, incluindo o sistema operacional e o aplicativo em si.
  • Plataforma como serviço (PaaS): a plataforma é mantida pelo provedor de serviço — portanto, o usuário não se preocupa com a infraestrutura subjacente, inclusive o sistema operacional e o armazenamento.
  • Infraestrutura como serviço (IaaS): a infraestrutura, incluindo o uso amplo de servidores privados virtuais (VPS), é gerenciada pelo provedor — portanto, o usuário mantém o sistema operacional, o armazenamento e a infraestrutura acima da camada de hardware e rede.

Conforme a nuvem se expande para os serviços de banco de dados, armazenamento e documentos, é comum chamar esses serviços de XaaS para indicar que praticamente qualquer tipo de recurso pode ser virtualizado. Com toda essa flexibilidade, parece que a nuvem é a solução ideal para todos os problemas. A verdade é que a computação baseada em nuvem pode ser extremamente disfuncional.

Computação baseada em nuvem disfuncional

Frequentemente, as pessoas se surpreendem com os desafios encontrados ao tentar usar recursos baseados em nuvem. Embora a IaaS frequentemente exija que você conte com administradores de sistemas qualificados, os modelos de PaaS e SaaS deixa uma boa parte da administração dos sistemas com o provedor de serviços. As pessoas descobrem rapidamente que a computação baseada em nuvem do tipo PaaS e SaaS não significa que elas não terão preocupações com a administração dos sistemas. Quando os problemas acontecem, pode ser complicado lidar com o help desk do provedor de serviços. Com frequência, a solução exige o pagamento de funções adicionais para corrigir o problema. Frequentemente as pessoas se sentem presas ao prestador de serviços, a não ser que tenham um processo automatizado de fornecer os servidores e reconstruir a infraestrutura de aplicativos de forma totalmente integrada. O DevOps fornece os princípios e procedimentos para lidar com muitas dessas questões e resolver os problemas quando eles ocorrerem.

As melhores práticas de DevOps que são essenciais para a nuvem

Os princípios e práticas do DevOps fornecem os recursos fundamentais que possibilitam que as organizações aproveitem da melhor forma a computação baseada em nuvem e tratem e minimizem os riscos inerentes associados à computação na nuvem. As organizações que podem desenvolver a infraestrutura, fornecer servidores e implementar aplicativos forma confiável estão em melhores condições para enfrentar os desafios na nuvem. O DevOps fornece as seguintes capacidades principais que podem ajudar a gerenciar a computação baseada em nuvem:

Qualquer esforço de desenvolvimento de software ou sistema deve começar por uma especificação clara do software e dos sistemas que devem ser construídos. Se você pode desenvolver automaticamente a sua infraestrutura, fornecer servidores e implementar aplicativos, a sua organização pode lidar com os incidentes e problemas que ocorrem e trocar de provedor de serviço de forma totalmente integrada, se necessário.

Infraestrutura como código

O DevOps enfatiza a capacidade de desenvolver e manter os componentes de infraestrutura essenciais com procedimentos automatizados e programáticos. No DevOps, a infraestrutura como código inclui a capacidade de fornecer servidores, desenvolver middleware e instalar o código do aplicativo que constitui os componentes principais da arquitetura do sistema. A infraestrutura como código envolve muito mais do que a criação do script de um processo de instalação, embora isso seja, de fato, um requisito. Com o DevOps, os especialistas no assunto (SMEs) da tecnologia colaboram com os especialistas em operações, que são mais qualificados para criar processos repetidos que são automatizados e totalmente rastreáveis. Os componentes de infraestrutura incluem servidores de aplicativos complexos como o IBM® WebSphere® Application Server e bancos de dados robustos, como o IBM® DB2®. Instalar esses componentes-chave de infraestrutura pode ser uma tarefa complexa, a não ser que as melhores práticas do DevOps sejam empregadas para automatizar totalmente o processo de instalação de forma documentada, repetida e verificável. Sob o ponto de vista da qualidade, a capacidade de garantir que os componentes de middleware, como o banco de dados e o servidor de aplicativos, sejam instalados adequadamente ajuda a assegurar que os ambientes de teste correspondam ao ambiente de produção. Quando esses ambientes correspondem, o risco de encontrar defeitos na produção que não apareceram durante a fase de teste é menor. Um dos aspectos mais importantes da infraestrutura como código é a capacidade de fornecer um servidor programaticamente.

Servidores de fornecimento

Para desenvolver servidores na nuvem, comece com uma linha de base conhecida do sistema operacional. Muitos provedores baseados em nuvem fornecem uma interface de programação de aplicativos (API) para permitir que os administradores de sistema automatizem os procedimentos para fornecer um servidor. Esses procedimentos podem incluir scripts para instalar componentes importantes usando utilitários, como instaladores de pacotes, que frequentemente suportam o uso de hashes criptográficos para se certificar de que os pacotes corretos tenham sido obtidos e instalados. Os padrões de consenso de segurança, como os fornecidos pelo Center for Internet Security (CIS) podem ser automatizados e ajudar a garantir que o sistema seja configurado para ter a maior segurança possível. Após o fornecimento do servidor, sistema operacional e middleware, a próxima etapa é automatizar o desenvolvimento de aplicativos.

Implementações de aplicativos automatizadas

As implementações de aplicativos frequentemente envolvem uma complexidade considerável, e o DevOps fornece os princípios e procedimentos que são essenciais para a capacidade de criar implementações de aplicativos. Use as práticas de integração contínua e implementação contínua do DevOps para criar o pipeline de implementação totalmente automatizado, que é importante durante todo o ciclo de vida de desenvolvimento de aplicativos. A forma mais eficiente de desenvolver um pipeline de implementação com êxito é criar uma cultura organizacional que valoriza o compartilhamento do conhecimento e da perícia. Essa ideia é um princípio fundamental do DevOps.

Compartilhamento de conhecimento

O DevOps enfatiza a colaboração entre o desenvolvimento e as operações. Os desenvolvedores selecionam e implementam novas tecnologias e recursos e respondem rapidamente para resolver os problemas que ocorrem nos sistemas existentes. Os desenvolvedores são SMEs que conhecem a tecnologia mais do que qualquer outra pessoa na organização. A equipe de operações contribui com o conhecimento essencial do comportamento da tecnologia sob as condições de produção. Os profissionais de operações incluem a equipe de liberação e implementação, que é especialista na criação de processos automatizados e repetidos. Quando essas duas equipes compartilham informações, toda a organização se beneficia ao institucionalizar o conhecimento fundamental que é essencial para operações eficientes. O DevOps é muito maior que as equipes de desenvolvimento e operações. Ele precisa incluir interessados de toda a organização e do provedor de serviços. Esses interessados precisam reconhecer a importância de garantir o sucesso dos clientes.

Compartilhamento de conhecimento com o provedor baseado em nuvem

Os melhores provedores baseados em nuvem promovem uma cultura em que os usuários compartilham conhecimento usando comunidades virtuais online, incluindo notas técnicas que descrevem o fornecimento de servidores e a implementação automatizada de aplicativos. Nesse ambiente, o DevOps promove o conceito de que o conhecimento deve ser compartilhado entre os usuários informados e os SMEs empregados pelo provedor baseado em nuvem. Esse compartilhamento pode acontecer em uma comunidade online que promove os princípios de colaboração e comunicação excelentes do DevOps. Quando membros da comunidade e provedores de serviço compartilham conhecimento em um ambiente de computação baseada em nuvem, muitos riscos são minimizados. O conhecimento deve ser compartilhado em todo o ciclo de vida do aplicativo.

Gerenciamento de todo o ALM

O trabalho que é realizado por muitos interessados — como analistas de negócios, desenvolvedores, testadores e profissionais de operações — é afetado pela computação em nuvem. Os princípios de colaboração e comunicação do DevOps são essenciais para operações efetivas de desenvolvimento e operações com base na nuvem, mas o gerenciamento do ALM na nuvem representa um conjunto específico de desafios e riscos. Técnicas como a integração e a entrega contínuas ajudam ao estabelecer o pipeline automatizado de implementação de aplicativos.

Integração e entrega contínuas

A integração e entrega contínuas são duas das técnicas mais efetivas que normalmente estão associadas às melhores práticas do DevOps. O desenvolvimento baseado na nuvem se beneficia muito da integração frequente das mudanças e da automatização das implementações para que o código possa ser entregue com frequência usando um pipeline de implementação bem definido e totalmente automatizado.

Saiba mais sobre a integração e entrega contínuas:

Garantia de qualidade e testes contínuos

A garantia de qualidade (QA) e os testes são tarefas que englobam todo o ciclo de vida e devem incluir todos os interessados. A nuvem apresenta alguns desafios referentes à QA e testes, mas também oferece alguns recursos excelentes. Com as melhores práticas de fornecimento automatizado e implementação contínua do DevOps, os desenvolvedores, profissionais de QA e outros interessados podem testar em ambientes de teste de baixo custo e semelhantes à produção que antes não estavam disponíveis. Na nuvem, a verificação do ambiente é extremamente importante, principalmente quando é controlado pelo provedor de serviços. No entanto, até mesmo nuvens particulares usadas para fornecer máquinas virtuais (VMs) podem apresentar desafios especiais. Os profissionais de sistemas sabem que uma máquina virtual pode não se comportar de forma idêntica a um computador físico. Esses riscos devem ser entendidos e reduzidos. A capacidade do DevOps de fornecer ambientes de teste usando recursos baseados em nuvem entrega novos recursos que aprimoram a produtividade e a qualidade, caso as melhores práticas do DevOps estejam estabelecidas para fornecer e manter esses ambientes usando procedimentos automatizados.

Saiba mais sobre testes:

  • O IBM®Rational® Quality Manager, um ambiente de gerenciamento de teste centralizado baseado na web, fornece uma solução colaborativa para rastreamento e relatório de métricas.
  • O IBM® Rational Integration Tester faz parte do IBM® Rational® Test Workbench, que combina os recursos de testes automatizados funcionais, de desempenho, regressão, carga e integração de aplicativos altamente complexos.

Use o DevOps para superar os desafios na nuvem

Os princípios e práticas do DevOps aprimoram a colaboração entre todos os interessados, como desenvolvimento, operações, QA, testes, segurança de informações e a estrutura interna de suporte do provedor de serviços. Nesse caso, a colaboração do DevOps também inclui a equipe de suporte do provedor de serviços e o grupo de suporte da comunidade, formado por consumidores de mesmo nível. Por exemplo, um provedor de serviços de nuvem excelente paga aos clientes para que escrevam notas técnicas para benefício de outros clientes, um processo que contribui com a cultura de colaboração. O DevOps também fornece ferramentas e processos eficientes que permitem que as organizações forneçam servidores e implementem código com a frequência necessária. Quando os provedores de serviços não cumprem seus acordos de nível de serviço (SLAs) e não prestam o serviço esperado, pode-se mudar para outro provedor de serviços de forma integrada. As ferramentas de desenvolvimento podem ser acionadas rapidamente e escaladas conforme a necessidade, não importando se as ferramentas estão hospedadas na nuvem do provedor de serviços ou na nuvem particular da corporação. Para obter o verdadeiro valor da virtualização, aplique os princípios e práticas do DevOps para ajudar a superar os desafios da computação baseada em nuvem.

Segurança na nuvem

Apesar dos possíveis riscos, a computação baseada em nuvem pode ser segura e confiável caso seja usada com responsabilidade. As melhores práticas do DevOps possibilitam entender e monitorar os ambientes de tempo de execução. É possível detectar mudanças não autorizadas resultantes de erro humano ou má intenção. O mais importante é a possibilidade de lidar com incidentes reconstruindo os sistemas quando necessário. Essa capacidade é um recurso essencial quando os sistemas são comprometidos ou quando outras equipes de TI estão empenhadas na recuperação após um desastre, como uma enchente ou um terremoto.

As organizações precisam entender que não é fácil navegar em serviços baseados em nuvem. A cultura de comunicação efetiva, colaboração e melhoria dos processos é essencial.

Conclusão

O DevOps fornece um conjunto eficiente de princípios e práticas que ajudam a superar os desafios inerentes à computação baseada em nuvem. Use essas melhores práticas para aproveitar toda a potência e os recursos da computação baseada em nuvem.


Recursos para download


Temas relacionados

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Cloud computing, Rational
ArticleID=980813
ArticleTitle=Melhores práticas do DevOps: Parte 5. DevOps na nuvem
publish-date=08152014