LinuxParty
En primer lugar, ¿qué son los microservicios? Microservicios es un tipo de arquitectura que divide su aplicación en múltiples servicios que realiza una función detallada que forma parte de su aplicación en su conjunto. Cada uno de sus microservicios tendrá una función lógica diferente para su aplicación. Microservicios es un enfoque más moderno en la arquitectura de una aplicación en comparación con una arquitectura monolítica en la que todos los componentes y funciones de su aplicación están en una sola instancia. Puede referirse a una comparación de una arquitectura monolítica a microservicios en el diagrama a continuación.
Monolitos vs microservicios
¿Dónde ponemos nuestros microservicios? En contenedores. Los contenedores son paquetes de su software que incluyen todo lo que necesita para ejecutarse, como código, dependencias, bibliotecas, binarios y más. Docker es una de las opciones populares para construir y ejecutar contenedores, pero Kubernetes se está convirtiendo rápidamente en el estándar de facto que se utiliza para organizar múltiples contenedores en entornos empresariales. En comparación con las máquinas virtuales, los contenedores comparten el kernel del sistema operativo en lugar de tener una copia completa, como hacer varias máquinas virtuales en un solo host. Aunque es posible colocar sus microservicios en múltiples máquinas virtuales, en este caso los contenedores se usan comúnmente, ya que ocupa menos espacio y es más rápido para arrancar.
¿Por qué usar una arquitectura de microservicio?
La arquitectura de microservicios nació para abordar los problemas que las personas vieron en una aplicación monolítica. Los microservicios ya se utilizan ampliamente y algunos sitios web a gran escala ya han transformado su aplicación monolítica en microservicios. Algunos beneficios de usar una arquitectura de microservicios son:
- Los desarrolladores trabajarán en una base de código más pequeña en comparación con una más grande en una aplicación monolítica. Cuando los componentes de la aplicación están débilmente acoplados, los desarrolladores entenderán fácilmente el código fuente y no ralentizarán el desarrollo. Sin mencionar que su IDE será más rápido si está trabajando con un número menor de líneas de código. Los desarrolladores no necesitarán lidiar con las complejidades y dependencias de las funciones que se pueden encontrar en una aplicación monolítica.
- Las responsabilidades de los desarrolladores serán más definidas. Se puede asignar un equipo por componentes o microservicios de la aplicación. Las revisiones de código serán más rápidas. Hacer actualizaciones será más rápido y no sería necesario compilar e implementar todo en comparación con una aplicación monolítica.
- La pila de tecnología de la aplicación puede diferir a través de microservicios. La aplicación ya no tendrá que depender de un idioma o biblioteca. Los microservicios pueden aprovechar diferentes lenguajes de programación según lo consideren adecuados los desarrolladores. Es posible tener microservicios políglotas como en el diagrama a continuación. Microservicios poligloto
- La entrega continua será más fácil. En comparación con una aplicación monolítica, con microservicios, no necesitará implementar todo de nuevo para un simple cambio. Puede elegir reconstruir e implementar el único microservicio que necesita actualizarse. Las actualizaciones frecuentes serán más rápidas.
- La escalabilidad será independiente a cada microservicios. Puede elegir escalar cada componente de su aplicación en función del recurso que necesite. No necesitarías crear múltiples instancias de todo en comparación con una aplicación monolítica. La escala de los microservicios utilizará de manera eficiente los recursos disponibles en lugar de tener múltiples copias de toda la aplicación en una aplicación monolítica. Independientemente escalar unos de otros
- Los datos pueden ser descentralizados. Puede elegir utilizar diferentes bases de datos / almacenamiento para sus microservicios. Puede elegir una base de datos NoSQL si su microservicio se adapta mejor a una base de datos relacional. Un microservicio también puede necesitar solo una base de datos de almacenamiento de claves simple como Redis. Al igual que en el diagrama a continuación, puede elegir una combinación de Cloudant , MySQL y MongoDB. Puede aprovechar diferentes bases de datos para almacenar diferentes tipos de datos. Elegir entre una variedad de bases de datos
- Aislar las fallas. Un error o un error en un microservicio no interrumpe todo el sistema. Cuando tiene componentes ligeramente acoplados y un microservicio en su aplicación cuelga o arroja errores, hay menos posibilidades de que otros microservicios se vean afectados, ya que están en sus propios contenedores y no dependen por completo entre sí. Una aplicación monolítica puede detener todo el proceso de su aplicación si el error o error no se detecta correctamente.
¿Cuáles son algunos inconvenientes?
Mientras que el uso de microservicios resuelve algunos de los problemas de una arquitectura monolítica, usarlos tiene su propio conjunto de problemas. Si está tratando de dividir su aplicación monolítica en microservicios, el primer desafío es cómo dividirlos. Puede elegir dividirlos en funciones comerciales, como un microservicio para manejar los envíos y otro microservicio para manejar los servicios de pago. Al final, sus componentes solo deben tener un pequeño conjunto de funciones o responsabilidades.
Algunos problemas en una arquitectura de microservicio que puedo ver son: Una vez que su número de microservicios crezca, puede ser difícil hacer un seguimiento de ellos . Inicialmente, configurar la Integración Continua y la Entrega Continua puede ser difícil, ya que tendrá que lidiar con la complejidad adicional de tener estos múltiples microservicios.
Complejidad . Los microservicios necesitarían una mayor coordinación, especialmente cuando hay varios equipos involucrados. Los microservicios también introducirían más llamadas de red en los casos en que necesite interactuar con otros microservicios, que no estarían presentes en una aplicación monolítica. No sería tan simple como implementar una instancia de una aplicación.
Más cosas que también deberá considerar son: cómo manejar la comunicación entre microservicios, manejar errores para evitar interrumpir otros microservicios y agregar más casos de prueba en cada componente. Encontrar y rastrear los errores / errores en su aplicación. Sería más fácil encontrar si su microservicio solo tiene una ruta, pero si un microservicio se comunica con muchos otros microservicios, puede consumir una gran cantidad de su tiempo simplemente buscando ese error.
Solicitudes de rastreo Enrutar sus microservicios necesitará más trabajo. Necesitará dedicar tiempo a configurar y controlar el flujo de sus microservicios. También deberá realizar un seguimiento de las versiones de sus microservicios y lidiar con su enrutamiento. Microservicios de enrutamiento Los microservicios podrían consumir más recursos en comparación con una aplicación monolítica. Aunque una de las ventajas que mencioné es que la escalabilidad y los recursos se pueden utilizar mejor y de manera más eficiente, todos los componentes necesitarían su propia instancia y contenedores, lo que potencialmente podría llevar a un mayor uso en la memoria y la CPU.
Herramientas que pueden ayudarte con microservicios.
Kubernetes
Kubernetes es una plataforma de orquestación de contenedores que le permite implementar, escalar y administrar todos sus contenedores. Le permite automatizar la implementación de sus microservicios en contenedores. Esto facilita la administración de todos los componentes y microservicios de su aplicación. Usted querría aprender Docker para contener sus microservicios. IBM tiene una oferta pública con IBM Cloud Kubernetes Service que administra el clúster por usted.
Istio
Istio aborda algunos de los inconvenientes de los microservicios. Istio es una malla de servicios que le ayuda a administrar sus microservicios. Istio se puede instalar encima de Kubernetes, donde puede ayudarlo a rastrear y monitorear sus microservicios. Esto también puede ayudarlo a rastrear rápidamente los errores y errores en su aplicación, si los hay. Istio también puede administrar el tráfico de sus microservicios, como administrar y controlar el flujo. Sus rutas se pueden configurar fácilmente. Istio también proporciona seguridad dentro de sus microservicios como tener TLS mutuo o limitar su acceso a servicios externos. También puede instalar Istio en el servicio de IBM Cloud Kubernetes.
Resumen
En mi experiencia, usar una plataforma de orquestación de contenedores es imprescindible para construir su aplicación con microservicios. Kubernetes es una de las opciones populares de los desarrolladores, ya que rápidamente lleva su aplicación desde el desarrollo hasta la producción. Y, aún mejor, ¡es de código abierto!
Para los desarrolladores que están comenzando a construir sus aplicaciones, deben decidir si sería beneficioso para ellos usar una arquitectura de microservicios en lugar de una monolítica. Deben considerar la facilidad de uso y la escalabilidad a largo plazo de su aplicación. Está bien comenzar con una arquitectura monolítica, pero una vez que la aplicación crezca, solo será más difícil descomponerla en microservicios. En ese caso, sería más beneficioso comenzar con microservicios en la fase inicial de desarrollo. Para las aplicaciones monolíticas existentes, los desarrolladores deben considerar cómo y qué componentes se desacoplarían en su aplicación.
A pesar de los inconvenientes, los microservicios siguen siendo populares entre los desarrolladores y las empresas, ya que benefician enormemente las aplicaciones y las demandas de los usuarios. Con su flexibilidad, los desarrolladores y las empresas pueden lograr un rápido desarrollo o actualizaciones en su aplicación una vez que tengan el nivel correcto de microservicios.
-
CloudComputing
- OwnCloud 5 Beta, el clon libre de Dropbox.
- Los 5 mejores software y aplicaciones para Linux con cifrado de datos
- El creador de aplicaciones sin código Honeycode de Amazon, ya no existe
- Microsoft sugiere que las empresas compren menos PC
- Cómo instalar CloudPanel en Debian 10 Buster
- Las 7 mejores aplicaciones para instalar en Nextcloud
- Cómo instalar ONLYOFFICE en cualquier distro Linux: una suite ofimática completa basada en la web para aumentar la eficiencia de su equipo
- Coautor de documentos en Linux con ONLYOFFICE Docs
- Cómo instalar ONLYOFFICE Docs en Debian y Ubuntu
- Qué se puede hacer con la Nube de ExtreHost
- Usando ownCloud para integrar Dropbox, Google Drive y más en Linux
- ¿Por qué debería utilizar microservicios y contenedores?
- ¿Qué es y qué significa CI / CD?
- Cómo instalar el servidor de respaldo remoto rsnapshot en Red Hat / CentOS Linux
- La UE quiere pisar nuestros derechos y cobrar por usar Dropbox y WeTransfer