BT

Ballerina: uma nova linguagem para criação e integração de microservices

| por Joao Emilio Seguir 1 Seguidores em 03 out 2018. Tempo estimado de leitura: 4 minutos |

Durante as últimas duas décadas, os projetos de integração ficaram cada vez mais presentes na rotina das empresas. Diversas maneiras de resolver esse desafio foram criadas. Da transferência de arquivos entre sistemas até a famosa era da arquitetura orientada a serviços (SOA), onde reinaram os "barramentos" (Enterprise Service Bus - ESB). Analisando essa trajetória, também é possível identificar uma constante fragmentação das aplicações em pedaços menores. Tendência que vem acontecendo há algum tempo como revela a imagem a seguir:

Ao longo do tempo, esses componentes fragmentados foram se tornando acessíveis remotamente. Eles são os chamados endpoints. Em se tratando de dados, aplicativos, APIs, microservices ou serverless, tudo está se tornando um endpoint programável e o número de endpoints está crescendo exponencialmente dentro e fora das corporações.

As aplicações escritas atualmente dependem cada vez mais desses endpoints. Por isso, o tema integração torna-se essencial na criação ou melhoria de projetos de software. Entende-se como integração a disciplina de comunicação resiliente entre os endpoints, algo que não é fácil. Os desafios incluem compensação, transações, eventos e tratamento de protocolos, mediação, entre outros.

As duas maneiras de lidar com projetos de integração mais discutidas atualmente são:

A utilização de produtos de integração com base em configuração, não no código, tais como EAI, ESBs e DSLs. Não se pode dizer que essa é uma abordagem ágil, uma vez que dificulta a edição, a construção, a execução, o ciclo de teste, e interrompem o pipeline de desenvolvimento. Porém, as ferramentas utilizadas em uma abordagem como essa, facilitam muito a criação de integrações entre sistemas por nativamente controlarem os problemas citados anteriormente, além de contar com seus conectores e com uma programação visual de fluxos de integração.

A outra maneira de fazer a integração é a partir de linguagens de programação de uso geral, como Java e .NET. Essas linguagens dão uma maior agilidade ao fluxo de desenvolvimento, no entanto, fica a cargo do time de desenvolvimento assumir a responsabilidade de resolver os problemas difíceis da integração. É necessário fazer isso escrevendo nossa própria lógica de integração ou usando frameworks complexos como Spring. Essa abordagem é ágil, mas peca na simplicidade da sua construção.

Analisando as duas abordagens, percebe-se que é possível conseguir simplicidade de integração ou agilidade, mas não os dois. É nesse momento que identifica-se uma lacuna que precisa ser preenchida: uma abordagem que seja ágil e de simples construção ao mesmo tempo.

Outro aspecto importante a ser considerado é o fato de que linguagens, como Java por exemplo, foram criadas e pensadas antes dessa nova tendência de microservices e soluções nativas para plataformas em nuvem, como docker e kubernetes. Esse cenário gera uma constante adaptação da velha maneira de fazer as coisas para atender novos requisitos.

Por esses motivos, não há dúvidas de que uma nova linguagem de programação e plataforma precisava nascer e resolver essas questões desde a sua concepção: uma linguagem de programação especializada em integração. Uma plataforma que ofereça um ambiente seguro e concorrente para implementar tais aplicativos. Isso inclui transações distribuídas, sistemas de mensagens confiáveis, stream processing, workflows, e que também esteja preparada para plataformas de gerenciamento de containers.

Diante de todos esses argumentos foi lançada no início de 2017 uma linguagem de programação nova chamada Ballerina. Totalmente open source, compilável, fortemente tipada (ao contrário de linguagens baseadas em JavaScript, como Node.js) e com sintaxe via código ou gráfico (utilizando diagramas de sequência).

O Ballerina foi criado pensando em todas as tecnologias e padrões mais atuais. Focada em microservices e integração, o Ballerina é uma linguagem extremamente simples de aprender. Em apenas um dia é possível implementar uma "micro" integração. Basta seguir a documentação disponível. Há duas abordagens para aprendizado:

  • Uma é um guia para quem deseja focar em integração: "Ballerina By Guide" .
  • A outra é o método de ensinar a linguagem, sintaxe e outros mecanismos gradualmente: "Ballerina by Example".

Embora existam muitas similaridades de sintaxe e estrutura com outras linguagens como Java ou .NET, o foco do Ballerina é ser ágil para desenvolver microservices e integração. O controle de pacotes, e de dependências está embutido e é simples: basta importar os packages e a plataforma faz o trabalho. Além disso, a plataforma já vem com uma IDE, o que não lhe impede de continuar a utilizar outros editores, como VS Code e IntelliJ.

O Ballerina foi pensado, desenhado e desenvolvido para alcançar todas as tendências desse novo mundo. Além de estar inserido no mundo DevOps, a plataforma oferece o Testerina, um framework de testes, que permite aos desenvolvedores criar mocks de componentes e emular programas num ambiente de teste unitário; e o Ballerina Central, um repositório de conectores para integrar com diferentes sistemas e APIs já existentes na Cloud, como SalesForce, Jira, Twitter, Twilio entre outros. Há ainda a possibilidade de criar seus próprios conectores.

As principais preocupações que o desenvolvedor têm com linguagens de uso geral estão contempladas pelo Ballerina em uma solução integrada, pronta para rodar em produção. Apesar de ser uma linguagem recente, empresas ao redor do mundo já estão utilizando o Ballerina para suas integrações em ambiente produtivo.

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

Facilidade x Agilidade by Édion Torres

Interessante o artigo.
Uma stack que creio ter proporcionado facilidade e agilidade, tanto quanto possível, foi spring com o apache camel.

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

1 Dê sua opinião
BT