Microsserviços
Arquitetura
Backend
API
Escalabilidade
Mobile

Microservicios en Aplicaciones: Arquitectura Distribuida para Móviles

Microservicios en Aplicaciones: Arquitectura Distribuida para Móviles

Los microservicios dividen el sistema en servicios pequeños e independientes. Para las aplicaciones móviles, esto significa API escalables y en evolución. Esta guía presenta cómo implementar y operar microservicios para aplicaciones.

¿Qué son los microservicios?

Definición

Arquitectura donde la aplicación se compone de servicios pequeños e independientes.

Características

  • Independencia de implementación
  • Único responsable del dominio.
  • Comunicación a través de red.
  • Puede tener diferentes tecnologías.

Diferencia monolítica

Monolito: todos juntos. Microservicios: separados por responsabilidad.

Ventajas

Escalabilidad independiente

Cada servicio escala según la demanda.

Despliegue independiente

Actualizar uno no afecta a los demás.

Resiliencia

Fallar en uno no lo arruina todo.

Múltiples tecnologías

Utilice la mejor herramienta para cada trabajo.

Equipos independientes

Propiedad clara, menos dependencias.

Desventajas

Complejidad operativa

Más piezas para gestionar.

Latencia de red

La comunicación entre servicios agrega latencia.

Depuración dura

Realice un seguimiento de los problemas en todos los servicios.

Coherencia de datos

Las transacciones distribuidas son complejas.

Gastos generales

Para sistemas pequeños, puede ser demasiado.

Cuándo utilizar

Bueno para

  • Equipos grandes
  • Dominios complejos
  • Necesidad de escala independiente
  • Evoluciones frecuentes

evitar

  • Equipos pequeños
  • MVP
  • Dominios simples

Descomposición

Por dominio

Contextos DDD acotados.

Por funcionalidad

Autenticación, pagos, catálogo, etc.

Por caso de uso

Flujos de usuarios independientes.

Puerta de enlace API

Función

Punto de entrada único para clientes.

Responsabilidades

Enrutamiento, autenticación, limitación de velocidad, agregación.

Herramientas

Kong, puerta de enlace API de AWS, Nginx.

BFF (Backend para Frontend)

Concepto

Pasarela específica para tipo de cliente.

Uso

BFF para móvil, otro para web.

Ventajas

Optimizado para cada cliente.

Comunicación

Sincrónico

DESCANSO, gRPC. Solicitud/respuesta.

Asincrónico

Colas de mensajes. Eventos.

Compensaciones

Lo sincrónico es simple, lo asincrónico es resistente.

Descubrimiento de servicios

Problema

¿Cómo se encuentran los servicios entre sí?

Soluciones

Cónsul, Kubernetes DNS, AWS Cloud Map.

Observabilidad

Registro

Registros centralizados con ID de correlación.

Seguimiento

Calco distribuido con Jaeger, X-Ray.

Métricas

Por servicio y agregado.

Resiliencia

Disyuntor

Deja de llamar al servicio fallido.

Reintentar

Inténtalo de nuevo con retroceso.

Tiempo de espera

No esperes para siempre.

###Mamparo

Aislar recursos.

Gestión de datos

Base de datos por servicio

Cada servicio con su banco.

Consistencia final

Transacciones distribuidas evitadas.

Eventos

Comunicar cambios a través de eventos.

Sagas

Transacciones largas vía compensación.

Implementación

Contenedores

Docker para encapsular servicios.

Orquestación

Kubernetes para administrar.

CI/CD

Tubería por servicio.

Azul-Verde/Canario

Implementaciones seguras.

Para móviles

API optimizada

Menos llamadas, datos agregados.

Caché

Almacenamiento en caché de CDN y API.

###Sin conexión

Resiliencia cuando la red falla.

Control de versiones

API versionadas para compatibilidad.

Pruebas

###Unidad

Para servicio.

Integración

Comunicación entre servicios.

###Contrato

El consumidor y el proveedor acuerdan el contrato.

De extremo a extremo

Flujos completos a través de servicios.

Migración

Patrón estrangulador

Reemplaza gradualmente a monolito.

Empiece poco a poco

Comience con un servicio.

###Extraer

Identificar dominios bien definidos.

Errores comunes

Distribución prematura

Microservicios antes de que los necesites.

Nanoservicios

Servicios demasiado pequeños.

Sin observabilidad

Imposible de depurar.

Ignorar la latencia

Múltiples llamadas de red.

Conclusión

Los microservicios ofrecen escalabilidad y flexibilidad, pero con complejidad. Evalúe si es necesario para su contexto, invierta en observabilidad y opere con disciplina. Para aplicaciones móviles, céntrese en las API optimizadas y la resiliencia.

##Preguntas frecuentes

1) ¿Necesito Kubernetes para microservicios? No necesariamente. Pero ayuda mucho a escala.

2) ¿Cuántos servicios son demasiados? No existe un número mágico. Si el equipo no puede gestionarlo, es demasiado.

3) El móvil debe llamar directamente a microservicios? Generalmente no. Utilice API Gateway o BFF.

4) ¿Los microservicios son siempre mejores? No. Un monolito bien hecho puede ser mejor en muchos casos.

5) ¿Cómo empezar con microservicios? Inicie monolito modular. Extraer cuando sea necesario.

Lea también