Utilizando MicroServices na Umbler

Ultimamente, muito tem se falado sobre microservices: um padrão de arquitetura de software que se propõe a dividir suas aplicações em um conjunto de serviços independentes.

À medida que você vai evoluindo um projeto, é natural colocar todas as funcionalidades em um único sistema. Estes sistemas unificados, que compõem todos os requisitos de um projeto, são chamados de sistemas monolíticos.

Sistemas monolíticos têm suas vantagens, já que todo o código está em uma só base de dados e a atualização do software acontece com um único deploy. Porém, essas forças também são fraquezas, já que sistemas monolíticos tendem a ficar cada vez mais complexos.

Bons desenvolvedores tendem a criar sistemas monolíticos divididos em módulos, criando um belo Megazord.

Sistema monolítico Megazord

Outros não têm a mesma sorte e acabam criando no máximo um Frankenstein.

It's Alive" Umbler

Os sistemas monolíticos podem até funcionar bem, pelo menos no início do projeto, com execução de testes automatizados e criação de múltiplas instâncias simultâneas em produção. Porém,  a tendência é causar frustrações, à medida que a complexidade aumenta  – os testes passam a levar horas e os deploys são postergados o máximo possível.

Para contornar esses problemas, tem se apostado muito na criação de microservices. Ao contrário das aplicações monolíticas, a ideia aqui é dividirmos nossos sistemas em diversos microserviços, cada um com uma pequena responsabilidade. Nada muito novo, já que a Filosofia Unix incentivava esse estilo de arquitetura desde os anos 1980, com a máxima:

“escreva programas que façam apenas uma coisa, mas que façam bem feito”.

O termo se popularizou nos últimos anos, pois a criação de “micro-web-services” tornou-se extremamente fácil. Frameworks para a criação de APIs REST estão disponíveis nas principais linguagens do mercado, fazendo do protocolo HTTP a escolha padrão para a comunicação entre microservices, APIs disponibilizadas por grandes empresas do mercado, como Google, Twitter e Facebook, também contribuíram para isso.

E se criássemos nossas próprias micro-api e microservices para determinadas funcionalidades de nossos próprios sistemas?

Os benefícios seriam grandes, já que atualizações em sistema pequenos costumam ser mais tranquilas de serem realizadas, facilitando a implantação, deploy, inicialização, e escalabilidade de cada serviço.

Além disso, você poderia ter times pequenos focados em cada um dos serviços, e novos times poderiam rapidamente se tornar produtivos, adaptando-se a um novo serviço ou dando manutenção a um já existente.

Como começar

Os microservices devem ser criados de acordo com funcionalidades do negócio que possam ser independentes, possuindo um deploy próprio.

Sistema monolítico Megazord Bots

A granularidade vai de acordo com a necessidade. Tente notar partes do sistema que ficariam mais performáticas com uma linguagem ou um banco de dados diferente do utilizado atualmente.

Algumas regrinhas que todo o microservice deve ter para garantir seu sucesso.

  • Serviços pequenos, que realizam uma única função;
  • Serviços que possam ser facilmente substituídos por outros com as mesmas funcionalidades;
  • Serviços que possam ser implementados usando diferentes linguagens de programação e banco de dados, independente dos demais serviços, podendo utilizar a tecnologia que mais se adequar;
  • Serviços fáceis de manter e modificar, aplicando as práticas de integração contínua, e com possibilidade de rodar múltiplas instâncias simultaneamente.

Antes de criar um microservice

Antes de migrar toda a sua aplicação para microservices, é importante verificar a real necessidade da escolha, pois, ainda que existam diversos benefícios, vale lembrar que você terá mais projetos para gerenciar.

Serão mais projetos para realizar deploy, o que pode acarretar em informações duplicadas entre os serviços. Até mesmo lógicas de negócios podem precisar de duplicação e em diferentes tecnologias (bancos de dados e linguagens de programação, etc).

Hospedando seus microservices na Umbler

O melhor de trabalhar com uma arquitetura de microservices é que você não terá quase nada de custo adicional com hospedagem. Contratando na Umbler, você pode hospedar a maioria de seus microservices (se não todos) em um único Cloud. Para começar, adicione um Cloud na sua conta para hospedar seu site principal e seus microservices.

Já seus microservices podem ser hospedados como subdomínios. Adicione um subdomínio para cada microservice que você possui e escolha o Cloud que você criou anteriormente. Usando o mesmo Cloud você não terá nenhum custo adicional.

Micro Services painel app Umbler

Caso seja necessário, você pode hospedar um de seus microservices, ou um grupo deles, em um Cloud separado. A escolha dependerá de uma série de fatores, como número de requisições, processamento e memória necessária para o serviço funcionar.

Para saber mais

Migrar para uma arquitetura de microservices traz diferentes oportunidades de acordo com o projeto. Se ficou interessado sobre o assunto e quer se aprofundar, confira alguns links (em inglês) para saber mais.

Tem algum recurso que você queira ver na Umbler? Você pode ajudar a escolher as próximas features: é só clicar aqui e votar

  • Marlon Amancio

    Muito didático! obrigado

  • Ricardo Conceição

    Muito bom

  • Moari

    Ótimo

  • kleiton

    um dos melhores serviços

  • Caio

    Alguma previsão de suporte a containers Docker?

    • Olá Caio,
      Desculpe a demora. Nós já estamos trabalhando numa nova arquitetura da nossa plataforma que está sendo desenvolvida com base em Docker. Disponibilizaremos inicialmente o ambiente Node.js já rodando em Docker, que por sinal está ficando muito legal. Na sequência lançaremos os demais ambientes. Assim que lançarmos vamos avisar toda a nossa base.

      Obrigado pela pergunta 😉