Introdução

Estamos vivendo em uma Era Digital onde muitas empresas (isso inclui, também, clientes onde atuei), estão buscando aplicar o estilo arquitetural de Microsserviços, visando alavancar a estratégia de negócio. Mas a Hype NÃO vai resolver os seus problemas, sem conhecer e entender como aplicar técnicas de engenharia de software e conceitos computacionais!

Foi observado através dos cursos que a emerging code tem ministrado e, também, através da realização de consultorias de arquitetura de software e soluções, que existe um cenário um tanto descompassado do ponto de vista da aplicação das técnicas de engenharia de software, com pouco conhecimento relacionados a quais Atributos de Qualidade devem ser (como engenheiros de software temos esse dever de conhecê-los) analisados e levados em consideração em projeto de software e quais premissas computacionais não podem ser ignoradas em nenhuma das fases do desenvolvimento de um projeto.

Abaixo é apresentado um diagrama da ISO/IEC 25010, onde são listados Atributos de Qualidade a serem levados em consideração, quando se está modelando um projeto de software:

Quality Characterisctics of ISO 25010

Ainda relacionado aos atributos de qualidade citados acima, é importante levar em consideração o Teorema CAP, muito relevante do ponto de vista de entender os Trade-Offs que temos que lidar, devido as escolhas necessárias para resolver um problema do negócio da companhia.

Apesar de toda a carência encontrada relacionadas ao entendimento e conhecimento das técnicas de engenharia de software, observada nos projetos que tenho particpado; os cenários que os clientes que atendo atuam, me deu a oportunidade de entender as razões pelas quais as equipes de desenvolvimento dessas empresas, estão em busca do Santo Graal da Indústria de Software: Microsserviços!

Com o mercado de T.I aquecido e a concorrência, cada vez mais se aperfeiçoando e se fortalecendo com o advento de novos termos, para explicar velhos conceitos, com a diversidade de ferramentas e a necessidade de escalar o negócio de uma companhia, leva à uma tomada de decisão estratégica urgente, e o termo Microsserviços, traduz toda essa necessidade de alta escalabilidade, tanto em termos técnicos e tecnológicos, quanto de negócio. Implementar Microsserviços, hoje, é quase um Mantra dentro das empresas, e em quase todos os projetos de software que tenho tido contato, nos últimos 3 anos.

Implementar o conceito de serviços e microsserviços em um projeto, nos leva a uma série de benefícios (fáceis de serem vendidos e comprados), mas também temos um aumento das preocupações (Dificeis de serem faladas, mas necessárias para saber tomas a decisão certa para o projeto), uma delas recai sobre a Composição dos Serviços! E a partir deste ponto, uma outra chuva de questionamentos começam a aparecer dentro do time de engenheiros, os quais terão a responsabilidade de encontrar uma solução para resolver essa necessidade técnica e que afeta, diretamente, o negócio.

SOA Pattern: Composite UI Front-end

Desenvolver a capacidade de Composição de Serviços, nos exige o conhecimento de técnicas e padrões, os quais podemos encontrar nos Padrões SOA e, aplicar como solução de um sistema computacional, uma delas é a UI Composition ou Composite UI Front-end.

Problema

Vamos tentar imaginar uma situação onde é necessário desenvolver uma plataforma de comércio Online. Nessa plataforma, possibilitará aumentar a escalabilidade e a conversão de usuários. Para isso, será necessário desenvolver serviços, em formato de Api REST, com o objetivo que o time WEB e o time Mobile possam consumir essas mesmas APIs, conforme apresentado na imagem abaixo:

Untitled Diagram

A imagem acima trata de um cenário bem comum em aplicações web e que estão buscando impelmentar serviços web. As aplicações Web e Mobile tem a capacidade de requisitar informações “diretamente” (Omiti o servidor de autenticação e autorização, por questões didáticas) as APIs. Outro ponto que pode ser observado, na arquitetura acima, é a responsabilidade que, as aplicações Web e Mobile, assumem do ponto de vista de composição de dados (Composite UI Front-end). Uma arquitetura interessante e bem comum de ser encontrada, não acha? Funciona bem na maioria dos casos. Mas infelizmente, no mundo real, essa arquitetura não oferece um desenho arquitetural que facilite a alta escalabilidade de uma plataforma web, tendo em consideração as perspectivas abaixo:

  • Dificuldade em fornecer Roteamento;
  • Composição realizada na UI;
  • Autenticação/Autorização executada separadamente, em cada uma das APIs;
  • Dificuldade em implementar Resiliência através da UI;
  • Baixa Tolerância a falha;
  • Rastreabilidade distribuída em cada um dos serviços;
  • Responsabilidade do monitoramento é delegado aos serviços;
  • Dificuldade de garantir o Rate Limit;
  • Dificuldade de implementação de programação reativa.

Conclusão

Implementar uma arquitetura orientada a serviços, segue um caminho que vai além de criar uma API e publica-la em um servidor com capacidade de escala horizontal ou vertival. Inferir um Microsserviço, dentro de um serviço, é uma tarefa ainda mais desafiador, tendo em vista a necessidade de medir as métricas do monitoramento de um serviço e entender as necessidades estratégicas de uma parte específica do negócio de uma companhia.

Portanto, desenhar uma arquitetura de solução, seja para atender a uma migração de sistemas legados ou mesmo para trabalhar em um projeto Green Field (começando do zero e usando tecnologias atuais), nos exige um conhecimento muito especializado em engenharia de software e padrões de serviços e infraestrutura.

Em um próximo artigo, vou mostrar como podemos solucionar o problema exposto aqui.

O que achou? Deixe um comentário e compartilhe sua experiência em seus projetos!

Referências:

Está interessado em desenvolver Arquitetura de Serviço em seus projetos ou melhorar o desenho de sua arquitetura?

A Emerging Code pode te ajudar. Entre em contato conosco, teremos prazer em realizar mentoria em seus projetos!

Uma resposta para “API Gateway Pattern, Backend for Front-end (BFF) – Parte 1

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s