5 Minutos de Microserviços!

microservices

Quem nunca participou de um projeto de desenvolvimento de software em que depois de muito dinheiro consumido, centenas ou milhares de horas investidas, ótimos programadores não entrega absolutamente nada de valor para o cliente além de se perder em sua complexidade e tamanho?

Esses projetos “mamutes” normalmente se apoiam em alguma metodologia waterfall que ainda insiste em acreditar que todos os requisitos do software são conhecidos, definidos, desenhados e especificados no início do projeto.

A realidade nos diz o contrário, o desenvolvimento de software não é de forma alguma um processo linear de definição/execução, ao invés disso devemos entendê-lo como um processo evolutivo de comunicação, aprendizado e entrega.

 

Características comuns de softwares produzidos por metodologias Waterfall

Altamente Acoplado – As chamadas/relacionamentos com a camada de negócio acontecem no nível da programação ao invés de protocolos independentes como SOAP e REST. Isso aumenta e muito a chance que mesmo uma pequena mudança em um componente pode “quebrar” outras partes da aplicação ou introduzir novos bugs.

Leaky – A maioria de grandes aplicações gerenciam uma infinidade de entidades que são administradas por times diferentes, como não temos claramente os limites de cada entidade de domínio, é muito comum que times diferentes alterem entidades que não são deles. Mesmo pequenas mudanças em uma única tabela pode ocasionar uma grande alteração na aplicação e testes exaustivos para garantir que tudo continue funcionando como antes.

Monolítico – Toda vez que alguém faz uma pequena alteração na aplicação, é necessário que seja recompilada, passe por todo o ciclo de teste e que seja reimplantada por completo. Isso torna o processo custoso e lento, além de que grandes mudanças se tornam quase impossíveis de serem implementadas.

 

A Arquitetura de Microserviços tem uma abordagem completamente diferente dessa, suas principais características são:

Restrita – Microserviços tem um conjunto bem específico de responsabilidades. Os microserviços seguem o mantra de que cada serviço faz UMA coisa e faz realmente bem feito.

Baixo Acoplamento – Uma aplicação baseada em microserviços é uma coleção de pequenos serviços que somente interagem com outros microserviços através de interfaces bem definidas e protocolos independentes(por exemplo, HTTP e REST).

Abstrata – Microserviços gerenciam e são “donos” de suas entidades de domínio(pense em tabelas…). Entidades pertencentes a Microserviços só podem ser modificadas pelo seu serviço e por mais ninguém.

Independente – Cada microserviço pode ser compilado e implantando de forma totalmente independente. Isso significa que alterações podem ser implementadas e testadas de uma forma muito mais fácil do que em aplicações monolíticas.

 

E por que os microserviços são importantes para uma desenvolvimento baseado em Cloud?

Diversidade de sua base de usuário – Diferentes clientes buscam diferentes funcionalidades, e eles não querem aguardar por uma nova versão que vai demorar um ano para ser disponibilizada. Microserviços permitem que funcionalidades sejam entregues rápidas, visto que cada serviço tem um escopo pequeno e bem definido.

Redução do Downtime – Aplicações baseadas em Microserviços pode de forma mais fácil isolar falhas e problemas em partes específicas da aplicação sem a necessidade de tirar toda a aplicação do ar para corrigí-los. Isso reduz o tempo de downtime e fazem com que as aplicações se tornem mais resilientes a problemas.

Escalabilidade – Enquanto tínhamos nossas aplicações dentro de casa, sendo implantadas no nosso data center, conseguíamos controlar e prever os acessos e os recursos. Entretanto, quando pensamos em uma aplicação na nuvem, basta um simples tweet ou um post para o acesso ir ao topo. Como as aplicações baseadas em Microserviços são “quebradas” em pequenos componentes e esses componentes podem ser implantados de forma independente, é muito mais fácil(e barato) escalar pedaços da aplicação que estão sendo mais exigidos, ao invés de provisionar escalabilidade para a aplicação como um todo.

 
Conte com a CBDS para tirar todo proveito da Arquitetura de Microserviços nos seus projetos e na sua empresa!

  
img-ebook