En esta sesión implementaremos un microservicio desde cero utilizando Rust y MongoDB. Rust es muy adecuado para la computación en la nube porque es eficiente, produce binarios rápidos y compactos (lo que significa una factura más baja por los servicios de Cloud) y evita errores de memoria y condiciones de carrera en el acceso multihilo a los datos.
Y MongoDB es la plataforma perfecta para aplicaciones de datos y en particular para aplicaciones diseñadas con DDD y sus patrones agregados.
Las arquitecturas de microservicios son escalables y muy potentes, y se adaptan perfectamente a la nube. Sin embargo, la forma en que se comparten los datos entre los diferentes servicios implica tener en cuenta algunos requisitos que las convierte en un desafío para aquellos que son nuevos en este tipo de arquitecturas.
Mostraremos un ejemplo práctico desde cero de una API REST escrita con Rust, con el web framework Tokio Axum y el driver MongoDB Rust para almacenar sus datos en MongoDB Atlas.
En concreto, trataremos estos temas:
- Expectativas de diseño y arquitectura.
- Comunicación Sync vs Async (HTTP o RPC vs mensajes o colas).
- Generadores de código disponibles (sincrónicos y asincrónicos) y limitaciones.
- Crates que se pueden usar para sincronización ad-hoc (para Web, como Axis, Axum y Rocket) y otros fines, como dotenv.
- Sugerencias de implementación REST.
- Middleware.
- Logging vs tracing.
- Uso de rasgos, traits asíncronos y despacho dinámico.
- Uso de patrón newtype.
- Los puntos clave son:
- ¿Qué esperar cuando desarrolla microservicios en Rusts: ventajas y desventajas?
- ¿Qué hacer y qué no hacer al desarrollar microservicios en Rust? Áreas de interés para futuros desarrollos.