Los microservicios deben ser escalables y centrarse en una única responsabilidad. Cada unidad modular autónoma se encarga de una función específica dentro de un sistema mayor. Una aplicación grande se construye a partir de componentes modulares o servicios como contenedores o computación sin servidor.
Piense en un microservicio como una empresa compuesta por diferentes departamentos, presupuestos y requisitos. Cada año, estos requisitos cambian en función de las necesidades de la empresa. Su aplicación tampoco se enfrentará al mismo nivel de demanda a lo largo del tiempo. Puede haber algunos aspectos que requieran más demanda y otros a los que tendrá que prestar más atención. También será necesario que se produzcan diferentes niveles de escalado dentro de tu aplicación. Los microservicios te permiten escalar y crecer en diferentes áreas sin afectar a otras. Y escalan de forma independiente.
Todos recordamos el principio de responsabilidad única de la programación. Los microservicios no son diferentes. Deben hacer una cosa y hacerla bien. También obtienes el beneficio inherente de una mejor resiliencia y tolerancia a fallos. La arquitectura de microservicios pretende evitar fallos en todo el sistema haciendo oscilar los fallos a servicios individuales. Si hay un fallo concreto, sabemos dónde está y podemos solucionarlo sin que afecte a nada más.
También hay un aspecto de descubrimiento. Al utilizar una solución de red de servicios como Consul de HashiCorp, sabrá cuándo aparecen nuevos servicios en línea y dispondrá de un sistema centralizado que se convierte en un directorio de servicios que define qué hacen esos servicios y cómo comunicarse con ellos.
Por qué debería considerar los microservicios
- Tiempo de comercialización más rápido: Los microservicios permiten el desarrollo y despliegue en paralelo de componentes individuales, lo que acelera el proceso general de desarrollo y reduce el tiempo necesario para ofrecer nuevas funciones.
- Escalabilidad mejorada: Los microservicios se pueden escalar de forma independiente, lo que permite a las empresas asignar recursos de manera más eficiente y manejar cargas de trabajo variables o patrones de tráfico con mayor eficacia.
- Mayor resistencia: La naturaleza descentralizada de los microservicios reduce el riesgo de fallos en todo el sistema, lo que garantiza la disponibilidad continua del servicio y una mayor fiabilidad general del sistema.
- Flexibilidad y adaptabilidad: Los microservicios permiten a las empresas aprovechar diversas tecnologías y marcos de trabajo para diferentes componentes, lo que facilita la adaptación a los cambios de requisitos o la incorporación de nuevas tecnologías.
- Mantenimiento y actualizaciones más sencillos: El diseño modular de los microservicios simplifica el mantenimiento y las actualizaciones del sistema, ya que los componentes individuales pueden actualizarse o sustituirse sin afectar a todo el sistema.
Mejores prácticas de microservicios
Es esencial que los microservicios sean pequeños, centrados y responsables de una única capacidad empresarial. Este enfoque permite añadir funcionalidades adicionales y evitar la expansión. Sin embargo, no existe una regla fija sobre el tamaño ideal, ya que variará en función de la aplicación específica y sus requisitos.
También debes asegurarte de que diseñas para los fallos. Aunque la tolerancia a fallos está integrada de forma inherente en la ejecución de múltiples servicios y microservicios por diseño, añade resiliencia adicional, como mecanismos de reintento, disyuntores y mamparos. Piensa por qué los barcos tienen mamparos. Los tienen para la integridad estructural, pero también los tienen si hay un problema, el mamparo se cierra y el barco no se hunde. Muchas arquitecturas basadas en eventos utilizan lo que se conoce como colas de letra muerta. Si un mensaje no puede ser entregado, va a una cola particular donde puede ser inspeccionado para determinar la razón del fallo.
Los microservicios deben diseñarse sobre la base de los principios del diseño orientado al dominio, lo que significa modelar los servicios en función de las capacidades empresariales y utilizar un lenguaje común para garantizar que los servicios se ajustan a las necesidades de la empresa. El diseño orientado al dominio se centra en la creación de sistemas de software basados en un profundo conocimiento del dominio empresarial. Sus principios ayudan a guiar el proceso de diseño y garantizan que el software se ajuste al dominio y aporte valor a la empresa. Estos principios promueven colectivamente un profundo conocimiento del dominio empresarial y ayudan a garantizar que el desarrollo se mantiene estrechamente alineado con las necesidades empresariales y los requisitos cambiantes.
Diseñar con un API-primero e implementar API pasarelas, que proporcionan puntos de conexión centrales para facilitar la comunicación entre microservicios y subsistemas de terceros. API Las pasarelas se encargan de gran parte del enrutamiento, ocupándose de la autorización, la autenticación y la limitación de velocidad. Un patrón de diseño de API es esencial para la modularidad y la reutilización de los microservicios.
He aquí algunas buenas prácticas adicionales en materia de microservicios:
- Automatice las pruebas y la implantación: Pruebe y despliegue microservicios mediante herramientas de automatización como las canalizaciones de integración continua y despliegue continuo(CI/CD), que reducen el riesgo de errores y garantizan que los servicios se desplieguen de forma rápida y coherente.
- Utilice la contenedorización: La contenerización proporciona una forma ligera y portátil de empaquetar y desplegar microservicios. El uso de contenedores puede ayudar a simplificar el proceso de despliegue y mejorar la escalabilidad y portabilidad de la aplicación.
- Supervisar y observar: Los microservicios deben supervisarse y registrarse para garantizar que funcionan como se espera e identificar cualquier problema o error. Los agregadores de registros y las herramientas de supervisión del rendimiento de las aplicaciones (APM) pueden hacerlo. El seguimiento proporciona información sobre el flujo de datos a través de un sistema distribuido. Estos tres pilares ayudan a proporcionar visibilidad de extremo a extremo sobre el rendimiento.
- Servicios seguros: Los microservicios deben protegerse utilizando las mejores prácticas, como la autenticación, la autorización y el cifrado, sin olvidar la seguridad de los contenedores. Las políticas deben imponer qué microservicios pueden hablar con otros para reducir la superficie de ataque global. La seguridad debe formar parte de cualquier diseño y comprobarse a lo largo de todas las fases de desarrollo, lo que da como resultado una aplicación mucho más segura y protege los datos confidenciales.
Comentarios