Saiba como os Micro Serviços podem turbinar sua inovação.

Saiba como os Micro Serviços podem turbinar sua inovação.


Um dos “buzzwords” em desenvolvimento de aplicações na nuvem é a arquitetura de micro serviços. Mas, o que é e como pode ajudar a acelerar sua inovação?

Em tempos de transformação digital o êxito no desenvolvimento de software pode ser a diferença entre o sucesso e fracasso das empresas. Hoje, muitos estão apreensivos e alertas às novas ideias, modelos de negócio e aplicações que poderão causar disrupção em seus mercados. Como escreveu Marc Andreessen, "o software está engolindo o mundo". Isso gera uma crescente demanda por agilidade no desenvolvimento de aplicações, que se tornou uma das principais ferramentas de inovação, diferenciação e competitividade de negócios.

Até algum tempo, a forma predominante de desenvolvimento de software era o modelo de aplicações monolíticas. O princípio é que uma aplicação deve conter todos os seus recursos: interface, dados, lógica, regras de negócio etc. Tudo integrado e implementado em uma única base de código que pode demorar meses ou anos para ser concluída.

Infelizmente, os resultados estão longe do desejado. É comum que, depois de um longo projeto, se verifique que o produto final não atende as expectativas, ou que os requisitos inicialmente levantados estavam errados. O longo hiato entre o entendimento das demandas e os testes e implantação, com pouco feedback dos usuários, pode gerar um abismo entre a expectativa e o produto final. Os resultados são atrasos, custos imprevistos, retrabalho e projetos cancelados.

É como o velho cartoon que fala sobre desenvolvimento de software...

Os números impressionam. De acordo com o estudo do Standish Group de 1995, cujo título é “Chaos”, somente 16.5% dos projetos de software tinham sucesso enquanto 52% tinham problemas, superando o tempo e orçamento previstos. 31% eram cancelados. Muitos apresentavam um custo de manutenção muito superior ao inicialmente estimado.

Vinte anos depois, outra versão do estudo mostra uma melhoria marginal nos resultados e confirma que bilhões de dólares continuam sendo desperdiçados em projetos de software.

Outros estudos realizados pelo Gartner, McKinsey, IBM, Tata Consulting etc. corroboram com esta visão.

Alguma solução é necessária para tentar trazer ordem ao caos.

Small is beautiful!…

Diversos métodos e tecnologias foram testados como potenciais soluções para este problema apresentando resultados mais ou menos satisfatórios. Entretanto, dois caminhos interessantes se destacam:

Projetos com escopo menor têm taxa de sucesso mais elevada. O estudo do Stadish Group em 2015 mostra que projetos menores alcançam taxas de sucesso de até 58%, quando utilizando metodologia de desenvolvimento ágil, enquanto grandes projetos atingem apenas 18% de sucesso em condições similares. Divisão de responsabilidades, requisitos bem definidos, equipes pequenas e coesas, cronogramas compactos, tudo isso aumenta as chances de sucesso em projetos de software.

O Segundo é o emprego de código na forma de módulos independentes que, quando combinados, permitam a construção de aplicações mais complexas. Eventualmente os mesmos módulos podem ser reutilizados em várias aplicações. As linguagens orientadas a objetos foram as primeiras tentativas de implementação deste conceito. Foram seguidas mais tarde pela Arquitetura Orientada a Serviços, ou SOA. Posteriormente, com o advento de computação em nuvem, surge a arquitetura de micro serviços.

Mas o que são micro serviços?

Não existe uma definição formal ou acadêmica. Em grandes linhas, um micro serviço é um processo autocontido que oferece uma funcionalidade de negócio. Ele pode representar um catálogo de produtos, carrinho de compras, processamento de pedidos etc. Seu foco é a execução de uma única tarefa de negócio.

O termo surgiu em 2005 em discussões na comunidade de desenvolvedores de SOA e começou a ser considerado um estilo de arquitetura por volta de 2011 quando aplicado em sistemas de empresas como o Netflix. Alguns os veem como uma variante da arquitetura SOA utilizando serviços granulares, “fine grained SOA”, enquanto outros os consideram um novo modelo de arquitetura.

De qualquer forma, as duas abordagens empregam conceitos similares: serviços bem definidos, com escopo reduzido, acessados via APIs e que podem ser combinados para construção aplicações.

Princípios

Alguns dos princípios de uma arquitetura de micro serviços são:

  • Uma aplicação pode ser decomposta em blocos de funcionalidades de negócio, cada um deles um micro serviço independente e autônomo.
  • Usualmente são desenvolvidos por pequenos times.
  • Podem ser escritos em qualquer linguagem. Isso dá flexibilidade de empregar a melhor tecnologia para a tarefa em questão enquanto reduz a dependência stacks específicos de software.
  • Funcionam como pipes Unix, ou seja, recebem um pedido (entrada), o processam e retornam o resultado (saída).
  • Múltiplas instâncias do mesmo micro serviço podem rodar em paralelo para garantir escalabilidade e/ou redundância.
  • É comum serem implementados utilizando a tecnologia de containers.
  • São acessados através de protocolos “leves”, usualmente APIs REST.
  • Devem ser tolerantes a falhas e continuar operando mesmo que outro serviço do qual sejam clientes pare de funcionar.
  • Novas funcionalidades e correções podem ser implementados rapidamente viabilizando implantações constantes, até mesmo diárias.

Ser ou não ser?

Micro Serviços trazem vantagens que auxiliam na agilidade de desenvolvimento de software e aumentam a taxa de sucesso dos projetos. Eles pode acelerar o processo de inovação facilitando a introdução, de forma rápida, de ajustes e melhorias no código de aplicações.

São fáceis de entender, desenvolver e implantar. Sua manutenção é mais simples. Não dependem de um stack específico de software e podem ser replicados garantindo escalabilidade e resiliência. São extremamente úteis para aplicações que podem ser modificadas frequentemente.

Em suma, são uma ferramenta poderosa.

Mas há um preço a ser pago por isso. Coordenar múltiplos serviços em uma arquitetura distribuída não é tarefa fácil. Embora micro serviços sejam individualmente simples, a orquestração dinâmica dos recursos envolvidos pode ser complexa e exige uma equipe experiente em disciplinas de DevOps.

 “Uma longa viagem começa com um único passo” - Lao-Tsé

Não é do dia para a noite que a arquitetura de micro serviços será o modelo predominante de desenvolvimento de software. Por outro lado, deve ser cada vez mais presente nas novas aplicações. Se você participa do desenvolvimento de software, é quase certo que eles farão parte do seu futuro.

Então é melhor se preparar.

O IBM Cloud Architecture Center oferece dois ótimos guias para auxiliar nesta jornada: o primeiro é o Microservices Point of View Guide, que aprofunda os conceitos abordados neste artigo. O segundo é um guia para tomada de decisões de desenvolvimento com micro serviços. Ele aborda o tema por múltiplas perspectivas como considerações de negócio, financeiras, recursos humanos até capacitação técnicas, arquitetura e estratégia de implantação.

Um passo inicial para entender como tudo isso funciona na prática é testar você mesmo. Desenvolver um micro serviço pode ser feito de forma gratuita utilizando serviços free tier em cloud. A IBM Cloud, por exemplo, oferece tanto 30 dias grátis para testes utilizando containers e um free tier por tempo ilimitado para este serviço.

Há um ótimo tutorial sobre como desenvolver uma aplicação com arquitetura de micro serviços utilizando Cloud Foundry ou Containers na IBM Cloud.

Assim fica fácil você pode dar o primeiro passo, e começar (grátis) com o pé direito.

Para saber mais:

How it works: Microservices (Video)

IBM Microservices Point of View Guide

Microservices from Theory to Practice (IBM Redbook)

IBM Microservices Decision Guide

Avi Alkalay

Machine Learning Industrialization ⋮︎ Digital Transformation ⋮︎ Data Science ⋮︎ IT Strategy ⋮︎ AI ⋮︎ Tech Leadership ⋮︎ Open Source ⋮︎ Writer ⋮︎ Lecturer

7 a

Gostei muito da linha do tempo. Achei muito informativo, fiquei espantado com essas estatísticas que mostram o baixo índice de sucesso de projetos de desenvolvimento de software. Software é um dos investimentos mais poderosos e estratégicos que uma empresa pode fazer. Software é a representação digital para processos humanos: uma vez escrito, a máquina assume e livra os humanos para tarefas mais nobres. Fico feliz que novas técnicas e métodos estão se consolidando para aumentar a chance de sucesso de projetos de software. DevOps, containers, 12 factor e microserviços estão entre eles.

Marcos Paraiso

Vice President of Sales & Business Development

7 a

Obrigado Gylson Fernandes. Que bom que gostou. Abraço.

Gylson Fernandes

Executive IT Strategy | Innovation Specialist

7 a

Excelente artigo!

Entre para ver ou adicionar um comentário

Outras pessoas também visualizaram

Conferir tópicos