OpenWebinars

Frameworks

Micronaut ,un framework Full-Stack

Conoce todo de este importante framework de código abierto para JVM con soporte además para Groovy y Kotlin y diseñado para construir microservicios cloud native.

Angel Robledano

Angel Robledano

Product Manager

Lectura 4 minutos

Publicado el 14 de mayo de 2019

Compartir

En el mundo del desarrollo nos encontramos frente a constantes innovaciones que representan un cambio prácticamente en todos los aspectos, uno de estos es la distribución de aplicaciones, ya que hemos pasado desde las aplicaciones que se ejecutaban en ordenadores locales a aplicaciones distribuidas en servidores Web (ejecutadas en PCs conectados a Internet). Luego surgieron los servicios de hosting que han evolucionado a la nube, ofreciéndonos diferentes modelos muy alejados del método clásico, en el cual debíamos montar todo, desde el sistema operativo, los drivers, el servidor de aplicaciones, las conexiones a Internet, los firewalls, etc.

La llegada del cloud computing (la llamada nube) y el nacimiento de los nuevos modelos de servicios, ha ocasionado una revolución tanto en la forma de desarrollar, como en la de mantener las aplicaciones. Es en este punto clave donde un equipo con sólidos conocimientos, luego de aprender una cantidad considerable de lecciones e implementar buenas prácticas en el desarrollo de aplicaciones y microservicios utilizando Grails, Spring y Spring Boot, desarrollan Micronaut un potente framework el cual si aún no has trabajado con él es posible que hayas oído hablar de este y si no a continuación te invitamos a seguir leyendo para que aprendas un poco sobre qué es Micronaut, ¿puedo construir microservicios cloud native con él?, cuáles son sus objetivos y características, entre otros puntos de interés.

¿Qué es Micronaut?

Micronaut es un proyecto de código abierto con licencia de Apache (v2), el cual ha sido desarrollado por los creadores del framework Grails, quienes, como se comentó en el inicio de este post, se inspiraron en las lecciones aprendidas después de crear una cantidad considerable de aplicaciones y microservicios utilizando frameworks como Grails y Spring, estos dos últimos no fueron diseñados para desarrollar microservicios o aplicaciones Android cuyos servidores cuenten con poca memoria, entre otros escenarios, Micronaut nace para ser adecuado a todas estas necesidades.

En vista de lo anterior y que se encuentra basado en todas las buenas prácticas adquiridas, Micronaut se considera un potente framework para JVM (Java Virtual Machine), este soporta tanto Java, como Groovy y Kotlin y está perfectamente diseñado para construir microservicios cloud native.

Es muy liviano, actualmente con la versión de Micronaut es posible construir el famoso “Hello Word” en un .JAR que ocupa tan sólo 10MB y puede ser ejecutado con un heap de 8MB. Como resultado, el tiempo de arranque es menor a un (1) segundo cuando lo programamos con Java. El consumo de memoria y el tiempo de arranque de Micronaut no incrementa de forma lineal con el número de líneas de código ya que toda la inyección de dependencias, AOP (Aspect Oriented Programming – Programación Orientada a Aspectos) y generación de proxys sucede en el tiempo de compilación utilizando la transformación Groovy AST o los procesadores AST para Java y Kotlin.

El manejo de toda la información en el tiempo de compilación es un soporte fundamental tanto para Groovy, como para Kotlin y Java, ya que le permite a los desarrolladores tener mayores opciones a la hora de construir aplicaciones de microservicios perfectas, puesto que los metadatos de anotación se crean en este tiempo (de compilación) y no antes, resultando en ser uno de los frameworks más rápidos.

Por otra parte, en cuanto al código, este es bastante similar al código de Spring Boot con Spring Cloud habilitado. También utiliza una inyección de dependencias interna inspirada en Spring, así mismo las API de Micronaut se encuentran basadas en Spring y en Grails para ayudar a los desarrolladores a optimizar y avanzar de forma óptima en sus requerimientos.

Objetivos de Micronaut

Entre los objetivos con los cuales ha sido diseñado Micronaut podemos destacar los siguientes:

  • Bajo consumo de memoria.
  • Fácil testeo.
  • Inyección de dependencias y AOP (Aspect Oriented Programming).
  • Arranque prácticamente instantáneo.
  • Archivos .JAR generados de poco tamaño (livianos).
  • Inversión de Control (IoC).
  • Uso mínimo de proxys.
  • Prácticamente sin dependencias externas.
  • Pruebas unitarias sencillas.
  • Cumple con el manifiesto Twelve-Factor (12factor), el cual básicamente indica los puntos fundamentales que debe cumplir el desarrollo de una aplicación para ser distribuida como un servicio. Para conocer el manifiesto puedes ingresar a través del siguiente link al sitio oficial de este: https://12factor.net

Características de Micronaut

Micronaut brinda una gran cantidad de opciones y características pensadas en microservicios destacando las siguientes:

  • Configuración compartida.
  • Seguridad.
  • Micrometer.
  • Soporte de funciones en AWS Lambda (servicio de cómputo que permite ejecutar código sin aprovisionar o administrar servidores. AWS Lambda ejecuta el código solo cuando es necesario y escala automáticamente, desde unas pocas solicitudes por día hasta miles por segundo.
  • Servicio de discovery: con soporte de Consul (herramienta para descubrimiento y configuración de servicios) y Eureka (servicio REST (Transferencia de estado representacional) que se utiliza principalmente en la nube de AWS para ubicar servicios con el objetivo de equilibrar la carga y conmutar por error los servidores de nivel medio), las variables de entorno o DNS (Domain Name System / Sistema de Nombres de Dominio) también pueden configurarse de forma manual.
  • Tracing con soporte para Jaeger y Zipkin (a través de la API Open Tracing).
  • Circuit Breaker con soporte de Retry.
  • Cliente HTTP con Load-Balancing (equilibrio de carga del lado del cliente).
  • Soporta SpringData, facilitando el uso de tecnologías de acceso a datos, bases de datos relacionales y no relacionales y servicios de datos basados en la nube.
  • Las integraciones están construidas sin añadir dependencias adicionales evitando que los JARs finales tengan un tamaño excesivo.

Imagen 1 en MICRONAUT UN FRAMEWORK FULL-STACK

Es de gran importancia mencionar que Micronaut proporciona un servidor y un cliente HTTP, y a su vez es capaz de soportar microservicios reactive y non-blocking ya que se encuentra basado en Netty. Como servidor HTTP, ofrece soporte de fábrica para Hystrix, seguimiento de registros y almacenamiento en caché, entre otras ventajas.

Adicionalmente, Micronaut también soporta GORM el ORM (Object Relational Mapping) de Grails, este proporciona un conjunto de APIs para acceder de una manera sencilla y potente a todo tipo de bases de datos SQL, entre las que destacan:

  • Neo4J.
  • Redis.
  • MongoDB.
  • GraphQL.
  • Cassandra.

Imagen 2 en MICRONAUT UN FRAMEWORK FULL-STACK

En el sitio oficial de Micronaut (https://micronaut.io/) podemos encontrar diferentes guías de ayuda, su API, entre otros, que nos seran de gran ayuda para trabajar con este. Como desarrolladores no solo debemos prestar atención a los requisitos a nivel funcional, sino también al entorno en el cual se va a llevar a cabo la ejecución, esto con la finalidad de que el producto final sea de alta calidad y rendimiento óptimo.

Como hemos aprendido en este artículo, Micronaut ofrece patrones de confiabilidad amigables con la nube, que incluyen desde el equilibrio de carga, hasta la configuración de recursos compartidos y el desarrollo de servicios. Desde su inicio las aplicaciones de Micronaut son “nativas” nativas de la nube. ¿Y tú ya te iniciaste en el mundo de Micronaut? Si no lo has hecho te invitamos a que lo explores y conozcas su potencial, si por el contrario ya te encuentras trabajando con él déjanos un comentario para conocer tu experiencia.

Compartir este post

También te puede interesar

Icono de la tecnología
Curso

Introducción a Cloud Computing

Principiante
7 h. y 56 min.

Descubre las tecnologías relacionadas con el Cloud Computing y el cambio de paradigma que se está produciendo

Alberto Molina
4.3