Data Transfer Project (DTP) es el estándar de portabilidad de datos de código abierto que intenta solucionar uno de los grandes problemas cuando queremos migrar datos. Nos referimos al Data Lock-in, la imposibilidad de obtener todos los datos que tenemos almacenados en un servicio para irnos a otro. Recientemente, el proyecto apoyado por Google, Facebook, Microsoft, Twitter presentó la especificación y la arquitectura que permitirá llegar a una API común para la transferencia de datos de usuario entre servicios. La clave es poder definir una comunicación directa y sin intermediarios, y lo más importante: un formato común de datos.
Está la idea se remonta a 2007 cuando surgió, Data Liberation Front, un grupo de ingenieros de Google que han promovido desde entonces la liberación de los datos para evitar este tipo de problemas con los servicios ofrecidos por la empresa. Gracias a ellos disponemos de Google Takeout, una herramienta para los usuarios que permite hacer copias de seguridad de tus archivos en todos lo servicios de Google.
Ahora el proyecto entre manos es aún más ambicioso y tiene como objetivo crear un estándar común capaz de ser usado para convertir cualquier API propietaria a un conjunto de formatos comunes creando de paso un ecosistema de herramientas en torno a ello.
El futuro de la portabilidad Service-to-Service
El objetivo es que los usuarios deberían ser capaces de transferir sus datos desde un servicio a otro, sin la necesidad de apoyarse en un intermediario (otro SaaS, por ejemplo) ni tener que descargar y volver a enviar todos lo datos de nuevo. Existen multitud de servicio que base su modelo en migrar emails, contactos, etc de un proveedor a otro. Por ejemplo, cuando cambias de cuenta de Yahoo a Gmail.
Para facilitar el complicado mundo de la portabilidad de datos, Data Transfer Project define una serie de adapters para transformar los formatos propietarios a una serie de Data Models comunes. Esto permite que la transferencia de datos pueda hacerse desde el propio proveedor del servicio a otro manteniendo el control sobre la seguridad e integridad de los datos.
Obviamente, estos Data Models están limitados en cuanto a la información que pueden ser compartidos de un servicio a otro, ya que es imposible modelar toda la información pero con los distintos casos de uso ya creados como fotos o contactos se cubre ampliamente la funcionalidades esperada. Aún habrá que seguir usando algún mecanismo para incorporar ciertos metadata más específicos.
Cómo funciona: la arquitectura de Data Transfer Project
Existen 3 componentes fundamentales descritos en el white paper de Data Transfer Project:
- Data Models que proveen un formato común para transferir los datos.
- Adapters que facilitan los métodos para convertir cada dato propietario y posibilitar la autenticación dentro del sistema.
- Task Management que realizan las tareas en background para ejecutar la migración de datos.
Por medio de los Data Models podemos definir el formato de datos que queremos intercambiar. Actualmente se puede consultar los existentes en el Github del proyecto: emails, contactos, fotos, calendarios, tareas, etc..
Con los Adapters podemos hacer la traducción entre los datos dados de un proveedor concreto (la API del servicio) a los Data Models de intercambio de DTP. Además de la transformación de datos, existe otro tipo de adapters que se ocupan de la autenticación de los datos. OAuth ha sido el proveedor más extendido, aunque DTP es agnóstico en el tipo de autenticación.
Por último, el conjunto de tareas necesarias para realizar la carga de la portabilidad de datos reside en el otro gran componente de Tasks. Se encargan de realizar las llamadas entre los adapters, realizar la lógica de reintentos, gestionar los rate limits, paginación, notificaciones individuales, etc..
¿Cómo podemos probarlo y participar los desarrolladores?
DTP está aún en desarrollo y no está preparado para ser usado en producción. Sin embargo existen distintos casos de uso que podemos probar migrando datos entre algunas plataformas. Disponible en el Github del proyecto.
Todo el código está escrito en Java y puede ser desplegado vía Docker. Algunos de sus módulos desacoplados pueden ser escritos en Python, C#/.NET, etc.. La plataforma en cloud que se está usando para probarlo está disponible tanto para Google Cloud, Microsoft Azure, Amazon AWS.
Dentro del repositorio publicado tenemos la posibilidad de añadir nuevos Providers utilizando el conjunto de interfaces descritas en Github. Es necesario completar cada una de las piezas descritas en la arquitectura DTP: Data Adapter, Auth Adapter y, potencialmente, un nuevo Data Model.
También se puede contribuir al Core Framework, el cual involucra algunas piezas importantes como las plataformas Host, el sistema de almacenamiento.
Todo ello a través de pull requests al proyecto en Github.
Más información | Data Transfer Project
Ver 0 comentarios