Velocidade: o imperativo para os negócios digitais

Para a maioria das organizações, o negócio digital significa girar para uma cultura de agilidade organizacional, onde o ritmo acelerado da demanda só pode ser satisfeito por modelos de desenvolvimento e entrega mais rápidos e flexíveis.

Como a maioria das organizações não tem o provisionamento de reconstruir completamente sua base tecnológica ou adotar imediatamente novas práticas e mentalidades, elas estão adotando mudanças graduais, mas fundamentais, na cultura, nos processos e na tecnologia para suportar maior velocidade e agilidade.

Os negócios digitais trazem à mente tecnologias inovadoras: dispositivos móveis, sensores inteligentes, dispositivos vestíveis, realidade virtual, chatbots, blockchain, aprendizado de máquina e outras tecnologias.

Para alguns, também reflete o rápido surgimento de novos negócios nativos digitais que interromperam os modelos de negócios tradicionais e transformaram empresas estabelecidas e setores da indústria.

A abordagem cloud-native descreve uma maneira de modernizar aplicativos existentes e construir novos aplicativos com base em princípios de nuvem, usando serviços e adotando processos otimizados para a agilidade e automação da computação em nuvem. Iremos descrever etapas detalhadas como parte de uma jornada bem-sucedida de onde você está hoje para adotar uma abordagem de aplicativo cloud-native.

O que é um aplicativo Cloud-native?

A evolução para o desenvolvimento e a entrega de aplicativos cloud-native é multidimensional, afetando a cultura, os processos, a arquitetura e a tecnologia.

Um aplicativo cloud-native é um aplicativo criado para aproveitar os modelos de computação em nuvem e aumentar a velocidade, a flexibilidade e a qualidade, reduzindo os riscos de implantação.

Apesar de seu nome, uma abordagem cloud-native não se concentra em onde os aplicativos são implantados, mas em como os aplicativos são criados, implantados e gerenciados.

As abordagens cloud-native são semelhantes às arquiteturas de microsserviços, embora os microsserviços possam ser um dos resultados da criação de aplicativos nativos da nuvem, há muitas etapas para atingir o nível de maturidade na gestão de microsserviços em produção.

Aplicativos tradicionais x Cloud-native

As diferenças entre o desenvolvimento de aplicativos cloud-native e o desenvolvimento de aplicativos tradicionais destacam facetas da mudança necessária.

TABELA 1. Desenvolvimento de aplicativos tradicionais versus nativos da nuvem

Desenvolvimento e entrega de aplicativos tradicionais

Caracterizados por uma longa vida útil, muitos aplicativos para as operações de negócio não foram projetados com experiências digitais em mente, eles foram construídos como monólitos firmemente acoplados, construídos ao longo de um período de tempo para especificações bem definidas que muitas vezes eram determinadas muito antes da entrega.

Essas abordagens de desenvolvimento eram em grande parte cascata e sequenciais, abrangendo longos períodos de tempo e, apenas mais recentemente, combinadas com práticas semi-ágeis.

Os estágios de desenvolvimento, teste, conformidade de segurança, implantação e gerenciamento de aplicativos foram isolados em áreas funcionais com equipes, funções e responsabilidades distintas, com fluxos de comunicação lineares entre as partes.

Para a maioria dos aplicativos tradicionais, a infraestrutura foi pré-provisionada para o pico de capacidade necessário para os aplicativos, e o dimensionamento foi obtido aumentando a capacidade de hardware do servidor por meio do dimensionamento vertical.

Esses aplicativos foram construídos como aplicativos grandes, multifuncionais e fortemente acoplados, onde uma interface de usuário, vários serviços de aplicativos, código para acessar dados e outros componentes foram combinados em um único aplicativo, independentemente do ambiente de tecnologia.

Por exemplo, um aplicativo de comércio eletrônico construído como um monólito fortemente acoplado geralmente incluiria todas as funcionalidades para a interface do usuário da Web, catálogos de produtos, carrinho de compras, recomendações de produtos, classificações e revisão de produtos, sistema de pagamento e outros componentes necessários para fazer compras no site de comércio eletrônico – tudo em um aplicativo.

Desenvolvimento e entrega de aplicativos Cloud-native

Com foco na velocidade de comercialização, o desenvolvimento de aplicativos nativos da nuvem requer abordagens de desenvolvimento e entrega contínua mais ágeis, baseadas em serviços e APIs.

Esses recursos são suportados pela colaboração DevOps entre equipes de desenvolvimento e entrega, arquitetura mais modular e infraestrutura flexível que pode ser dimensionada horizontalmente sob demanda, oferecer suporte a vários ambientes e oferecer portabilidade de aplicativos.

Com a flexibilidade e a agilidade oferecidas pelas modernas tecnologias de nuvem, as organizações querem mover aplicativos tradicionais para ambientes de nuvem para aproveitar a maior agilidade e capacidade de computação sob demanda.

Os ambientes de nuvem simplificam o gerenciamento do ciclo de vida do host, além de ajudar as organizações a aproveitar os princípios de infraestrutura imutáveis e ajustar os hosts às necessidades de uma única instância de aplicativo.

O caminho para aplicativos cloud-native pode variar de acordo com a organização. Apenas criar microsserviços não leva à qualidade do serviço e à frequência de entrega exigidas pelos negócios digitais.

Da mesma forma, apenas adotar ferramentas que suportem o desenvolvimento ágil ou a automação de TI não levará ao aumento da velocidade das abordagens cloud-native. Em vez disso, é uma combinação de práticas, tecnologias, processos e mentalidades que definirão o sucesso.

Quatro princípios de desenvolvimento e implantação de aplicativos cloud-native

As empresas podem criar novos recursos e oportunidades interna e externamente por meio das APIs expostas.

O desenvolvimento de aplicativos nativos da nuvem é uma abordagem para criar e executar aplicativos que aproveita ao máximo o modelo de computação em nuvem baseado em quatro princípios principais: arquitetura baseada em serviço, comunicação baseada em API, infraestrutura baseada em contêiner e processos de DevOps.

A arquitetura baseada em serviços, como os microsserviços, defende a construção de sistemas modulares, serviços fracamente acoplados.

Outras abordagens de arquitetura modular — por exemplo, minisserviços — que respeitam o acoplamento flexível e o design baseado em serviços ajudam as organizações a aumentar a velocidade de criação de aplicativos sem aumentar a complexidade.

Os serviços são expostos por meio de APIs leves e independentes de tecnologia que reduzem a complexidade e a sobrecarga de implantação, escalabilidade e manutenção.

O design baseado em API só permite a comunicação por meio de chamadas de interface de serviço pela rede, evitando os riscos de vinculação direta, modelos de memória compartilhada ou leituras diretas do armazenamento de dados de outra equipe. Esse design estende o alcance de aplicativos e serviços a diferentes dispositivos e formulários.

Os aplicativos cloud-native dependem de contêineres para um modelo operacional comum em ambientes de tecnologia e verdadeira portabilidade de aplicativos em diferentes ambientes e infraestrutura, incluindo públicos, privados e híbridos, além disso, são dimensionados horizontalmente, atingindo mais capacidade simplesmente adicionando mais instâncias de aplicativos, geralmente por meio da automação dentro da infraestrutura de contêiner.

O desenvolvimento de aplicativos para abordagens cloud-native segue métodos ágeis com entrega contínua e princípios de DevOps que se concentram na criação e entrega de aplicativos de forma colaborativa por meio de desenvolvimento, garantia de qualidade, segurança, operações de TI e outras equipes envolvidas na entrega.