Home > Gestão

8 dicas para fazer a mudança para microsserviços

Aqui estão algumas das melhores práticas sugeridas para enfrentar os desafios e prosperar em um ambiente de microsserviços

Bob Violino, CIO/EUA

14/02/2019 às 7h00

Foto:

O desenvolvimento de novas aplicações hoje está diretamente relacionado à velocidade de entrega. O amplo movimento em direção ao ambiente ágil, que está em andamento há vários anos, promove uma sensação de implementação de software fácil e rápida.

Uma das tendências que tem ajudado a acelerar o desenvolvimento de aplicativos é a ascensão dos microsserviços - e os líderes de TI de várias empresas podem querer considerar essa técnica de desenvolvimento de software para suas organizações, se ainda não o tiverem feito.

Variante da Arquitetura Orientada a Serviços (SOA), os microsserviços são um estilo arquitetônico em que as aplicações são decompostas em serviços acoplados, oferecendo modularidade crescente, tornando as aplicações mais fáceis de desenvolver, testar, implantar e, o mais importante, mudar e manter.

“Os microsserviços aumentam o empoderamento da equipe, permitindo que equipes individuais inovem mais rapidamente e se sintam capacitadas a tomar decisões sobre arquitetura, linguagem e estruturas”, diz EJ Campbell, vice-presidente de engenharia, esportes e engenharia de produção de mídia na Verizon Media Group, uma subsidiária da empresa de comunicações composta por 50 marcas online.

"Vimos o Cycle Time da produção reduzir drasticamente à medida que as equipes adotaram microsserviços", diz Campbell. “Muitas equipes implantam microsserviços várias vezes por dia, sem qualquer intervenção humana, contando com testes, revisões de código pipelines sofisticados de CI/CD [integração contínua / entrega contínua] para garantir a entrega segura de mudanças.”

O Yahoo Daily Fantasy Product compreende vários microsserviços. “Cada um desses serviços tem seus próprios pipelines de implantação contínua, armazenamentos de dados isolados e equipes individuais responsáveis ​​por seu desenvolvimento e operação”, diz Campbell.

Desafios
A mudança para microsserviços representa uma mudança radical e as organizações precisam estar preparadas para ela. São muitos os desafios. Eles incluem determinar os limites certos entre os serviços, superar a dificuldade de compartilhar código entre equipes e a complexidade do gerenciamento de alterações, pois as equipes estão liberando código de forma independente.

“Evoluir para microsserviços é como evoluir do cavalo para a bicicleta, ou da bicicleta para o automóvel”, diz Jay Bercher, vice-gerente de programa da Solutions By Design (SBD).

“Conforme passamos pelos estágios da evolução, encontramos ainda mais peças em movimento”, diz Bercher. “Cada peça móvel requer seu próprio nível de manutenção, e o suporte e supervisão de tantos elementos não apenas tornam a solução mais complexa, como também aumentam os custos associados. Consequentemente, temos que examinar nossas decisões para garantir que elas não sejam apenas a melhor decisão tecnológica, mas também a mais econômica.”

Outro desafio é a segurança. "Temos que determinar se queremos implementar uma única solução de verificação para todo o conjunto ou se queremos que cada microsserviço tenha seu próprio processo de verificação", diz Bercher. “Essa é uma decisão que deve ser tomada caso a caso e que cada equipe de projeto precisa fazer sozinha.”

Aqui estão algumas das melhores práticas sugeridas para enfrentar os desafios e prosperar em um ambiente de microsserviços.

1 - Empregue o design orientado a domínio
Criar microsserviços diz respeito a tornar os serviços fracamente acoplados e aplicar o princípio da responsabilidade única, diz Bercher.

"Embora existam vários métodos e metodologias para o desenvolvimento, o DDD (design orientado a domínio) e os microsserviços parecem ser uma combinação perfeita", diz Bercher. As equipes da SBD usam o design orientado a domínio, cria um padrão de desenvolvimento eficiente, removendo a maioria das interdependências da equipe.

"No nosso trabalho, a correlação de domínio para microsserviços é essencialmente um para um", diz Bercher. “Assim, cada equipe de desenvolvimento é responsável por um domínio e também responsável pelo desenvolvimento do microsserviço correspondente. Isso cria uma delimitação clara das responsabilidades, o que, por sua vez, limita as redundâncias que podem ocorrer em esforços paralelos de desenvolvimento. ”

2 - Estabeleça diretrizes para bibliotecas de código
É muito mais difícil compartilhar códigos entre equipes em um mundo de microsserviços, diz Campbell.

“Ao contrário de um monólito, onde o código comum é apenas uma chamada de método, com uma arquitetura de microsserviços o código deve ser empacotado em uma biblioteca compartilhada”, diz Campbell.

A adoção dessas bibliotecas geralmente é lenta e a realização de mudanças requer coordenação entre o proprietário da biblioteca e vários serviços. “Portanto, é importante que as organizações adotem um conjunto robusto de diretrizes para bibliotecas comuns e expectativas sobre lançamentos”, diz Campbell.

3 - Não compartilhe bancos de dados entre microsserviços
“Ao construir nossos serviços desacoplados, estamos permitindo que nossas equipes de desenvolvimento criem seu próprio banco de dados, o que limita as dependências de outras equipes de desenvolvimento”, diz Bercher.

"Nossas equipes de desenvolvimento empurram suas gravações para o back-end para todos os outros absorverem, e essas informações são gerenciadas pela nossa equipe de dados", diz Bercher. “O conceito deve continuar sendo o de  plug-and-play. Se você precisar substituir um serviço, basta retirá-lo e conectar o novo. É como mudar uma luz - apenas um pouco mais complexa ”.

Como os microsserviços são modulares por design, o processo de desenvolvimento é predominantemente plug-and-play, tornando extremamente fácil solucionar qualquer problema que possa surgir.

"Como o código não é propagado em toda a plataforma, podemos isolar rapidamente os problemas para uma fonte específica e rastreá-los nos microsserviços", diz Bercher. “Isso facilita a atualização de aplicativos, permitindo atualizações e upgrades por microsserviço. Você pode imaginar a atualização de um sistema peça por peça,  uma peça de cada vez, em vez de ser obrigado a substituir tudo. Este conceito sozinho revoluciona o desenvolvimento do sistema. ”

4 - Aborde preocupações de segurança
Como com qualquer outra coisa relacionada a TI, os microsserviços têm seus próprios problemas de segurança.

As empresas devem procurar vulnerabilidades conhecidas antecipadamente e com frequência no ciclo de vida de desenvolvimento de software, diz Ryan Douglas, CIO da Digital River.

“Um mantra importante para qualquer equipe de TI que opera em nosso mundo acelerado é identificar e corrigir vulnerabilidades de soluções locais, bem como em software de terceiros”, diz Douglas. “É essencial para manter a segurança. É fundamental ter uma visão geral do ecossistema de software para entender como ele funciona em conjunto e onde residem os possíveis problemas.”

A implementação de patch de software é muito mais fácil de testar ao usar microsserviços, diz Douglas. "E não é apenas para código caseiro", diz ele. “Os engenheiros de TI podem testar softwares de terceiros em busca de vulnerabilidades ao lado de seu próprio desenvolvimento de software. No caso de uma vulnerabilidade ser encontrada, uma correção pode ser implantada mais rapidamente do que com estruturas de código monolíticas anteriores. ”

5 - Evite a complexidade
Complexidades podem ocorrer com muita facilidade em grandes implantações de microservices, diz JP Morgenthal, CTO de serviços de aplicativos da DXC Technology.

"Pode até haver caminhos de dados recursivos se as organizações não tiverem cuidado ao garantir que haja uma arquitetura de sistema", diz Morgenthal. "Entre o uso de equipes multifuncionais independentes e repositórios de serviço, é possível ver dependências que podem fazer com que o sistema invalide os princípios de microsserviços", explica.

Um único microsserviço deve poder ser alterado ou removido sem impacto significativo no sistema como um todo. Uma prática recomendada é envolver a arquitetura corporativa para validar projetos de microsserviços, diz Morgenthal.

6- Considere a criação de aplicativos a partir do zero
Recentemente, a  Vylla.com, uma plataforma de hipotecas diretas ao consumidor lançada pelo provedor de serviços imobiliários Carrington Mortgage Holdings, transferiu sua arquitetura de tecnologia para microsserviços.

"Um dos desafios que encontramos quando decidimos migrar para microsserviços foi se deveríamos ou não quebrar o aplicativo peça por peça ou realizar uma reescrita completa", diz John Nicholas, CTO da Carrington Mortgage.

"Devido a alguns requisitos de negócios pré-definidos, precisávamos fornecer novas funcionalidades em um prazo muito curto", diz Nicholas. “No início, tentamos nos integrar na arquitetura monolítica com resultados bem-sucedidos. No entanto, também sabíamos que desmembrá-lo seria mais difícil do que reescrever a maioria das nossas características atuais ”.

Com isso em mente, a equipe de desenvolvimento decidiu que o melhor caminho seria criar um novo aplicativo a partir do zero. “Foi uma tarefa enorme e exigiu esforços maciços de todos os membros da nossa equipe, mas já provou seu valor no curto período de tempo desde a transição”, diz Nicholas.

Como há um investimento significativo em tecnologia necessário para implantar microsserviços com sucesso, é importante ter um caso de negócios claramente definido, descrevendo como a nova tecnologia melhorará o desempenho ou melhorará as eficiências operacionais, diz Nicholas.

"O componente crítico aqui é encontrar o talento certo", diz Nicholas. “Não é fácil encontrar arquitetos de engenharia com experiência para realizar o trabalho. Conseguimos construir uma forte equipe de engenharia que entende uma arquitetura adequada e uma equipe de garantia de qualidade para realizar testes de automação em todo o aplicativo. ”

7 - Meça o desempenho ao dimensionar
Aplicações monolíticas podem ser escalonadas em sua totalidade para atender a um aumento na demanda, adicionando servidores, diz Praveen Kanyadi, co-fundador da SpotCues.

“No caso dos microsserviços, a arquitetura modular permite que apenas partes do sistema sejam dimensionadas”, diz Kanyadi. "No entanto, os microsserviços exigem uma abordagem muito diferente da escalabilidade, porque uma implantação típica de arquitetura de microsserviço pode consistir em vários componentes em execução em diferentes servidores, virtualizados ou não, trabalhando juntos".

Isso adiciona o desafio de identificar quais componentes individuais devem ser aprimorados. "É aqui que medir o desempenho se torna crítico e ferramentas como um controlador de entrega de aplicativos podem ajudar a medir e detectar problemas de desempenho", diz Kanyadi.

As empresas também devem considerar a definição de acordos de nível de serviço (SLAs) para cada microsserviço, para garantir desempenho e confiabilidade com base nas prioridades dos negócios, diz Kanyadi.

8 - Concentre-se no gerenciamento de mudanças
As empresas precisam atualizar os processos de gerenciamento de mudanças e controle de mudanças, juntamente com a documentação de suporte, para se beneficiar da mudança da arquitetura monolítica para a de microsserviços.

“Um processo de desenvolvimento mais rápido é ótimo, mas não perca os benefícios dos microsserviços, deixando de lado o controle de mudanças e outros processos de governança importantes”, afirma Ron Hayman, diretor de nuvem da Avant Communications.

"Certifique-se de alinhar o controle de alterações e o processo de aprovação para corresponder ao seu ciclo de vida de desenvolvimento ágil", diz Hayman.

Junte-se a nós e receba nossas melhores histórias de tecnologia. Newsletter Newsletter por e-mail