Arquitectura de micro serviços

Sistemas Monolíticos


fonte: MongoDB

Um dos principais pontos fracos dos sistemas monolíticos é a existência de um grande ponto único de falha. Isto significa que a ocorrência de um erro pode comprometer todo o sistema, mesmo as funcionalidades que não têm nenhuma relação com esse incidente. Por exemplo, uma falha no registo de funcionários de um ERP que deixe o sistema fora do ar pode limitar a geração de contratos para clientes. Outro ponto fraco é a base de código, que se torna muito extensa, podendo deixar novos membros do projecto menos produtivos durante algum tempo, já que a complexidade do código é muito maior.

Por outro lado, temos um sistema cujo DEPLOY é fácil, já que a base de dados facilmente evoluirá com as outras componentes para todas as funcionalidades e há apenas um ponto onde o DEPLOY tem de ser executado. Além disso, não há duplicação de código e de classes entre os vários módulos, já que todas elas fazem parte da mesma unidade.

Micro Serviço


Um micro serviço é uma componente de alta coesão, baixo acoplamento, autónoma e independente, que representa um contexto de negócio de uma aplicação.

Arquitectura de Micro Serviços


fonte: MongoDB


Particionar uma aplicação em unidades independentes, autónomas, de alta coesão e baixo acoplamento. Uma das grandes vantagens é que os micro serviços devem ser criados, mantidos, executados e distribuídos de forma totalmente independente.

Trata-se de uma arquitectura que permite que pequenos serviços de aplicação coexistam e comuniquem entre si, de modo seguro, escalável e permitindo que os novos serviços possam ser incluídos na plataforma a qualquer momento, complementando as funcionalidades já existentes. De salientar que não se trata de um único produto composto por múltiplos serviços relacionados entre si, mas sim de uma plataforma de agregação de serviços. É possível haver uma instância da plataforma que agregue serviços de CRM, outra que agregue serviços de ERP e outra para serviços de POS, cada uma delas constituindo um sistema distinto. Ainda assim, para cada uma destas plataformas, existe a possibilidade de agregar novos serviços, incluindo alguns que sejam responsáveis exclusivamente pela interacção entre os diferentes sistemas.


Como Distribuir Micro Serviços


fonte:MongoDB

Duas características importantes dos micro serviços são: Autonomia e Independência, o que significa que se pode fazer deploy de um micro serviço, sem ter que recompilar os outros ou os seus "clientes".
Para evitar esse acoplamento, cada micro serviço é instalado num host diferente. Host diferente não implica máquina física distinta, pode ser uma arquitectura de VMs (Azure), de Light Containers LXC (Docker - poderiamos distribuir os micro serviços como aplicações Docker) ou frameworks de orquestração (Kubernetes, Mesos).

Os micro serviços comunicam entre si e com os clientes usando mecanismos standard e agnósticos de tecnologia, como HTTP e REST. Os micro serviços são componentes autónomas e de baixo acoplamento, portanto, não têm de ser construídos com a mesma linguagem nem processados na mesma plataforma.


Como Ficam as Aplicações?


Com micro serviços podemos criar novas aplicações por composição, agregando os micro serviços que julgarmos necessários, sem camada de persistência, pois os dados são tratados apenas por cada micro serviço específico.

Aqui o padrão Backends for Frontends consiste em criar módulos agregadores, para cada página, que consomem os micro serviços e montam as áreas de conteúdo para a página.



(editado)

vide Microservices, a definition of this new architectural term







fonte: Micro serviços: O que são e para que servem?Arquitetura de microserviços ou monolítica?
Licença CC BY-SA 4.0 Silvia Pinhão Lopes, 19.6.16
Print Friendly and PDF

Sem comentários:

Com tecnologia do Blogger.