Vamos a explorar cómo crear microservicios con1 Spring Boot y Kubernetes. Hablaremos de qué son los microservicios, sus beneficios y cómo funcionan. También veremos cómo hacer un microservicio con Spring Boot. Aprenderemos sobre las herramientas usadas, cómo poner los microservicios en Kubernetes y sobre DevOps y seguridad. El objetivo es que aprendas a hacer aplicaciones de microservicios que sean fáciles de usar y fuertes.
Principales Aspectos a Destacar
- Arquitectura de microservicios: Aplicaciones independientes y desplegables de manera autónoma2
- Uso de Spring Boot como framework de desarrollo para microservicios1
- Despliegue y orquestación de microservicios en entornos Kubernetes
- Implementación de prácticas DevOps para agilizar el ciclo de vida de los microservicios
- Garantía de seguridad mediante mecanismos de autenticación, autorización y comunicación cifrada
¿Qué es una Arquitectura de Microservicios?
Una arquitectura de microservicios divide las aplicaciones en servicios más pequeños, independientes y con una sola función. Estos servicios se conectan usando interfaces claras, como APIs.3
Definición de Microservicios
Los microservicios son fáciles de escalar y se recuperan bien después de fallos. Son flexibles con las tecnologías y permiten desarrollar y desplegar servicios de manera rápida y autónoma.3
Ventajas de los Microservicios
Usar microservicios facilita el desarrollo y permite reutilizar el código de forma más efectiva. Además, ayuda a encontrar y corregir errores sin dañar el sistema completo.3
Ventaja | Descripción |
---|---|
Rendimiento | La creación de microservicios mejora mucho el rendimiento de la empresa. Ayuda a trabajar de forma más ágil y por separado.3 |
Escalabilidad | Los microservicios permiten ampliar cada servicio por separado para cumplir con las necesidades de la aplicación.3 |
Agilidad | Con microservicios, es más fácil integrar y entregar ideas nuevas. Esto permite probar y corregir rápido si algo falla.3 |
Libertad Tecnológica | Al desarrollar microservicios, los equipos pueden elegir las mejores herramientas para cada tarea.3 |
Reutilización de Código | Partiendo el software en microservicios, se promueve el uso del código existente. Esto hace que desarrollar nuevas funciones sea más rápido.3 |
Resistencia a Fallos | Los microservicios hacen que una aplicación sea más resistente a errores. Ofrecen seguridad al trabajar de forma independiente uno del otro.3 |
Conceptos Básicos de Microservicios
Antes de empezar, debemos conocer términos importantes de microservicios.
Servidor de Configuración Central
Este componente centraliza y da configuración a los microservicios. Usa herramientas como Spring Cloud.2Un concepto esencial es el
Servicio de Registro y Descubrimiento
Un servidor central que registra y busca los microservicios. Emplea herramientas como Netflix Eureka.2Es vital entender el
Balanceo de Carga y Redireccionamiento Dinámico
Este patrón balancea el tráfico entre las copias de los microservicios. Usa Netflix Ribbon.2Finalmente, tenemos la
Tolerancia a Fallos (Circuit Breaker)
Ayuda a detener fallos entre los microservicios. Controla los errores usando Netflix Hystrix.
Construcción de Microservicios con Spring Boot y Kubernetes
Este artículo explora el uso de Spring Boot y Kubernetes. Los usamos para hacer y desplegar microservicios.1 Spring Boot hace fácil crear servicios independientes. Mientras tanto, Kubernetes gestiona su despliegue y mejora la disponibilidad.1
Los microservicios ayudan a escalar y a organizar mejor el trabajo. Esto hace que sean más fáciles de mantener y poner en producción.1 Cada servicio hace algo específico. Así, se pueden usar muchos lenguajes de programación.1
Microservicios agilizan el ciclo de vida del software. Permiten arreglar problemas sin tocar el sistema entero. También, pueden ser actualizados uno por uno.1
Unir microservicios con Docker y Openshift hace todo aún mejor. Facilita ajustar recursos sin parar el sistema.1 Usando Spring Boot y Java 11, desarrollar servicios REST es rápido.1
Usar @SpringBootApplication
le dice a Spring cómo empezar tu servicio. Además, creamos componentes necesarios para el servicio con @Configuration
.1
Con @RestController
y otras anotaciones, hacer APIs con Spring Boot es simple. Puedes definir qué hace tu API con anotaciones como @GetMapping
.1
Este tutorial cubre todo, desde crear servicios hasta desplegarlos en Google Cloud.2 También muestra cómo usar integración y entrega continua.2
Explora herramientas de Spring Cloud, Netflix Eureka, Netflix Ribbon, y Netflix Hystrix.2
Conoce Netflix Zuul y cómo se usa Spring Security. Estas herramientas funcionan bien en diferentes sistemas.2
El código y las imágenes de los servicios están en GitHub y DockerHub.2 Para desarrollo, usamos Docker, Maven, y Jenkins.2
Usamos jUnit, Gatling, y otros para probar. Monitoreamos con Elasticsearch, Logstash, y Kibana.2
Para código y dependencias, jHipster, Maven, y Npm son clave. Se usan PostgreSQL y MongoDB para las bases de datos.2 Y Portainer ayuda a manejar los contenedores.2
Creando tu Primer Microservicio con Spring Boot
Vamos a comenzar con nuestro primer microservicio usando Spring Boot.4 Dockerization hace fácil mover y desplegar servicios en distintos lugares.4 Docker reduce la complejidad de despliegue y facilita correr servicios en máquinas con Docker.
Configuración de Spring Boot
Empezaremos con la configuración básica en un proyecto de Spring Boot. Se utilizan anotaciones como @SpringBootApplication, @RestController y @Autowired.4 Los desarrolladores usan comandos Maven, como `mvn clean install`, para actualizar el JAR antes de crear una imagen Docker.
Creación del Modelo de Datos
Vamos a definir el modelo de datos de nuestro microservicio. Hablaremos de los starters que trae Spring Boot para ayudar en esto.
Publicación de la API REST
4 Para crear imágenes de contenedores, usamos comandos de Docker, como `docker build -t springairline .`.4 Luego, para acceder a los servicios, se usan comandos como `docker run -p 8080:8085 springairline` para iniciar y exponer los puertos necesarios.
Vamos a hacer una API REST. Usaremos Swagger para documentar y explorar la API REST.
Tecnologías y Herramientas Utilizadas
Vamos a crear microservicios con Spring Boot y Kubernetes en un entorno de Red Hat Enterprise Linux. Usaremos varias herramientas como Docker y Maven.2 También veremos herramientas para desarrollo continuo, pruebas, y monitoreo.
Entorno de Desarrollo
El desarrollo se hará en Red Hat Enterprise Linux. Esto nos da un sistema estable compatible con otras plataformas.2 Así, podemos trabajar sin problemas en Windows, macOS o Linux.
Herramientas de Integración Continua
Para desarrollar y probar, usaremos integración continua con Jenkins.2 Jenkins automotizará la construcción y pruebas de los servicios. Mejora la calidad y su disponibilidad.
Herramientas de Pruebas y Calidad
Usaremos jUnit, Gatling, Jacoco y SonarQube para las pruebas y calidad.2 Estas herramientas aseguran que nuestros microservicios sean robustos y confiables.
Herramientas de Monitoreo
Para monitorear, usaremos Elasticsearch, Logstash y Kibana.2 Estas herramientas juntas permiten ver y resolver problemas de rendimiento fácilmente.
Despliegue de Microservicios en Kubernetes
Después de crear nuestros servicios con Spring Boot, los vamos a desplegar en Kubernetes.5 Desde 2015, Kubernetes es el líder indiscutible en el despliegue de contenedores.5
Creación de Contenedores Docker
Empezaremos por crear contenedores Docker para nuestros servicios.1 Estos nos permiten cambiar el tamaño del software en ejecución sin pausas.1
Orquestación con Kubernetes
Usaremos Kubernetes para organizar la puesta en marcha, ampliación y disponibilidad de nuestros servicios en un entorno real.5 Hoy en día, hay plataformas manejadas de Kubernetes por Google, Amazon y Microsoft.5
Escalabilidad y Alta Disponibilidad
En este proceso, aprenderemos a administrar Kubernetes, a escalar los servicios cuando sea necesario, y a garantizar que el sistema sea robusto ante fallos.5 Aunque otras opciones como Openshift, Docker Swarm y Mesos nacieron en 2015 y 2016, Kubernetes se ha impuesto como el mejor.5
Prácticas DevOps para Microservicios
Vamos a usar DevOps para automatizar el proceso de desarrollo de microservicios. Usaremos integración continua con Jenkins y otras herramientas. También, desplegaremos los microservicios en Kubernetes de manera automática.2
Integración Continua
Crearemos una integración continua para unir los cambios en el código seguido.2 Con Jenkins, GitHub, BlueOcean, y más, vamos a construir, probar y lanzar los microservicios automáticamente.2
Entrega Continua
Usaremos entrega continua para poner en línea rápidamente las mejoras de los microservicios.2 Así, los clientes podrán disfrutar de nuevas funciones sin paros en el servicio.
Monitoreo y Observabilidad
Instalaremos herramientas como Elasticsearch, Logstash y Kibana para ver cómo van los microservicios.2 Así podremos arreglar problemas rápido, manteniendo todo funcionando bien.
Seguridad en Microservicios
Crear microservicios con Spring Boot y Kubernetes enfoca mucho en la seguridad.2 Hablaremos de los retos de seguridad y cómo proteger nuestros microservicios.
Autenticación y Autorización
Vamos a usar técnicas de autenticación y autorización para controlar el ingreso a los microservicios. Spring Security nos ayudará.6 Así, solo los permitidos podrán usar nuestros microservicios.
Cifrado y Comunicación Segura
Para proteger la comunicación entre los microservicios, aplicaremos cifrado y HTTPS.6 Así, se mantendrá seguro lo que se comparte en nuestra arquitectura.
Estos pasos nos ayudarán a mantener seguros nuestros microservicios. Solo los que tienen autorización podrán acceder de forma segura.265
Casos de Uso y Ejemplos Prácticos
Vamos a ver cómo usar microservicios con Spring Boot y Kubernetes. Mostraremos ejemplos que te ayudarán a entender más.1
Primero, vamos a hacer un microservicio para una línea aérea. Usará Java 11 y se Dockerizará. Así, podremos usarlo en sistemas como Kubernetes.4
Luego, pondremos en marcha un sistema que da recomendaciones de productos. Usaremos PostgreSQL y MongoDB para manejar la información de los usuarios y los productos.7
Y finalmente, veremos cómo crear un sitio de venta en línea. Usará microservicios y se basará en herramientas como Jenkins y Elastic stack (ELK). Así, podremos hacer seguimiento y mejoras continuas.7
Enlaces de origen
- https://ifgeekthen.nttdata.com/es/introduccion-a-spring-boot-creacion-de-un-microservicio
- https://icpinfo.org/microservicios-spring-boot/
- https://aws.amazon.com/es/microservices/
- https://ifgeekthen.nttdata.com/es/introduccion-spring-boot-dockerizacion-y-publicacion-de-un-microservicio-parte-ii
- https://www.paradigmadigital.com/dev/microservicios-2-0-spring-cloud-netflix-vs-kubernetes-istio/
- https://medium.com/@jomoespe/seguridad-y-microservicios-java-93bbc966d966
- https://es.linkedin.com/pulse/arquitectura-de-microservicios-con-spring-y-netflix-oss-rene-martinez