Tema 21

21. Gestión de datos, consistencia, privacidad y segregación por servicio

En microservicios, los datos dejan de vivir detrás de una única aplicación y pasan a distribuirse entre múltiples dominios, bases, caches, eventos y réplicas. Esa distribución mejora autonomía, pero también obliga a pensar ownership, consistencia, privacidad y acceso de forma mucho más explícita.

Objetivo Proteger datos sin romper autonomía de servicios
Enfoque Ownership, acceso y consistencia distribuida
Resultado Menor exposición y mejor gobierno del dato

21.1 Introducción

Uno de los cambios más profundos al pasar a microservicios no está en la red ni en los despliegues, sino en los datos. Lo que antes podía vivir en una base central bajo una sola aplicación ahora se reparte entre múltiples servicios que evolucionan a ritmos distintos y toman decisiones sobre información parcial.

Eso trae beneficios claros: mejor alineación con dominios, despliegues más independientes y menor acoplamiento estructural. Pero también abre preguntas difíciles: quién es dueño del dato, qué servicios pueden leerlo, cómo se mantiene consistencia razonable, cómo se protege privacidad y qué pasa cuando varios componentes necesitan una visión parcial del mismo hecho.

La gestión de datos en arquitecturas seguras no consiste solo en cifrar bases. Consiste en diseñar límites, accesos y flujos de información para que el sistema pueda operar sin convertir cada servicio en una puerta lateral hacia el resto del dominio.

21.2 Ownership de datos por servicio

Uno de los principios más importantes en microservicios es que cada servicio debería ser dueño de sus datos o, al menos, de su modelo de acceso y actualización. Esto permite independencia evolutiva y reduce el acoplamiento interno.

Cuando el ownership está claro:

  • Se entiende quién puede modificar una entidad o un estado.
  • Se evita que múltiples servicios escriban directamente sobre el mismo modelo.
  • La autorización y la auditoría se vuelven más precisas.
  • Se reduce el impacto de errores o cambios no coordinados.
Si varios servicios consideran que "también son dueños" del mismo dato, en realidad nadie lo gobierna bien.

21.3 Segregación por servicio

La segregación puede implementarse de distintas maneras: bases separadas, esquemas separados, colecciones separadas o controles de acceso fuertes sobre un mismo motor. La clave no es la forma exacta, sino que el límite del dato acompañe el límite del servicio.

Modelo Ventaja Riesgo si se usa mal
Base separada Aislamiento fuerte y ownership claro Mayor complejidad operativa si se fragmenta sin criterio
Schema o namespace separado Separación razonable con menor costo Tentación de hacer accesos cruzados directos
Motor compartido con ACL fuerte Pragmatismo en ciertos contextos Contaminación de límites y permisos demasiado amplios

21.4 El problema de la base compartida

Compartir una misma base de datos entre múltiples servicios suele parecer eficiente al principio, pero a menudo destruye la independencia que la arquitectura quería ganar. Cuando varios servicios leen y escriben directamente sobre las mismas tablas, el modelo de dominio se vuelve opaco y el control de acceso se complica.

Además, desde el punto de vista de seguridad:

  • Se amplía el número de actores con acceso a datos sensibles.
  • Se vuelve más difícil auditar quién modificó qué.
  • Un compromiso de un servicio puede propagarse a datos que no le pertenecen.

21.5 Consistencia en sistemas distribuidos

Cuando los datos se distribuyen entre servicios distintos, la consistencia ya no puede asumirse como instantánea y global. Muchas veces hay que convivir con consistencia eventual, compensaciones o sincronizaciones asíncronas.

Esto no es un defecto en sí mismo, pero obliga a explicitar:

  • Qué datos deben estar siempre sincronizados.
  • Qué flujos toleran demora o actualización eventual.
  • Qué decisiones no deberían depender de una vista global inexistente.

21.6 Seguridad y consistencia

La consistencia también tiene implicancias de seguridad. Un dato desactualizado puede producir decisiones de autorización incorrectas, mostrar información ya revocada o mantener privilegios que deberían haberse retirado.

Por eso conviene identificar flujos donde la frescura del dato es crítica, por ejemplo:

  • Estados de pago o fraude.
  • Permisos y roles activos.
  • Revocación de credenciales o sesiones.
  • Condiciones regulatorias o de consentimiento.

21.7 Minimización de datos

Uno de los principios más útiles para seguridad y privacidad es la minimización: almacenar, procesar y compartir solo lo necesario. En microservicios esto es clave, porque los datos tienden a multiplicarse en caches, eventos, réplicas y vistas derivadas.

Minimizar significa preguntarse:

  • Este servicio realmente necesita este dato.
  • Necesita el dato completo o una proyección parcial.
  • Necesita persistirlo o solo usarlo temporalmente.
  • Necesita identificar al usuario o alcanza con un identificador técnico.

21.8 Privacidad y dominios

La privacidad no se resuelve únicamente con cifrado o políticas externas. También depende de cómo se distribuye la información entre servicios. Si datos personales o sensibles se replican innecesariamente entre dominios, la exposición crece aunque todo esté "funcionando" correctamente.

Una arquitectura más madura tiende a:

  • Limitar circulación de datos personales entre servicios.
  • Separar identificadores operativos de datos sensibles cuando sea posible.
  • Reducir visibilidad de atributos que no son necesarios para la función.

21.9 Acceso por necesidad y proyecciones derivadas

Muchas veces un servicio no necesita acceder al dato fuente completo, sino solo a una vista derivada o a un subconjunto. Diseñar proyecciones o modelos de lectura específicos puede reducir exposición sin romper la autonomía del sistema.

Esto ayuda a evitar accesos directos innecesarios a bases o dominios que deberían permanecer encapsulados.

21.10 Retención y ciclo de vida del dato

La seguridad de los datos también depende de cuánto tiempo se conservan y en cuántos lugares quedan copiados. Un sistema distribuido tiende a dejar rastros: eventos históricos, backups, caches, colas, índices, logs y material derivado.

Por eso conviene gobernar:

  • Tiempos de retención.
  • Borrado lógico y físico cuando corresponda.
  • Sincronización de eliminación entre réplicas y proyecciones.
  • Ubicación y permanencia de datos derivados sensibles.

21.11 Auditoría sobre acceso a datos

No siempre alcanza con saber qué servicio existe. También hay que poder responder qué servicio accedió a qué tipo de dato, cuándo y con qué propósito operativo. Esto es especialmente importante en dominios con información personal, financiera o regulada.

Una auditoría útil debería poder reconstruir:

  • Quién leyó o modificó un dato sensible.
  • Bajo qué identidad y contexto ocurrió.
  • Desde qué servicio o flujo se originó la operación.

21.12 Errores comunes

  • Compartir bases de datos para acelerar integraciones de corto plazo.
  • Replicar datos personales en múltiples servicios por conveniencia.
  • Suponer consistencia fuerte donde solo existe consistencia eventual.
  • Permitir accesos cruzados directos entre dominios sin contratos claros.
  • No gobernar retención ni eliminación en datos derivados o históricos.
En microservicios, el mayor riesgo de datos no siempre es perderlos. A veces es repartirlos tanto que nadie pueda justificar realmente quién los ve y por qué.

21.13 Qué debes recordar de este tema

  • El ownership de datos debe acompañar los límites reales del servicio.
  • La segregación por servicio mejora autonomía y reduce exposición innecesaria.
  • La consistencia distribuida tiene implicancias directas en seguridad y autorización.
  • La minimización de datos es una defensa tanto para seguridad como para privacidad.
  • La auditoría y la retención del dato deben gobernarse a lo largo de todo su ciclo de vida.

21.14 Conclusión

La gestión de datos en arquitecturas seguras exige mucho más que una base bien cifrada. Exige ownership claro, acceso mínimo, segregación coherente, consistencia entendida y gobierno sobre privacidad y retención. Cuando estas decisiones se toman bien, el sistema gana autonomía sin perder control. Cuando se toman mal, la arquitectura se llena de copias, permisos amplios y zonas grises difíciles de defender.

En el próximo tema estudiaremos patrones de resiliencia, continuidad operativa y recuperación ante fallos para cerrar el recorrido desde los datos hacia la supervivencia del sistema frente a incidentes y degradaciones severas.