¿Qué es Ballerina?
Ballerina es un lenguaje de programación que pretende solucionar el gap que existe actualmente entre los productos de integración y los lenguajes de programación tradicionales.
Ballerina está diseñada para hacer más sencillo las tareas de escribir programas para integrar y orquestar peticiones en un entorno de microservicios y endpoints distribuido.
Un lenguaje de programación completo
El lenguaje Ballerina tiene varias características desde su concepción que lo hacen muy competitivo, entre ellas destacan:
- Compilado
- Tipado
- Turing completo
- Concurrente
- Implementa políticas de seguridad por diseño
Todo ello son requisitos indispensables para que pueda ofrecer las características que se necesitan en los productos de integración:
- Transacciones distribuidas
- Mensajería fiable
- Procesado de streams
- Workflows
-Sigue leyendo:Cómo implementar Ballerina, el lenguaje de programación WSO2-
Integración mediante código + Integración mediante herramientas gráficas
Ballerina ofrece ambas visiones, inspiradas en cómo los elementos independientes se comunican mediante interacciones en un diagrama de secuencia.
Poniendo un ejemplo más sencillo, supongamos que deseamos habilitar una API que conecte con un microservicio en nuestro sistema:
Aunque es un ejemplo sencillo, se puede apreciarla potencia del lenguaje, conectando y dando forma a los distintos servicios preexistentes en nuestra arquitectura.
-No te pierdas: Lenguajes de programación que debes aprender en 2019-
Características de Ballerina
Diseñado para operar en red
Ballerina provee de forma nativa constructores que operan con los distintos protocolos de comunicación. Por ejemplo HTTP, WebSockets, Swagger, MySQL, gRPC, JMS, Kafka, Gmail, Salesforce, (¡hasta Twitter!) son conectores que se pueden integrar fácilmente ofreciendo una versatilidad enorme en nuestras integraciones.
Por supuesto, la lista va creciendo y se irán añadiendo nuevos protocolos y estándares tanto en el producto core como a través del marketplace ‘Ballerina Central’.
Resistente por diseño
La fiabilidad y el tipado seguro están integrados en el lenguaje de forma nativa. Cuando se invoca a un endpoint externo no podemos tener la seguridad de que esté operativo ni de que funcione correctamente.
Ballerina ofrece mecanismos de control para dominar estas situaciones, como el circuit-breaker. Con pocas líneas de código, se puede indicar que una llamada a un endpoint está sujeto a ciertas restricciones:
- Timeout
- Códigos de respuesta admitidos como válidos
- Umbral de peticiones fallidas durante un tiempo definido
Así como se controla la fiabilidad de los endpoints externos, también es posible protegerse ante ataques comunes como la inyección de código.
Para Ballerina, todas las respuestas que vienen de la red son potencialmente hostiles, con lo cual provee de mecanismos de prevención de forma sencilla.
Lenguaje tipado
Ballerina ofrece una estructura de tipado con tipos primitivos, registro, objetos, tuplas y uniones. Esta estructura provee de inteligencia para inferencia de tipos y comprobaciones en tiempo de compilación para asegurar la integridad en conectores, lógica e incluso para payloads que están ligados a la red.
Una de las dificultades clásicas de los sistemas de integración es lidiar con complejos escenarios de error en entornos distribuidos. Ballerina proporciona para eso los tipos unión. Dichos tipos capturan explícitamente la semántica de los errores sin necesidad que los desarrolladores creen los conocidos ‘wrapper’ que encapsulan las comprobaciones. En Ballerina todo eso se hace con un operador, el ‘check’, el cual hemos visto en un ejemplo anterior.
Por ejemplo, si tenemos un mensaje JSON que hemos recibido, es posible convertirlo en un tipo que nosotros hayamos definido como válido dentro de nuestra lógica. Si la conversión a dicho tipo no es posible, podemos acceder a los detalles del error y actuar en consecuencia con pocas líneas de código.
Observable
Monitorización, trazabilidad, logging, trazas distribuidas son capacidades comunes que todo sistema maduro debe tener.
Ballerina ofrece por defecto estas características mediante integraciones con productos y herramientas conocidos como Prometheus, Grafana, Jaeger, y Elastic, ¡todo ello con una mínima configuración!
-Descubre más: Tipos y características de lenguajes de programación-
Asíncrono y paralelo
Otra de las grandes ventajas que ofrece Ballerina es la posibilidad de ejecutar unidades de trabajo de forma independiente, o también conocido como workers.
Un worker representa una ejecución de una interacción concreta, a menudo incluye varios endpoints distintos.
Por ejemplo, es posible definir en código varios workers, cada uno interactuando con un servicio distinto, y a la vez interactuando unos con otros mediante mensajes entre workers. Todo esto se define de forma asíncrona, de modo que sólo en necesario definir el código que se ejecutará cuando se reciba un mensaje de otro worker.
Ballerina también ofrece otros modos avanzados de interacción (como el fork-join), lo cual permite definir flujos de comportamiento como por ejemplo establecer un punto donde todos los workers confluyen, antes de continuar ejecutando más acciones.
Por tanto, la invocación de un servicio externo puede hacerse de forma síncrona o asíncrona, siendo también posible esperar hasta que una invocación se resuelva (con start/await).
Ecosistema completo para el ciclo de vida de desarrollo y despliegue
Ballerina no es sólo un lenguaje de programación aislado, sino que además provee de un conjunto de herramientas para la mejora de la productividad de desarrollo:
- Soporte para IDE VS Code
- Soporte para IDE IntelliJ
- Ballerina Composer, herramienta web con editor gráfico y textual, permitiendo modelar las interacciones a alto nivel
- Código ejecutable balx y binarios balo
- CI/CD con Testerina
- Generación de artefactos para despliegue en Docker y Kubernetes
- Registro de imágenes BallerinaCentral
Construye en Open Source y compártelo con la comunidad
Como se mencionó anteriormente, Ballerina Central es un repositorio global donde es posible compartir conectores personalizados, anotaciones, incluso paquetes de código. Todo ello gestionado mediante control de versiones, lo cual hace que el uso de dichos recursos sea controlable y predecible en nuestro sistema.
Ahora que ya conoces mejor el lenguaje de programación Ballerina, y las grandes posibilidades que éste puede ofrecerte, mantente al tanto sobre cualquier novedad en su página oficial ¡y en nuestro blog!