BT

restQL, uma linguagem de consulta para microservices, lançada no GitHub

| por Thomas Betts Seguir 24 Seguidores , traduzido por Andrea Mussap Seguir 6 Seguidores em 08 fev 2018. Tempo estimado de leitura: 2 minutos |

Para melhorar a experiência das pessoas que acessam o InfoQ Brasil, nós criamos uma série de funcionalidades que te permitem ficar por dentro das últimas tendências e das novidades de seu interesse, sem que você seja incomodado por coisas irrelevantes. Receba e-mails periódicos e notificações sobre seus tópicos favoritos!

O restQL, uma linguagem de consulta para microservices, está disponível como um projeto open-source sob a licença MIT. O objetivo da restQL é simplificar cenários comuns para o acesso do lado do cliente a microservices RESTful, incluindo múltiplas chamadas paralelas e chamadas em cadeia. Desenvolvido pela B2W, a maior empresa de comércio eletrônico em operação da América Latina, a restQL foi criada para evitar algumas limitações das estruturas de dados e frameworks de gerenciamento mais conhecidos, Falcor e GraphQL.

Enquanto o Falcor está disponível apenas para clientes JavaScript, a restQL está disponível para qualquer cliente que suporte chamadas REST via HTTP. Isso permite seu uso em aplicativos móveis escritos em Swift e Java. Embora a GraphQL já seja uma linguagem madura para consulta de dados, ela não oferece alguns dos recursos simples ou bem estabelecidos disponíveis para serviços RESTful, como códigos de resposta HTTP ou cache de navegador nativo.

Da mesma forma que outras linguagens de consulta, as instruções restQL descrevem os recursos a serem recuperados filtrados por parâmetros. Por exemplo:

	from hero
	    with
        name = "Restman"

Por padrão, as consultas são executadas em paralelo, sem qualquer sintaxe especial. Cenários comuns, porém mais complexos, como chamadas em cadeia ou multiplexadas (exemplo abaixo) também são bem diretos.

	from hero
	    with
	        name = "Restman"
	
	from sidekick
	    with
	        hero = hero.id

O servidor restQL, implementado em Clojure, é responsável por tratar parses e respostas atuando como uma ponte entre os clientes que enviam consultas restQL e as APIs em backend. Somente as informações de configuração são armazenadas no servidor para emparelhar nomes de recursos com a chamada dos endpoints correspondentes. Como o servidor restQL utiliza um endpoint REST padrão, não há necessidade de um cliente especializado.

Em uma publicação no blog onde anuncia o restQL, Ricardo Mayerhofer, Gerente de TI da B2W Digital e um dos autores do restQL, disse que o projeto nasceu durante a migração de microservices da empresa. As equipes de desenvolvimento se beneficiaram rapidamente de um movimento para microservices, com aplicações menores para suportar e uma manutenção correspondente mais fácil. No entanto, o código de front-end tornou-se mais complexo, tendo que orquestrar chamadas para vários microservices, em vez de uma única e grande chamada para o monólito antigo.

Mayerhofer resumiu sua experiência como: "Uma arquitetura baseada em microservice não é uma bala de prata. Apesar de seus benefícios imediatos para as equipes de serviços, ele representa, pela própria natureza, um desafio em termos de complexidade e desempenho para os consumidores". Depois de considerar o Falcor e o GraphQL, o restQL foi desenvolvido e se mostrou instrumental na simplificação do acesso do cliente à uma variedade de serviços back-end.

Mais informações sobre o restQL podem ser encontradas na página do projeto em http://restql.b2w.io/. O código fonte está disponível no GitHub.

Saiba mais sobre a restQL no artigo restQL: Lidando com a complexidade de consultas a microservices, disponível no site do Infoq Brasil.

Avalie esse artigo

Relevância
Estilo/Redação

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Dê sua opinião

Faça seu login para melhorar sua experiência com o InfoQ e ter acesso a funcionalidades exclusivas


Esqueci minha senha

Follow

Siga seus tópicos e editores favoritos

Acompanhe e seja notificados sobre as mais importantes novidades do mundo do desenvolvimento de software.

Like

Mais interação, mais personalização

Crie seu próprio feed de novidades escolhendo os tópicos e pessoas que você gostaria de acompanhar.

Notifications

Fique por dentro das novidades!

Configure as notificações e acompanhe as novidades relacionada a tópicos, conteúdos e pessoas de seu interesse

BT