A medida que una empresa crece, requiere más funcionalidades y, por lo tanto, no puede evitar agregar nuevos modelos/controladores a la aplicación Rails existente y, a veces, se convierte en un monolito. Si se enfrenta a una aplicación monolítica que se ha vuelto imposible de mantener y difícil de implementar, necesita conocer algunas formas de administrarla. Si tu equipo tiene que recorrer miles de líneas para entender el proyecto y realizar algunos cambios, es hora de dividirlas.
Cuando dividir la aplicación
- Cuando sus pruebas se ejecutan durante más de 20 minutos.
- Los modelos crecieron a varios cientos o miles.
- Funcionalidad independiente.
- Cuando los desarrolladores no pueden trabajar de forma independiente para desarrollar/implementar sus propios módulos.
Diferentes formas de dividir una aplicación monolítica
- Usando microservicios.
- Utilizar tecnologías 'más rápidas'.
- Agrega un montón de servidores.
¿Qué es el microservicio? Los microservicios son una forma estratégica de descomponer un proyecto grande en partes más pequeñas y manejables. Un microservicio es una pieza de funcionalidad de la aplicación refactorizada en su propia base de código, que se comunica con otros microservicios a través de un protocolo estándar. Para lograr esto, primero divida sus requisitos comerciales en grupos relacionados, como lógica de administración de usuarios, lógica publicitaria y una interfaz de usuario web.
Por que microservicio
La primera fuerza que condujo al aumento de los microservicios fue una reacción contra la arquitectura monolítica normal. Mientras que una aplicación monolítica es un gran programa con muchas responsabilidades, las aplicaciones basadas en microservicios se componen de programas más pequeños, cada uno con una única responsabilidad. Esto permite que los equipos de desarrolladores trabajen de forma independiente en diferentes servicios. El desacoplamiento inherente también fomenta programas más pequeños y simples que son más fáciles de entender, de modo que los nuevos desarrolladores puedan comenzar a contribuir más rápidamente. Finalmente, dado que ningún programa representa la totalidad de la aplicación, los servicios pueden cambiar de dirección sin costos masivos. Si aparece nueva tecnología que tiene más sentido para un servicio en particular, es factible reescribir sólo ese servicio. De manera similar, dado que los microservicios se comunican en diferentes idiomas, una aplicación puede estar compuesta por varias plataformas diferentes: Ruby, Java, PHP, Node, Go, etc. sin ningún problema.
Ventajas
- Los módulos se pueden reutilizar.
- La implementación se realiza sin problemas, independientemente de toda la gran aplicación.
- Funciones fáciles de agregar.
- Reduce el tiempo de prueba para probar un módulo en lugar de todos.
- Las aplicaciones grandes tienden a ser más difíciles de mantener que las pequeñas.
- Tener un conjunto de pequeñas aplicaciones nos permite centrarnos en trabajar en piezas aisladas.
- Es posible que tengamos más posibilidades de no dañar otras partes de la aplicación.
- Fiabilidad y tolerancia a fallos.
- Fácil de migrar o actualizar.
- Diversidad tecnológica.
- Si alguna función de la aplicación no funciona, la aplicación completa no se cae.
- Facilita que un nuevo desarrollador comprenda la funcionalidad de un servicio.
Desventajas
Because everything is now an independent service, you have to handle requests carefully travelling between your modules. There can be a scenario where any of services may not be responding.
Multiple databases and transaction management can be painful.
Productivity will be less till the microservice base is set.
Microservicios monolíticos versus s
El siguiente diagrama muestra la diferencia entre la aplicación monolítica tradicional y los microservicios en términos de recursos humanos, tiempo, mantenimiento y complejidad de manejo de las aplicaciones.
Cómo configurar microservicios
Una forma estratégica de reducir la aplicación monolítica es dividir capas como presentación, lógica empresarial y acceso a datos. Una aplicación empresarial típica consta de al menos tres tipos diferentes de componentes:
- Presentation layer – Components that handle HTTP requests and implement either a (REST) API or an
HTML-based web UI. In an application that has a sophisticated user interface. - Capa de lógica empresarial: componentes que son el núcleo de la aplicación donde se implementan las reglas comerciales.
- Capa de acceso a datos: componentes que tienen acceso a componentes de infraestructura, como bases de datos y intermediarios de mensajes.
RailsCarma ha estado implementando aplicaciones Ruby on Rails desde sus etapas iniciales para desarrollo, capacitación, implementación y contribución a la comunidad Rails. A través de experiencia técnica confiable y un servicio al cliente consumado combinados para brindar una experiencia placentera a los clientes, RailsCarma brinda servicios de extremo a extremo. Desarrollo de Ruby on Rails,consultoría, arquitectura, gestión y extensión a empresas de todo el mundo. Contáctanos para saber más.