Spring boot microservicios

Nuevo enfoque de microservicios para crear aplicaciones.

La forma en que los desarrolladores de software nos planteamos la factorización de una aplicación en sus distintos componentes no es nueva en absoluto, desde las primeras aplicaciones que se crean para una empresa se aplican un sin fin de paradigmas que entre los más destacados están la programación orientada a objetos, imperativa, dinámica , por eventos, etc. En la actualidad, esta factorización suele adoptar la forma de clases e interfaces entre bibliotecas compartidas y niveles de tecnología. Normalmente, se emplea un enfoque multinivel con un almacén en el back-end, lógica de negocios en el nivel intermedio y una interfaz de usuario (IU) en el front-end. Pero ver más allá de esta forma de factorizar los sistemas existe un problema mas, la escalabilidad de los sistemas. Para eso estos paradigmas evolucionan o son sustituidos por otros que se adaptan a nuevos servidores y nuevas formas de almacenamiento como la nube.

Diseño monolítico en comparación con el de microservicios

Todas las aplicaciones evolucionan con el tiempo. Las aplicaciones que triunfan evolucionan por ser útiles a sus usuarios. Las que fracasan no evolucionan y terminan por entrar en desuso. Por tanto, la pregunta que debe hacerse es: ¿cuánto sabe acerca de los requisitos actuales y cuáles serán en el futuro? Por ejemplo, supongamos que está creando una aplicación de informes para un departamento. Está seguro de que la aplicación permanece dentro del ámbito de la compañía y que los informes son relevantes por un tiempo limitado. El enfoque elegido es diferente al adoptado para crear un servicio que entrega contenido de vídeo a decenas de millones de clientes.

En resumen, el enfoque de microservicios consiste en componer la aplicación de muchos servicios pequeños. Los servicios se ejecutan en contenedores implementados en un clúster de máquinas. Los equipos más pequeños desarrollan un servicio que se centra en un escenario y, de forma independiente, prueban, controlan versiones, implementan y escalan cada servicio para que toda la aplicación pueda evolucionar.

1.1 Diferencia entre la arquitectura de micro servicio y la arquitectura monolítica

¿Pero qué es un microservicio?

Existen varias definiciones de lo que puede ser pero todos llegan a un mismo punto  las aplicaciones de microservicios se componen de servicios pequeños centrados en el cliente, escalables y con control de versiones independiente que se comunican entre sí mediante protocolos estándar con interfaces bien definidas.

Al definir el microservicio  y su protocolo podrás realizarlo en cualquier lenguaje de programación para que sea útil a la aplicación.

¿Cómo se construye un micro servicio en Spring Boot?

Estructuración del código.

Ateniéndonos a la estructura hay tres formas de organizar el código de los microservicios:

  1. Proyectos separados.
  2. Un solo proyecto multimódulo.
  3. Un solo proyecto sin módulos.

La elección de uno u otro depende del grado de acoplamiento de los microservicios. Por norma general:

  1. Si los microservicios no son dependientes entre ellos se debe de optar por crear proyectos separados, ya que de esta forma se consigue una mayor flexibilidad y pueden diferir en cuanto a configuración sin que afecten a otros microservicios.
  2. Si por el contrario, son servicios con dependencias a nivel de lógica de aplicación, es recomendable agruparlos en un proyecto multimódulo, de esta forma nos permite de un vistazo identificar si la modificación de un microservicio puede afectar al resto de los microservicios de los que depende.
  3. Por último, Spring boot permite tener varios servicios dentro del mismo proyecto, pudiendo iniciarlos por separado; este caso es adecuado cuando los microservicios tienen dependencia a nivel de lógica de aplicación y también a nivel técnico, ya que van a compartir las mismas librerías y probablemente la misma base de datos.

Configuración

Para la implementación de los microservicios, utilizaremos Spring Boot y Spring Cloud. El siguiente ejemplo estará compuesto de tres proyectos cada uno es un servicio. Empezamos con la configuración, utilizaremos Eureka (registration-service), como servidor de registro y ver los microservicios. Eureka está incorporado dentro de Spring Cloud.
Primero nos tenemos que descargar de la pagina https://spring.io/tools la herramienta de Spring Tool Suite este IDE esta nos ayudará a trabajar.

1.2 descarga del STS Para correr y programar.

Segundo paso ingresaremos a la pagina de https://start.spring.io/ de ahi configuraremos el proyecto para que nos descargue una demo de nuestro servicio como se muestra en la siguiente figura. 3.2 no olvidar agregar las dependencias. Al generar un proyecto nos descarga un archivo zip con lo básico para levantar el eureka,


1.3 Descarga de Demo inicializador de Eureka

Después de descargar la suite hay que descargar de la página de spring un demo que no servirá como guía de hecho por cada servicio se puede hacer la descarga del demo por si cambia el enfoque de tu servicio para el eureka hay que agregar las dependencia de eureka server, se realiza la descarga y se agrega

Despues de descargar el archivo hay que descomprimir y abrirlo en el IDE que tenemos instalado hay que cambiar unas lineas dentro del código para decirle que es para registro de los microservicios y quedar como se muestra a continuación.

Ejecutamos el maven para que nos traiga los datos para la instalación de las dependencias de las librerías que se utilizaran. Por defecto Eureka se ejecuta en el puerto 8761, pero aquí usaremos el puerto 1111. Y tendremos una pántalla como la siguiente.

1.4 Servidor Inicializador de Eureka

Cada micro servicio se ejecuta independientemente pero se van registrando en el server como instancias de eureka. Y podrán ser visualizadas en el servidor.

Ten en cuenta que en este ejemplo, tengo un microservicio de gestión de cuentas simple que utiliza Spring Data para implementar un JPA Account-Repository y un Spring REST para proporcionar una interfaz RESTful a la información de la cuenta. En la mayoría de los aspectos, esta es una aplicación directa de Spring Boot.

1.5 Despliegue del servicio ACCOUNTS_SERVICE 

Establece el nombre de la aplicación como accounts-service. Este servicio se registra con este nombre y también se puede acceder con este nombre; consulte a continuación.
Especifica un puerto personalizado para escuchar (2222). Todos mis procesos usan Tomcat, no todos pueden escuchar en el puerto 8080.

Bibliografia.

https://cloud.spring.io/spring-cloud-aws/spring-cloud-aws.html

https://dzone.com/articles/scalable-cloud-computing-with-microservices

https://spring.io/

Tags

Tomas del Angel Mujica
Tomas del Angel Mujica

Deja un comentario


*