Solução Tradicional
(+ robusta)

  • Modelo tradicional de desenvolvimento do software e projetos (ex. Waterfall)
  • KPIs orientados à operação

Solução Ágil
(+ ágil)

  • Desenvolvimento com abordagem ágil (ex. DevOps)
  • KPIs orientados a clientes

Solução Tradicional
(+ robusta)

  • Arquiteturas tradicionais
  • Propriedade sobre a infraestrutura
  • Modelos proprietários

Solução Ágil
(+ ágil)

  • Arquiteturas híbridas
  • Uso massivo de Big Data, Cloud, Social, Mobile, IoT
  • Contratação de serviços
  • Open source

Solução Tradicional
(+ robusta)

  • Isolamento e compartimentação
  • Papeis bem definidos
  • Foco em treinamentos e certificações

Solução Ágil
(+ ágil)

  • Equipes multidisciplinares e incentivo à comunicação entre equipes
  • Incentivo ao conhecimento tecnológico
  • Foco em experiência e participação

Nova prática Nova prática

Agile Infrastructure

Descubra como ter sucesso na trajetória em direção a um mundo mais ágil

FacebookTwitterLinkedIn

“Transformação Digital” tem sido um termo da moda nos últimos tempos para explicar todas as mudanças que estão ocorrendo no mundo, fomentado por grandes tendências e metodologias de tecnologia que, bem aplicados e integrados ao mundo dos negócios, criam modelos extremamente bem-sucedidos. Porém, quase não se fala sobre como construir uma base tecnológica que permita isso e que, ao mesmo tempo, seja estável e ágil.

Diante de um cenário cada vez mais competitivo, as empresas precisam mudar seu comportamento para obter diferenciação ou, até mesmo, em alguns casos, para garantir sua sobrevivência no mercado, de forma que possam acompanhar a evolução tecnológica com um foco mais orientado às necessidades de seus clientes.

Um dos principais desafios que as áreas de TI têm hoje em dia é garantir mais agilidade aos seus processos de desenvolvimento de aplicações e adequação de infraestrutura às necessidades de negócio, garantindo, ao mesmo tempo, a continuidade das operações. Algumas das dificuldades são: como desenhar esse modelo mais ágil? Como implementá-lo e o que/como/quando migrar de uma situação para outra? Qual é o melhor equilíbrio entre os mundos? Quão ágil e quão robusto o meu negócio precisa ser? Os modelos (tradicional e ágil) competem, coexistem ou se complementam?

Por exemplo, as start-ups são notoriamente conhecidas por agir rapidamente, mas, após crescer além de um certo ponto, lutam para manter esse impulso. Da mesma forma, as empresas grandes e estabelecidas frequentemente se tornam burocráticas porque as regras, as políticas e as camadas de gestão desenvolvidas para capturar as economias de escala viram obstáculos para a capacidade de avançar rapidamente.

As organizações realmente ágeis aprendem a ser estáveis (resistentes, confiáveis e eficientes) e dinâmicas (rápidas, ágeis e adaptáveis) ao mesmo tempo, desenhando um modelo de tecnologia, processos e pessoas que permita chegar ao potencial máximo do negócio, sabendo combinar o melhor dos dois mundos.

Sopa de letrinhas

Metodologias de trabalho, mudanças culturais, novas abordagens e tecnologias: essa é a composição do que chamamos infraestrutura ágil. Para entender melhor esta estrutura e aproveitá-la ao máximo, é necessário compreender os conceitos envolvidos e como eles se relacionam entre si.

As metodologias ágeis não são algo novo, já são aplicadas há algum tempo no mundo do desenvolvimento. Porém com a dependência cada vez maior das empresas por tecnologia, esses modelos passaram a ser cada vez mais relevantes – ou até mesmo fundamentais – para os negócios. Por outro lado, o impacto do desenvolvimento ágil na camada de infraestrurura de tecnologia é muito grande, mudando completamente a forma como as áreas de desenvolvimento e operações se relacionam.

Das metodologias ágeis, tomam-se os seguintes fundamentos: indivíduos e interações sobre processos e ferramentas, soluções funcionando sobre documentação, interação constante com o cliente e rápida resposta à mudança. As metodologias ágeis incrementam o número de releases das aplicações. Assim nasce a necessidade de DevOps. Este conceito representa uma mudança nos processos, na forma de fazer as coisas, ou seja, uma mudança cultural em toda a organização.

Mas o que são DevOps? Trata-se de um conjunto de práticas focadas na comunicação e colaboração entre desenvolvedores de software e administradores de sistemas, automatizando os processos de delivery de software e mudanças na infraestrutura. A ideia é estabelecer uma cultura e um ambiente onde os processos de construir, testar e entregar software possam ocorrer de forma rápida, frequente e confiável.

Os principais benefícios são uma redução significativa do time to market, melhora na satisfação do cliente, melhor qualidade do produto, releases mais confiáveis, aumento da produtividade e eficiência, e a capacidade de construir o produto correto mediante uma rápida experimentação.

A liderança para a adoção de DevOps está centrada em:

  • Uso de metodologias ágeis e outros métodos e processos de desenvolvimento
  • Uma maior demanda na frequência dos releases em produção – Continuous Delivery
  • Infraestrutura cloud e virtualizada – PaaS
  • Ferramentas de automação e de configuration management – IaC
  • Métodos de Test Automation e Continuous Integration
  • Uma grande quantidade de melhores práticas

À medida que nos aprofundamos, surgem novos conceitos relacionados à infraestrutura e ao software que interagem entre si: Platform as a Service (PaaS), Infrastructure as Code (IaC) e Continuous Delivery (CD).

Platform as a Service: Os desenvolvedores de software utilizam este ambiente de nuvem para implementar seus aplicativos construídos e também os de terceiros, podendo customizá-los e gerenciá-los, mas sem a necessidade de gerenciar e controlar a infraestrutura de nuvem subjacente. Este modelo de nuvem oferece uma plataforma de computação, tipicamente um sistema operacional, um ambiente de execução de linguagens de programação, uma base de dados e um servidor web. Muitas PaaS utilizam Containers como seus building blocks. Onde antes eram utilizadas máquinas virtuais, agora são utilizados Containers.

Infrastructure as Code: É o processo de gerenciar e provisionar infraestrutura de computação e sua configuração através de arquivos de definição processados de forma automatizada em vez de fazê-lo por meio de uma configuração física de hardware ou de ferramentas interativas. IaC é um atributo chave das melhores práticas de DevOps, já que os desenvolvedores definem a infraestrutura mediante a configuração e as operadoras se envolvem no momento em que começa o processo de desenvolvimento.

Continuous Delivery: É uma prática de engenharia de software onde a automação é utilizada para produzir software em ciclos curtos, assegurando que o software possa ser implementado de forma confiável a qualquer momento. A ideia é construir, testar e implementar software de forma mais rápida e frequente. Esta abordagem reduz custos, tempo e riscos ao implementar mudanças permitindo atualizações incrementais dos aplicativos em produção.

Nesta metodologia, há três aspectos fundamentais: visibilidade, feedback e implementação contínua. Para poder implementar as características da forma mais rápida possível, recriar ambientes previsíveis e obter um feedback célere, são utilizados containers.

O que são os containers?

Um container é um tipo de virtualização, mas sem um hipervisor, onde são isolados múltiplos sistemas em um host de controle em um único sistema operacional, e o aplicativo utiliza o sistema operacional como se fosse o sistema onde está sendo executado e só requer que o aplicativo seja implementado com aquilo que não está sendo executado no host de computação.

Os containers permitem que um desenvolvedor monte um pacote com o aplicativo com todas as partes necessárias, como bibliotecas, binários e outras dependências. Dessa forma, é possível garantir que sejam executados em qualquer máquina, sem importar a personalização do servidor, que poderia diferir dos ambientes onde foi desenvolvido ou testado. Se este pacote for trabalhado como um arquivo único, cujo código fonte especifica um ambiente, configuração e acesso para a aplicação, estamos falando de Infrastructure as Code.

COMO FUNCIONA A AGILE INFRAESTRUTURA

Por que os containers são tão importantes?

Na arquitetura de microserviços, o aplicativo é estruturado como um grupo de serviços implementáveis de forma independente, de menor peso e organizados de acordo com suas capacidades. O benefício de desmontar o aplicativo em serviços menores melhora a modularidade e faz com que o aplicativo seja mais fácil de entender, desenvolver, testar e substituir. Cada um desses serviços é implementado por meio de containers.

Por sua vez, essa arquitetura serve para Continuous Delivery, já que uma mudança em uma pequena parte do aplicativo requer apenas uma mudança em um ou mais serviços, para que sejam reconstruídos e reimplantados.

Além disso, ao passar de um modelo monolítico para outro de microserviços, é possível fazer com que o processamento seja separado em várias unidades de trabalho diferentes. Ao separar tudo em diferentes serviços, também é necessário administrar a infraestrutura de cada um, e é esse o ponto no qual Infrastructure as Code é a solução.

Os principais benefícios dos containers são:

  • Rápida implementação de aplicativos
  • Configurações mais simples e mais rápidas
  • Aumento de produtividade
  • Portabilidade entre máquinas
  • Controle de versão
  • Reutilização de componentes
  • Padronização de ambientes
  • Isolamento e utilização reduzida de recursos

Pavimentando o futuro

Para chegar ao mundo das infraestruturas ágeis, as empresas devem investir hoje em tecnologias para formar uma base tecnológica capaz de suportar os desafios de elasticidade e time to market. Algumas das tecnologias de base são:

  • OpenStack IaaS: Ambiente cloud de crescimento elástico
  • SDC: Software Defined Data Center (Computing, Storage & Networking)
  • CMP: Cloud Management Platform / Nuvem Híbrida / Multicloud)
  • IaC: Infrastructure as Code (Automação)