WR 19: Microframeworks, microservicios y la corrala de vecinos
Los microframeworks y microservices son pautas de trabajo que tenemos que conocer para construir sabiamente la arquitectura de una aplicación ¿Cuándo usarlos? Te doy mi visión al respecto.
Para no perderte nada, pulsa en el play que tienes sobre estas líneas, y así escucharás todo en detalle.
Te dejo con las notas del programa
Un nuevo vídeo en el canal de YouTube. ¶
Esta vez te muestro como levantar contenedores Docker en la nube, sin instalar nada y gratuitamente. En concreto un contenedor Docker de WordPress con su base de datos. Lo tienes todo en este vídeo.
Suscríbete a mi canal de YouTube
Comentamos también en el capítulo sobre el HackPEUM del próximo 3 de febrero, el curso gratuito de Vue y Firebase de Juan Andrés Núñez, la webserie Dorien de Playz y que ya tenemos algunas reseñas más en Apple Podcast ¡Deja la tuya si te gusta! :)
Antes de empezar, ¿qué es una corrala?
Es un tipo de viviendo, típico en la zona más castiza de la ciudad de Madrid. Su principal singularidad es que los balcones de las viviendas miran todos hacia un patio interior.
¿Qué es un microframework? ¶
Una base de programación reducida, donde se han eliminado elementos que se consideran innecesarios. En web una aplicación se trata básicamente de un sistema capaz de detectar las peticiones realizadas, enrutarlas hacia un controlador y devolver una respuesta acorde con la petición.
Esto encaja en la definición de un microframework.
Reduce las dimensiones de un framework empresarial o full-stack y cubre las necesidades básicas del programador. No suelen incluir persistencia de datos, autenticación o plantillas, aunque hay muchas diferencias entre microframeworks, ya que cada uno hace la aproximación que quiere.
Algunos nombres de microframeworks con sus enlaces:
- Express.js (JavaScript)
- Flask (Python)
- Grape for Ruby
- Jooby (Java)
- Lumen (PHP)
- Nancy FX (C#/.NET)
- Play (Scala, Java)
- Silex (PHP)
- Sinatra (Ruby)
- Slim (PHP )
- Spring Boot (Java)
Casos de uso
- Crear una API de comunicación con otras plataformas
- Landing page o pequeña página web
- Web no tan pequeña que se comunique con otros sitemas: frontend
- Gestión de un backend de una aplicación móvil, tanto en datos como en comunicaciones.
- Panel de administración para un dispositivo o tarea concreta
- ¿Se te ocurre alguno más? Déjalo en los comentarios, que crezca la lista…
¿Qué son los microservicios? ¶
Es un conjunto de pequeños componentes que son fruto de la disgregación de un sistema más complejo. Cada microservicio se encarga de una tarea concreta y se comunica con los demás por medio de protocolos ligeros, como el HTTP a través de API Rest.
Se conoce realmente como arquitectura de microservicios.
Si entendemos una aplicación como monolítica es porque tus sus procesos están contenidos dentro de la misma estructura. Están acoplados no sólo en cuanto a su desarrollo sino también a todos los conceptos de este tipo de sistemas: hardware, ancho de banda, despliegue, pruebas…
Y es que usar microservicios tiene varias ventajas:
- Se descompone la complejidad de una aplicación completa en pequeños trozos.
- Cada servicio es manejado por un equipo especialista que puede aportar su solución, no dependiente del resto. Unas pueden estar programadas en una cosa, otros en otra. Se adapta también a tu negocio, a como esta estructurado. No es lo mismo compras, que ventas, que atención al usuario
- Cada servicio se despliega de forma individual. Esto hace que no haya que parar las máquinas del todo para poner algo en marcha, que no se requiera testear todo el sistema completo o que si una parte tiene más demanda se puedan destinar mas recursos de infraestructura a esa parte.
- Están claros los limites de cada servicio, más fácil planificar, evaluar, presupuestar…
Inconvenientes:
- No es para proyectos pequeños que se van a quedar pequeños.
- Puede que sean demasiado micros, esto es, demasiado pequeños
- La dificultad de la comunicación entre procesos.
- Los datos van de un microservicio a otro y tienen que mantener una integridad.
Un ejemplo de cómo construir un sistema de venta de entradas de cine con microservicios lo presenta Cristian Ramirez en su serie de tutoriales, cuya imagen acompaña a este texto.
Algunos enlaces más sobre el tema:
Conclusión ¶
El inconveniente principal del microservicio es que está a la altura de una comunidad, de un grupo de trabajo amplio. Afrontar la descomposición de ese monolito en solitario es un trabajo largo, sobre todo sino se cuenta con una gran experiencia. Comunicar plataformas entre si siempre es una tarea complicada.
La ventaja de esta composición es que cada microservicio puede estar construido y programado por una persona o un equipo especialista en la tarea que tiene que ejecutar el microframework.
Lo que si es recomendable es mantener un equilibrio entre ambas cosas. Ni podemos construir aplicaciones gigantescas e inabarcables ni podemos ir a definir microservicios para convertir una cadena en mayúsculas.
La virtud te la dará el saber :)
Si te ha gustado el podcast, no dejes de compartirlo con quien quieras. Seguro que hay colegas de trabajo, programadoras, desarrolladores, implementadores, analistas que están interesados. Pásales el enlace a webreactiva.com y seguiremos creciendo.
Y si ya el entusiasmo es de fábula, agradecido quedo por las 5 estrellas en itunes y los me gusta en ivoo.
Encuéntranos también en twitter como @webreactiva.
¡Nos escuchamos en el próximo! ;)
Escrito por:
Daniel Primo
12 recursos para developers cada domingo en tu bandeja de entrada
Además de una skill práctica bien explicada, trucos para mejorar tu futuro profesional y una pizquita de humor útil para el resto de la semana. Gratis.