Descubra que fatores influenciam o sucesso com microsserviços nas organizações
Faz mais ou menos 10 anos que o mundo caminha em direção ao cloud computing e também aos microsserviços.
Afinal, para que manter aplicações monolíticas se, agora, você pode quebrá-las em serviços distintos e menores, que podem ser lançados independentemente, em diferentes linguagens e base de dados, por diferentes times – e ganhar agilidade, rapidez e entrega? Muitas vantagens parecem estar envolvidas na adesão aos microsserviços e, por causa delas, eles se tornaram uma tendência. Estamos falando de coisas como:
- Tornar funcionalidades mais flexíveis
- Responder rapidamente a mudanças de tecnologia e requisitos de negócio
- Ganhar escalabilidade
- Lançar novas features com mais frequência
- Aumentar a produtividade
- Fazer testes completos
- Melhorar a disponibilidade entre as áreas de negócio e
- Ter custos de desenvolvimento menores.
Mas, ao mesmo tempo, nós sabemos que eles só proporcionam níveis consideráveis de escala e velocidade quando bem implementados e gerenciados. O que não é algo tão trivial assim. Entre os principais desafios de migrar para microsserviços, estão:
- Cultura ou mindset
- Decomposição de funcionalidades em microsserviços
- Integração com sistemas legados
- Aumento da complexidade
- Débito técnico e qualidade de APIs
- Habilidades técnicas.
Então que grau de sucesso as organizações têm com microsserviços? A O’Reilly fez um levantamento a fim de entender esse aspecto.
E os resultados impressionam. Apesar de apenas 23% das empresas pesquisadas não utilizarem ainda microsserviços, há bons níveis de sucesso:
- 10% dos entrevistados afirmam ter sucesso completo
- 45% afirmam ter bastante sucesso
- 37% afirmam ter algum sucesso.
No somatório, 92% reportam sucesso em algum nível. E por isso, pretendem explorar mais a arquitetura de microsserviços. 29% estão migrando ou implementando a maioria de seus sistemas com microsserviços.
Mas devido a que fatores essas organizações foram bem-sucedidas? É o que veremos neste post.
1. Domínio do ciclo de desenvolvimento
A primeira evidência de sucesso com microsserviços encontrada se deve ao domínio do ciclo de desenvolvimento: construir, testar, implantar e manter. Essa condição para o sucesso com microsserviços já era bem compreendida no segmento, como pela IBM, que a cita como fundamental, mas agora vem corroborada pelos dados.
De acordo com o report da O’Reilly, times que dominam o ciclo de vida de desenvolvimento têm a chave do sucesso com microsserviços - e isso a uma taxa de 18% maior do que o daquelas que não tem.
O motivo é que de acordo com o conceito de microsserviços eles decompõem uma aplicação em módulos com funções únicas e interfaces bem definidas. Implantadas independentemente, elas pedem pequenos times multifuncionais, que trabalham em um serviço de ponta a ponta.
Ainda que comum em aplicações monolíticas, o modelo organizacional por silos ou por função perde para os times multifuncionais inerentes ao trabalho com microsserviços – com desenvolvimento, arquitetura, design e operações representados –, cuja capacidade de empoderamento tem sido notada como fundamental para a boa performance com microsserviços.
2. Implementação de microsserviços com contêineres
O uso de contêineres como Docker é outro fator considerado importante pelas organizações para o sucesso com microsserviços.
Embora 58% das organizações ainda não implementem microsserviços com contêineres, o que indica que eles ainda não são os meios mais populares de viabilizar a arquitetura, o cenário está se encaminhando em direção a eles. Na pesquisa da O’Reilly, 42% dos entrevistados implementam de 50% a 100% de seus microsserviços com contêineres.
Além disso, segundo o report, 49% dos respondentes que reportam sucesso completo com microsserviços optaram por contêineres em pelo 75% de seus microsserviços. Já 83% dos que reportam não terem sucesso nenhum implementaram a arquitetura de outra forma.
Por quê? Acreditamos que o motivo do sucesso com microsserviços em contêineres esteja no fato de os contêineres proporcionam maior portabilidade entre ambientes cloud e on-premise e execução isolada, que aumenta a utilização do servidor.
Opções como Cloud Foundry (open source PaaS) e Functions (serviceless) entregam velocidade ao desenvolvimento, por exemplo; já as virtual machines oferecem flexibilidade, porém parece que o decisivo neste momento tem sido mesmo a portabilidade.
3. Práticas DevOps e compreensão da cultura
A Gartner levantou o uso de práticas DevOps como fundamental para o sucesso com microsserviços. Faz sentido. Pois estamos falando de uma arquitetura que engloba o modo como a organização trabalha e se organiza.
Microsserviços pedem times suficientemente empoderados para tomar decisões em termos de gerenciamento de serviços e fazer mudanças quando necessárias.
Outro ponto é que o deployment é bem maior, quando você transforma um monolito em 20 serviços, por exemplo. Para isso, você precisará automatizar muita coisa e fazer melhorias operacionais que garantam a agilidade necessária.
Essa também é a maneira de lidar com um dos desafios para a implementação de microsserviços: a cultura ou mindset, citada por 40% dos entrevistados pela O’Reilly.
No entanto, essa trajetória precisa passar pela compreensão de que tipo de estrutura organizacional está em jogo, assim como de que tipo de decisões foram tomadas em tecnologia pela empresa, antes de movê-la para certa direção.
4. Reconhecimento de que a complexidade aumenta com o número de microsserviços
Apesar de o nível de documentação de mudanças com que os desenvolvedores têm se preocupar estar bem abaixo do de um monolito, é raro que eles fiquem confinados em apenas um time. Desse compartilhamento de microsserviços surge a necessidade de APIs, que também precisam ser gerenciadas.
Quem chama a atenção para esse ponto é o Google. Pois ao mesmo tempo que os times precisam ter liberdade para refatorar e recombinar serviços, em reimplantações regulares, eles precisam gerenciá-las de modo que o trabalho de um não quebre o de outro, o que leva a ineficiência e erros.
À medida que o uso de microsserviços é expandido, a complexidade dessa governança também cresce, porque não pode nem deve ser centralizada, mas descentralizada, de acordo com Martin Fowler.
Por isso, organizações que tem sucesso com microsserviços já estão suficientemente maduras em governança, bem como sobre o entedimento a respeito do valor dos microsserviços para o negócio.
5. Não é necessário começar um projeto com microsserviços
É sabido, por exemplo, que em sistemas menos complexos o esforço extra em governança de microsserviços reduz a produtividade, o que os coloca em risco. No entanto, à medida que a complexidade aumenta, a produtividade com microsserviços supera a do monolito.
Por isso, segundo Martin Fowler, há um padrão:
Quase todas as histórias de sucesso com microsserviços começaram com um monolito que se tornou muito grande e precisou ser quebrado. Quase todas os cases em que um sistema foi construído com microsserviços desde o esboço terminaram em sérios problemas.
Martin Fowler chama a atenção aqui para um ponto: o sucesso com microsserviços está atrelado, normalmente, a sistemas complexos. E se, ao começar um nova aplicação, você não tiver a segurança de que ela escalará, então é melhor considerar.
Embora seja mesmo uma decisão que requeira cuidado, não é uma escolha trivial. É o que defende também Stefan Tilkov. Segundo ele, se o seu objetivo é a arquitetura de microsserviços, começar com um monolito pode ser contraproducente. Há várias dificuldades em desacoplar partes fortemente ligadas umas às outras.
Por isso, mais produtivo seria “construir sistemas independentes uns dos outros tanto quanto possível”, sobretudo em sistemas grandes. Tilkof complementa ainda que:
Começar com uma abordagem em que você divide seu sistema em partes menores e as trata como separadas claramente, como sistemas individuais com seu próprio ciclo de desenvolvimento, implantação e entrega e (a possibilidade de) sua própria arquitetura interna é um conceito poderoso que pode ajudá-lo a entregar um bom sistema.
Sucesso com microsserviços: vários caminhos
Com mais ou menos polêmicas, a pesquisa da O’Reilly confirma certas tendências que já vinham se desenhando e sendo percebidas após mais de 10 anos de experiência com microsserviços.
Porém, a lição que fica é que não existe uma única regra sob a qual caem todos os casos. Pelo contrário. Assim como outros estilos de arquitetura, o sucesso com microsserviços deve ser considerado sempre à luz da forma como as forças e fraquezas inerentes se encaixam no contexto do negócio.
Aliás, se você estiver pensando em migrar ou iniciar um sistema em microsserviços, não deixe de trocar uma ideia com nossos consultores. É sem compromisso!