Microservicios: qué son y qué ventajas tienen
Hasta aproximadamente 2013, las empresas solían crear software empresarial mediante la creación de aplicaciones como unidades individuales con bases de códigos grandes, una arquitectura monolítica. A medida que el software se hizo más complejo y la informática en la nube adquirió popularidad, este enfoque pasó a ser menos práctico.
La llegada de los productos de software como servicio (aplicaciones entregadas en la nube) permitió a las empresas utilizar proveedores, como Amazon Web Services, para crear nuevos servidores y añadir redundancia rápidamente. De esta forma, se garantizó que los servicios permanecieran en línea durante las actualizaciones. Asimismo, marcó el comienzo de una nueva era de velocidad y agilidad. Los usuarios empezaron a esperar actualizaciones y mejoras rápidas, lo que llevó a las empresas a cambiar sus procesos de desarrollo.
Las empresas empezaron a dividir las aplicaciones en servicios o microservicios más pequeños e independientes. Por ejemplo, en lugar de incluir una bandeja de entrada de mensajería como parte de una plataforma monolítica de comercio electrónico, podrían crear un microservicio independiente para esta función.
Paralelamente, los desarrolladores empezaron a trabajar en grupos más pequeños y especializados que modificaban y mejoraban los servicios individuales sin poner en riesgo toda la aplicación. Estos grupos también solían asumir la responsabilidad de las operaciones de su código, un modelo llamado DevOps. Para facilitar estos cambios, los gestores de proyectos empezaron a desarrollar nuevas metodologías, como la metodología ágil, que divide los proyectos en versiones más pequeñas y frecuentes.
Sigue leyendo para obtener más información sobre la anatomía de las aplicaciones basadas en microservicios. Descubre también cómo Compass de Atlassian reduce la complejidad y, al mismo tiempo, permite a los desarrolladores aprovechar las ventajas de este modelo arquitectónico.
Prueba Compass gratis
Mejora tu experiencia de desarrollador, cataloga todos los servicios y mejora el estado del software.
¿Qué son los microservicios?
Un microservicio es una función responsable de una única lógica (excepto los microservicios de dominio, que explicaremos más adelante). Varios microservicios se combinan para crear aplicaciones distribuidas, como Jira Software.
Hay tres tipos de microservicios:
- Los microservicios de dominio combinan libremente los servicios con las funciones relacionadas.
- Los microservicios de integración facilitan la interacción entre aplicaciones no relacionadas.
- Los microservicios de unidad de trabajo gestionan funciones singulares.
Los microservicios interactúan entre sí mediante interfaces de programación de aplicaciones (API). Los desarrolladores que trabajan en servicios individuales pueden aprender el funcionamiento interno de los demás microservicios, lo que supone otra ventaja con respecto a la arquitectura monolítica.
La arquitectura basada en microservicios ofrece muchas ventajas, pero también añade complejidad. Por eso, Atlassian desarrolló Compass, para ayudar a las empresas a simplificar a medida que escalan. Esta plataforma de experiencia extensible para desarrolladores reúne toda la información sobre los procesos de ingeniería y la colaboración en el equipo en un lugar centralizado que permite hacer búsquedas.
Principios clave de los microservicios
La arquitectura basada en microservicios presenta varias características distintivas. Los desarrolladores pueden desarrollar e implementar sus servicios de forma independiente utilizando los lenguajes y las tecnologías que se adapten a sus componentes.
La comunicación entre los microservicios se basa en la API, lo que permite acceder a los datos de varias fuentes sin modificarlos. Los servicios individuales pueden ampliarse en función de la demanda, lo que ahorra costes y garantiza la disponibilidad.
Estos atributos hacen que las aplicaciones distribuidas basadas en microservicios sean flexibles y fáciles de mantener.
Ventajas de los microservicios
Los microservicios ofrecen muchas ventajas. Simplifican el desarrollo y la gestión de proyectos. A veces, pueden eliminar la necesidad de equipos de operaciones separados, ya que los desarrolladores pueden gestionar las operaciones de los microservicios que crean.
Además, ofrecen otras ventajas, como las siguientes:
Resiliencia y aislamiento de fallos
Un error afecta a toda la aplicación en arquitecturas monolíticas. Pero los microservicios son independientes. Un error no afectará a las demás partes de la aplicación.
Agilidad
Dividir las aplicaciones en partes más pequeñas acelera el desarrollo. Permite a los equipos crear, probar e implementar el software con mayor rapidez.
Diversidad tecnológica
Los microservicios permiten a los desarrolladores elegir las herramientas y tecnologías adecuadas para el trabajo, lo que aumenta la eficiencia y la productividad.
Mantenimiento mejorado
La posibilidad de probar componentes individuales facilita la búsqueda y corrección de errores sin tener que desconectar toda la aplicación.
Desafíos de los microservicios
La arquitectura basada en microservicios tiene muchas ventajas, pero también presenta desafíos.
Uno de los desafíos de los microservicios es que los servicios independientes generan sus registros. Esto es una desventaja en comparación con los registros centralizados de los monolitos, que proporcionan una única fuente de información para los desarrolladores y los equipos de operaciones. La supervisión y la gestión de la infraestructura también son más complicadas, ya que existen muchas piezas móviles. Las pruebas y la depuración suponen un desafío porque, a diferencia de los monolitos, no existe un entorno de desarrollo integrado (IDE).
Compass de Atlassian puede ayudar a superar todos estos desafíos: facilita la colaboración y permite a las empresas gestionar las complejidades de las arquitecturas distribuidas a medida que crecen. Lo hace reuniendo la información suelta en una ubicación central en la que se pueden realizar búsquedas.
¿Para qué se utiliza la arquitectura de microservicios?
Los grandes sitios web de consumo suelen utilizar cientos o miles de microservicios. Los microservicios son especialmente útiles en los siguientes casos prácticos y sectores:
- Los sitios de comercio electrónico, como eBay, utilizan microservicios independientes para los carritos de compra, las aplicaciones móviles y la mensajería.
- Las instituciones financieras como Bank of America utilizan microservicios para comunicarse con servicios externos. También los utilizan para gestionar funciones como las autorizaciones de los usuarios y la visualización de las transacciones.
Las plataformas de redes sociales como Instagram y Facebook utilizan microservicios para mostrar los feeds de noticias, los mensajes, las notificaciones y las redes de amigos de los usuarios.
Prácticas recomendadas para gestionar microservicios
A lo largo de los años, los desarrolladores han creado docenas de prácticas recomendadas esenciales para el desarrollo de microservicios. Estos son solo algunos ejemplos:
- El principio de responsabilidad única (SRP) especifica que cada módulo o microservicio debe tener una sola función. La integración continua (CI) del SRP es una metodología de control del código fuente que automatiza los controles de calidad del código antes de fusionarlos en un proyecto, lo que permite acelerar al eliminar la necesidad de un proceso de control de calidad independiente. Estas mejores prácticas de DevOps ayudan a acelerar. La CI precede a la entrega continua (CD), que ejecuta herramientas de creación automatizadas para mantener el software listo para su implementación.
- Las puertas de enlace de API simplifican la comunicación entre los microservicios, gestionan la autenticación y la autorización y aumentan la seguridad.
- La comunicación asíncrona entre microservicios preserva la autonomía y reduce las dependencias que podrían ralentizar el funcionamiento de la aplicación.
-
El control de versiones de los microservicios es fundamental cuando los desarrolladores implementan cambios importantes, como eliminar una operación completa. Esta práctica facilita las transiciones y minimiza la probabilidad de que se interrumpa el servicio.
El Open DevOps de Atlassian, con tecnología de Jira Software, facilita a los equipos la integración automática de Atlassian y las herramientas de sus partners, lo que les permite centrarse en crear y operar el software.
Gestiona mejor tu arquitectura de microservicios con Compass
Compass de Atlassian es una plataforma de experiencia para desarrolladores que reúne la arquitectura de software distribuida y la colaboración de los equipos en un solo lugar. Además, proporciona una visión general práctica de todos los componentes y servicios en los que trabaja un equipo. También incluye un catálogo de componentes de software para ayudar a los desarrolladores a encontrar fácilmente lo que buscan.
Compass permite gestionar fácilmente los componentes, el seguimiento de la propiedad y la supervisión de las relaciones. Además, lleva un registro de los cambios en tiempo real.
Integrar Compass en tu entorno de desarrollo es muy fácil gracias a su interfaz de usuario personalizable y a su compatibilidad con herramientas internas y de terceros. Aprende a gestionar tu arquitectura de microservicios con Compass y descubre cómo reúne la información suelta en una ubicación central y unificada.
Microservicios: preguntas frecuentes
¿Qué herramientas utilizan habitualmente las personas en los microservicios?
Las empresas suelen utilizar herramientas de contenedorización, como Kubernetes y Docker. También utilizan con frecuencia puertas de enlace de API entre los microservicios y sus clientes. Estas pasarelas realizan funciones de tráfico de API, como la autenticación, el control de acceso y el equilibrio de cargas.
¿En qué se diferencian los microservicios de la arquitectura monolítica?
Los monolitos son grandes bases de códigos que funcionan como un solo sistema. Requieren tiempo de inactividad del sistema para las actualizaciones y la depuración. Las arquitecturas de microservicios son aplicaciones distribuidas con funciones más pequeñas e independientes. Los desarrolladores pueden actualizar, mejorar y depurar estos módulos sin tener que desconectar toda la aplicación, lo que simplifica el escalado y ayuda a acelerar el desarrollo.
¿Cómo afectan los microservicios a DevOps?
Quienes conocen DevOps saben que la integración continua y la entrega continua (la canalización de CI/CD de DevOps) son los pilares de las metodologías de DevOps. La naturaleza modular de los microservicios se adapta perfectamente a este enfoque. Los microservicios permiten a los desarrolladores crear, probar e implementar versiones pequeñas y frecuentes con rapidez.
Únete a la Comunidad de Atlassian para ver más artículos y debates sobre microservicios.