Na conferência microXchg, em Berlim, Alemanha, Stefan Tilkov apresentou a palestra "Como é!? Nossos microserviços possuem usuários humanos reais?". Tilkov propôs que as atuais discussões sobre microserviços tendem a ser centradas em assuntos de backend, como estilos de API, localização de serviços e escalabilidade. Tilkov argumentou que é de extrema importância aumentar o foco em como estruturar o que é, sem dúvida, a parte mais importante de uma aplicação microserviço - a interface com o usuário (UI).
Tilkov, co-fundador e principal consultor na INNOQ, começou a palestra examinando o papel dos componentes frontend dentro de uma arquitetura com base em microserviços, e apresentou a primeira de uma série de hipóteses, "orquestração é barata". Embora a latência da comunicação dentro da infraestrutura de uma aplicação com base em microserviços possa ser mensurada em microssegundos (por exemplo, tráfego intra-datacenter), a latência típica de comunicação através da internet (por exemplo, o tráfego do cliente até o backend da aplicação) será medido em milissegundos. Isso fez com que os desenvolvedores empurrassem orquestração e agregação de dados para o backend.
O padrão "backend for frontend" (BFF) recentemente ganhou popularidade como um antídoto para orquestrações complicadas no frontend, mas Tilkov sugere que as propriedades inerentes desse padrão não nos leva à uma implementação ótima.
Não acredito que o padrão backend-for-frontend seja algo que você almeje. Penso que isso é algo que acontece contigo, porque você conserta algo que está de início quebrado. As vezes é uma boa escolha e as vezes é uma escolha racional, mas não penso que esse seja um padrão a ser seguido.
Seguindo para a próxima hipótese, "canais importam", sugeriu-se que o padrão BFF é frequentemente implementado para cada canal, tais como web, tablet e aplicação nativa, o que pode levar à criação de muitas conexões ortogonais ao serviço (e dependências potencialmente frágeis). Tilkov argumentou que os canais podem não importar, e ao invés disso, os usuários esperam uma "experiência sem descontinuidades através dos canais". Assim, a construção de serviços que "realmente fazem algo" é uma prática recomendada. Isso também supera outra suposição que era "o pecado original do SOA" - os serviços são mais importantes.
A quarta hipótese apresentada foi "tecnologia frontend é um detalhe de implementação". Esta seção da palestra começou com a apresentação dos objetivos típicos de backend de uma plataforma orientada a microserviços: não ter dependências de implementação, possuir uma superfície pequena de interface, ser baseado em padrões, implantação independente e operações autônomas. Tilkov perguntou ao público qual era a analogia da plataforma de frontend, e argumentou que as tecnologias web atuais, como links, redirecionamentos e transclusão, combinadas com a percepção do navegador ser como uma plataforma, encontrou muitas das metas apresentadas para o backend.
A hipótese de que "é OK ter frontends monolíticos" foi discutida como "às vezes válida". Frontends nativos normalmente se assemelham a servidores monolíticos, com metas e restrições semelhantes, e as técnicas de estrutura de organização ("lei de Conway"), de interfaces de plataforma, ciclos de lançamento pré-planejados e disciplina podem ser usados em algum grau para mitigar os corriqueiros problemas de desenvolvimento e de implantação.
A última hipótese apresentada, "aplicações web centradas em JavaScript podem ser tão boas quanto os aplicativos nativos", foi contraposta com a resposta de "não devem ser tão ruins!". Tilkov pediu ao público para questionar a escolha da abordagem de arquitetura monolítica, se isso não é necessário. Com desculpas a Philip Greenspun, Tilkov apresentou uma citação e alertou o público para evitar reinventar recursos de integração do navegador, aceitar alguma ineficiência, e evitar a modularidade a la Java EE ou OSGi etc.
Qualquer aplicação cliente JavaScript suficientemente complexa contém a implementação de metade de um navegador. Uma implementação que é lenta, pontual, informalmente especificada, e cheia de defeitos.
Em conclusão, Tilkov propôs que poucas organizações estão no negócio de fornecer APIs - UIs. Assim, frontends monolíticos são tão bons, ou tão ruins, quanto backends monolíticos, e nada bate o navegador que diz respeito à entrega de frontend modular. Qualquer um que esteja considerando, ou esteja envolvido, em uma mudança para uma aplicação baseada em microserviços deve considerar a arquitetura frontend tão importante quanto a arquitetura backend.
O video da palestra "Como é!? Nossos microserviços possuem usuários humanos reais?", de Stefan Tilkov pode ser encontrado no canal da microXchg, no YouTube, e os slides para a apresentação podem ser encontrados no website da innoQ.