Como aplicativos e microsserviços nativos da nuvem afetam o processo de desenvolvimento

Melhores práticas, como refatoração de código e uso de padrões de design de microsserviço, ajudam desenvolvedores a trabalhar em alta velocidade

Author Photo
4:15 pm - 11 de outubro de 2021

Fui um desenvolvedor prático e diretor de tecnologia durante os dias de programação orientada a objetos, plataformas web de três camadas, arquitetura orientada a serviços (SOA) e hospedagem em servidores virtuais no data center. Tanta coisa mudou desde então!

As equipes de desenvolvimento de software mais avançadas estão desenvolvendo microsserviços e permitindo experiências ricas de usuário front-end usando JavaScript do lado do cliente. As opções de hospedagem explodiram e incluem plataforma como serviço (PaaS), contêineres como serviço (CaaS), funções sem servidor e outras arquiteturas. Os aplicativos que os desenvolvedores criam estão aproveitando fluxos de dados em tempo real, conectando-se a modelos de machine learning e fazendo interface com SaaS e sistemas corporativos.

As ferramentas de desenvolvimento de hoje evoluíram significativamente. Eles permitem que equipes de desenvolvimento distribuídas globalmente operem de forma independente, liberem alterações frequentes e respondam a problemas rapidamente. Integração e entrega contínuas (CI/CD), testes contínuos, infraestrutura como código (IaC) e AIops permitem que as equipes automatizem a integração, a implantação, a configuração da infraestrutura e o monitoramento.

As mudanças também incluem transformações culturais e práticas, como a adoção de planejamento contínuo em agile, instrumentação de shift-left testing, abordagem proativa de riscos de segurança e instituição de engenharia de confiabilidade do local.

Procurei vários especialistas para ir a um nível mais profundo e sugerir as melhores práticas sobre como o processo de desenvolvimento muda ao construir e implementar aplicativos nativos da nuvem e microsserviços.

Alta velocidade requer coordenação e consciência de operações

Minha primeira preocupação com as equipes de desenvolvimento que visam a construção de muitos microsserviços pequenos, atômicos ou frequentemente implantados é quando suas velocidades de implantação não levam em conta a colaboração necessária e os guarda-corpos de segurança.

Falei com Jason Walker, CTO da BigPanda, sobre suas experiências com equipes de desenvolvimento que criam, implantam e aprimoram microsserviços com sucesso. Ele reconhece: “O impacto mais significativo é a velocidade, e o tempo de ciclo de desenvolvimento de teste e implantação é drasticamente reduzido. Desenvolvendo na nuvem para um serviço baseado em nuvem e aproveitando um ecossistema de microsserviços para entradas, uma equipe ágil pode se mover muito rapidamente”.

Walker sugere que o ambiente de trabalho deve ajudar as equipes a se manterem no caminho certo e a agregar valor ao negócio enquanto operam em alta velocidade. Ele recomenda várias práticas:

  • Os líderes em todos os níveis devem compreender e alinhar as metas estratégicas para evitar que as equipes se desviem dos objetivos de negócios.
  • Scrum masters devem adotar métricas ágeis, pontuar histórias com precisão e monitorar a velocidade da equipe ao longo do tempo, observando e acomodando a variabilidade para o planejamento de longo prazo.
  • Processos de gerenciamento de conhecimento e entrega de documentação precisos e atualizados devem ser incorporados ao ciclo de vida de desenvolvimento de software para evitar que equipes modulares se dispersem umas das outras e desenvolvam incompatibilidades.
  • Uma estratégia de monitoramento acionável é necessária. A telemetria sintética e do cliente podem ser macroindicadores úteis do desempenho geral do serviço, e a relação sinal-ruído no monitoramento deve ser medida.

Refatoração de código aprimora microsserviços

Uma das disciplinas de codificação mais importantes na programação orientada a objetos e SOA é a refatoração de código. As técnicas permitem que os desenvolvedores reestruturem o código à medida que entendem melhor as considerações de uso, fatores de desempenho ou problemas técnicos de dívida.

Refatorar é uma técnica-chave para transformar aplicativos monolíticos em microsserviços. As estratégias de refatoração incluem separar a camada de apresentação, extrair serviços de negócios e refatorar bancos de dados.

Robin Yeman, membro do Conselho Consultivo Estratégico da Project and Team, passou a maior parte de sua carreira trabalhando em sistemas governamentais e de defesa em grande escala. Robin admite: “As maiores barreiras tecnológicas para a utilização de agile na construção ou atualização de sistemas legados complexos são as muitas dependências na arquitetura de software, forçando várias transferências entre as equipes e atrasos na entrega”.

Robin sugere que a refatoração deve se concentrar na redução das dependências. Ela recomenda: “Refatorar a arquitetura de software de grandes sistemas legados para utilizar aplicativos nativos da nuvem e microsserviços reduz as dependências entre os sistemas e as equipes que os suportam”.

A refatoração também melhora os microsserviços de maneiras importantes, como:

  • Atualizar os modelos de domínio quando o modelo de negócios evolui;
  • Reduzir os serviços para estar em conformidade com o princípio de responsabilidade única;
  • Melhorar as mensagens em arquiteturas orientadas a eventos;
  • Melhorar a capacidade de observação e validação de erro;
  • Lidar com mudanças nos pipelines devops ou na configuração do contêiner.

Kit Merker, COO da Nobl9, oferece este conselho para organizações em transição para aplicativos e microsserviços nativos da nuvem. “Você não pode simplesmente reescrever tudo – você precisa fazer a transição em fases. Uma prática recomendada é definir objetivos claros de nível de serviço que sejam agnósticos de implementação e gerenciem a impressão do usuário sobre seu serviço, mesmo durante a transição para implementações nativas da nuvem”.

Adote padrões de design de microsserviço

Os padrões de projeto sempre foram usados como ferramentas para estruturar o código em torno de conjuntos de problemas comuns. Por exemplo, as categorias de padrões de projeto orientados a objetos são criativas, comportamentais e estruturais; eles são usados para resolver problemas comuns em design de software. Os padrões de design SOA existem há mais de uma década e são um precursor dos padrões de design da API REST e da API em nuvem de hoje.

Usar padrões de design de microsserviço é fundamental para o sucesso a longo prazo. As organizações de tecnologia buscam serviços independentes, resilientes e de provisionamento automático que oferecem suporte ao isolamento de falhas, entrega contínua e um modelo de governança descentralizado. Isso pode ser desafiador se as equipes de desenvolvimento não tiverem uma linguagem comum, arquitetura de microsserviço e estratégia de implementação para desenvolver com padrões de design.

Tyler Johnson, cofundador e CTO da PrivOps, explica que o desenvolvimento de microsserviços é uma estratégia-chave para reduzir a complexidade. Ele diz: “Uma maneira de descrever os aplicativos nativos da nuvem é como um conjunto de sistemas complexos, distribuídos e interativos. Essa complexidade pode rapidamente se tornar incontrolável, e é por isso que uma arquitetura modular de microsserviços padronizada, incluindo ferramentas padronizadas de devsecops, APIs e modelos de dados é necessária”.

Michael Bachman, Arquiteto Global e principal Tecnólogo da Boomi, sugere que o uso do padrão de design de microsserviço composto permite que os desenvolvedores se concentrem na experiência do usuário. Esse padrão de design é particularmente importante quando os desenvolvedores criam aplicativos conectados a serviços multicloud e APIs de plataforma SaaS.

Bachman explica: “O composto é uma coleção de endpoints apresentados por meio de uma visualização abstrata. Os desenvolvedores podem acessar um catálogo de serviços, fazer chamadas para um composto e não se preocupar com o que está por baixo. Estamos nos aproximando do usuário final e possibilitando uma experiência confiável por meio de um serviço composto de alto nível”.

Em resumo, construir aplicativos e microsserviços nativos da nuvem exige que as equipes de desenvolvimento se sobressaiam em práticas de desenvolvimento de software de longa data, como colaboração, refatoração de código e desenvolvimento de serviços reutilizáveis e confiáveis. Como as equipes estão desenvolvendo esses serviços em uma escala significativa, é importante aprender, adaptar e amadurecer essas práticas recomendadas.

Newsletter de tecnologia para você

Os melhores conteúdos do IT Forum na sua caixa de entrada.