O InfoQ participou da JAXLondon 2017 em outubro. Um destaque no evento foi a conversa com Emily Jiang da IBM que forneceu alguns detalhes sobre uma plataforma colaborativa com base no Eclipse chamada Eclipse MicroProfile. Essa conversa cobriu um pouco da história do Eclipse MicroProfile e mergulhou nos detalhes sobre a tolerância a falha e os planos futuros de cobertura e colaboração entre os desenvolvedores Java.
Os MicroProfiles são a tecnologia projetada para ajudar a configurar microservices. A primeira versão, o MicroProfile 1.0 foi lançado em setembro de 2016. O Eclipse MicroProfile 1.1 (lançado em agosto de 2017) foi o primeiro sob a fundação Eclipse.
O MicroProfile 1.0 teve como base o Java EE 7 e usa o stack CDI + JSON-P + JAX-RS. Com o Eclipse MicroProfile 1.1, um novo stack de configuração foi introduzido para ajudar com a portabilidade.
Jiang forneceu detalhes sobre o último MicroProfile que foi recentemente lançado como versão 1.2. Essa versão tem uma série de novas funcionalidades, incluindo métricas para toda a aplicação e health checks por meio da implantação para um ambiente Kubernetes de um único núcleo. Uma nova funcionalidade importante da versão 1.2 é fornecer ajuda com tolerância a falhas. Há também um JWT no qual microservices podem interagir entre si em um ambiente seguro.
O próximo tópico importante foi a API de tolerância a falhas, iniciamos com a discussão de @Retry, @Timeout e @Bulkhead. A anotação @Bulkhead isola as threads (10 por padrão) de maneira que uma falha em uma parte do sistema não para todo o sistema. Uma app também pode usar @Bulkhead com @Asynchronous para usar um estilo de thread Bulkhead, que significa que a invocação será em uma thread separada.
Como parte de falha a tolerância e suporte a detecção de falhas, o MicroProfile 1.2 inclui @CircuitBreaker. Essa anotação diz que qualquer quebra no circuito em tempo de execução (também conhecido como circuito aberto) deve resultar em uma falha imediata. Um circuito fechado invocará os serviços como projetado.
A API também fornece o @Fallback, no qual um manipulador pode ser programado para retornar a um serviço padrão quando uma opção de serviço selecionada não está disponível. Esse suporte precisa ser fornecido a nível de aplicação uma vez que o sistema subjacente pode não necessariamente fornecer fallbacks.
Além da discussão sobre a tolerância a falhas do MicroProfile, Jiang falou sobre a plataforma Istio. É possível usar o Istio para a tolerância a falhas e desabilitar o fallback padrão do MicroProfile.
Jiang apresentou uma prévia dos planos para o futuro, mencionando o Eclipse MicroProfile 1.3 que pode adicionar suporte ao Open Tracing e Open API antes de um eventual MicroProfile 2.0. Esta versão futura pode ser esperada para ser lançada com suporte para outras tecnologias EE8.
Para concluir Jiang forneceu uma demo curta do OpenLiberty para demonstrar as funcionalidades do MicroProfile 1.2. Mais detalhes sobre todas essas tecnologias podem ser encontradas no site do Eclipse Microprofile.