Close

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 mejoras. 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 publicaciones 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.

Los microservicios son un conjunto de unidades pequeñas que entregan e implementan aplicaciones grandes y complejas de forma continua.

Logotipo de Compass.

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.

Ilustración de microservicios

Hay tres tipos de microservicios:

  1. Los microservicios de dominio combinan libremente los servicios con las funciones relacionadas.
  2. Los microservicios de integración facilitan la interacción entre aplicaciones no relacionadas.
  3. 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.

En una arquitectura de microservicios, cada componente se puede desarrollar, implementar, operar, cambiar y volver a implementar sin afectar al funcionamiento de otros servicios o a la integridad de una aplicación.

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:

Ilustración de balanza

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.

Ilustración de metodología ágil

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.

Ilustración de caja de herramientas

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.

Ilustración de bloques apilados

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 supone dificultades.

Una de estas complejidades asociadas a 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.

Expansión descontrolada

Pasar de una arquitectura monolítica a los microservicios conlleva una mayor complejidad. Hay más servicios en más lugares y creados por varios equipos. Esto hace que sea difícil determinar cómo se relacionan los diferentes componentes entre sí, quién es el propietario de un componente en particular y cómo evitar causar un impacto negativo en los componentes dependientes. Si no se gestiona la expansión, se reduce la velocidad de desarrollo y el rendimiento operativo. A medida que un sistema crece, requiere un equipo de operaciones experimentado para gestionar las reimplementaciones constantes y los cambios frecuentes en la arquitectura.

Falta de claridad en cuanto a la propiedad

Con una arquitectura de microservicios, es más difícil saber quién es el propietario de cada componente. Un equipo de DevOps puede ejecutar una combinación de API, bibliotecas de componentes, herramientas de monitorización e imágenes de Docker para que los usuarios implementen una aplicación. Es importante tener clara cierta información sobre los componentes, como sus propietarios, recursos y relaciones cambiantes con otros componentes. Es necesario tener una comunicación y coordinación precisas entre numerosos equipos para que todos los involucrados puedan encontrar fácilmente los conocimientos necesarios para entender un producto.

Costes de infraestructura exponenciales

Cada nuevo microservicio que se añade a la implementación de producción viene con sus propios costes asociados al conjunto de pruebas, manuales de estrategias de implementación, infraestructura de alojamiento, herramientas de monitorización, etc.

Sobrecarga organizativa añadida

Se necesita un nivel adicional de comunicación y colaboración para coordinar las actualizaciones e interfaces entre los equipos de arquitectura de microservicios.

Depuración

Puede resultar difícil depurar una aplicación que contiene varios microservicios, cada uno con su propio conjunto de registros. Un solo proceso empresarial puede ejecutarse en varias máquinas en distintos momentos, lo que complica aún más la depuración.

Respuesta ante incidentes

Es importante contar con documentación de respuesta ante incidentes de microservicios que incluya información como quién usa el microservicio, dónde y cómo se implementó, y con quién contactar cuando surgen problemas.

¿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.

Ilustración de microservicios

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.

Gestiona tus microservicios con Compass

Si trabajas con una arquitectura de microservicios, Atlassian Compass se encarga de gestionar la complejidad de las arquitecturas distribuidas que se escalan. Es una plataforma de experiencia extensible para desarrolladores que reúne la información suelta sobre los procesos de ingeniería y la colaboración en el equipo en un lugar centralizado que permite hacer búsquedas. Además de ayudarte a controlar la expansión de tus microservicios con el Catálogo de componentes, Compass puede ayudarte a establecer prácticas recomendadas y evaluar el estado de tu software con cuadros de mandos, así como ofrecerte datos e información útil en toda tu cadena de herramientas de DevOps mediante extensiones creadas en la plataforma Atlassian Forge.

Ilustración de microservicios en Compass