Faz algum tempo que Ballerina foi disponibilizada para os desenvolvedores, encantando-os com conceitos simples e práticos. Algumas rotinas que já são feitas há tempos em outras linguagens e frameworks ganharam novas perspectivas dentro da lógica "cloud native" da plataforma.
A principal mudança talvez seja a maneira que serviços e clientes se relacionam dentro da aplicação.
Com uma linguagem orientada ao consumo de serviços através da rede, Ballerina faz uma abstração bastante singular do uso de aplicações distribuídas. A linguagem utiliza uma definição de serviço (service) e cliente (client) para a definição de recursos de rede, e sua utilização é bem simples.
Neste artigo, você pode entender um pouco melhor a definição de um client e os recursos ele oferece.
Client proposto
O client proposto para esse exemplo deve buscar dados de uma lista de usuários do Github e compará-los, para ver quem tem mais repositórios públicos dentro da plataforma.
Começando de maneira simples, é necessário criar um client para consultar os dados de um usuário do Github.
Escreva a legenda e créditos da imagem
Escreva a legenda e créditos da imagem
Parece um exemplo simples, mas por ele é possível perceber a orientação a serviços distribuídos da linguagem. Veja algumas características importantes desse código:
Relações entre sistemas
Primeiro, "github", é um Http:Client que possui métodos remotos, como "get", que descrevem as interações entre os serviços. A linguagem representa em sua sintaxe a natureza dessa relação entre sistemas e isso fica evidente quando utilizamos os diagramas de sequência de Ballerina.
Diagramas de sequência
Os diagramas de sequência são um recurso nativo da linguagem que permitem uma visão gráfica da função. Usando o plugin oficial do Ballerina para VSCode, fica fácil ver o diagrama do exemplo:
Escreva a legenda e créditos da imagem
A relação entre sistemas pode ser vista no diagrama, identificando uma chamada para o método remoto "get".
Foco em JSON
Outra característica interessante é o formato da resposta. Ballerina é focada em JSON, o que simplifica muito a manipulação dos payloads obtidos através de um client. É possível definir estruturas mais específicas para os responses:
Escreva a legenda e créditos da imagem
Isso é suficiente para Ballerina fazer a conversão do response para o tipo criado. Veja como é refletido no diagrama de sequência:
Escreva a legenda e créditos da imagem
Esse primeiro passo mostra como é fácil descrever um client e, consequentemente, a relação por completo entre sistemas distribuídos.
Agora é possível seguir o desenvolvimento da proposta.
Múltiplas chamadas
O próximo passo é incluir uma lista de usuários e buscar dados de todos eles.
Agora existe um loop, uma sequência de uso do cliente, o que muda ligeiramente o diagrama anterior.
Escreva a legenda e créditos da imagem
O diagrama deixa bem clara a relação dos fluxos da aplicação com os serviços remotos e reflete a proposta da plataforma. Esses e outros recursos trazem todos os conceitos, que geralmente são abstraídos dentro das linguagens, para a superfície do processo.
Em um momento em que arquiteturas distribuídas e integrações reinam, uma linguagem especializada nestes aspectos tende a contribuir muito para a qualidade e velocidade das entregas dos produtos.
Este artigo foi escrito por Márcio Menezes e publicado originalmente em Prensa.li.