¿Cómo puedo usar API de diferentes nubes en mi aplicación? Quiero diseñar una aplicación que integre los diferentes almacenamientos en la nube a través de una sola plataforma.

Dependiendo de su lenguaje de programación preferido, ya habrá kits de herramientas disponibles para los servicios de almacenamiento en la nube más populares.

Por ejemplo, si necesita admitir Amazon S3 y está desarrollando con Ruby on Rails, una búsqueda de “Ruby AWS S3 toolkit” arrojará algunas gemas de ruby ​​que abstraerán la mayor parte para usted. Como mínimo, todos los servicios de almacenamiento en la nube tendrán una API RESTful o REST-like que puede utilizar para realizar llamadas API a través de un cliente HTTP. Usando nuestro ejemplo de Ruby anterior, hay Net :: HTTPRequest que podría usar para hacer solicitudes de API. Elija el idioma que planea usar y luego comience a buscar bibliotecas de cliente HTTP y módulos específicos para servicios de almacenamiento específicos.

Parece que desea desarrollar un servicio de almacenamiento front-end que utiliza múltiples backends. Ya hay algunos, por lo que podría valer la pena echarles un vistazo para ver cómo es su interfaz y qué servicios de almacenamiento admiten. Nasuni y Gladinet son los que inmediatamente vienen a la mente, aunque de ninguna manera son los únicos.

Mi recomendación sería comenzar poco a poco e iterar, agregando servicios adicionales de forma incremental. Amazon S3 es el primer servicio obvio para comenzar, pero OpenStack Swift es una excelente segunda opción de soporte. Al admitir la API OpenStack Swift, podrá integrarse con una serie de proveedores de almacenamiento, como Rackspace CloudFiles, Internap AgileFILES, Softlayer Object Storage, etc.

Con archivos grandes (más de 5 GB para Swift, pueden variar para otros servicios de almacenamiento de objetos), generalmente divide el archivo en fragmentos y crea un archivo “manifiesto” que le dice a la biblioteca del cliente cómo volver a ensamblarlo al entregarlo al cliente.

Documentos rápidos: soporte para objetos grandes
Referencia rápida de la API: 3.4.3. Crear objetos grandes

Teóricamente, podría dividir el archivo grande en varios proveedores de servicios. El documento manifiesto le dirá al cliente dónde obtener los múltiples archivos. Dudo que sea útil, a menos que esté tratando de mantenerse dentro de los niveles de uso gratuito y distribuir archivos entre múltiples servicios para evitar el pago. Es probable que los problemas de usar múltiples proveedores de almacenamiento para un archivo de esta manera creen más problemas de lo que vale. Por otro lado, si está planeando fragmentar un archivo en múltiples segmentos, luego replique esos segmentos en múltiples proveedores para obtener redundancia, de modo que al recuperarlo el cliente pueda extraer de cualquier proveedor (por ejemplo, la ubicación más cercana o la respuesta más rápida), que podría ser una característica útil de almacenamiento en múltiples nubes.

Hay tres maneras de hacer esto:

  1. Use OpenStack, luego puede usar, por ejemplo, la API Swift Object Storage para almacenar objetos (archivos) en cualquier nube compatible con Swift como Rackspace Cloud Files o HP Object Storage
  2. Use una capa de abstracción como JClouds que traducirá sus llamadas API a las nubes apropiadas que desea usar, con la desventaja de que está codificando al mínimo común denominador
  3. Codifique manualmente para la API de cada nube. Pero obviamente esto es mucho trabajo y requiere aún más trabajo para mantener la aplicación a medida que cambia cada API individual

No hay nada ilegal (AFAIK) alrededor del almacenamiento de un archivo en partes en diferentes nubes, o incluso copias de todo el archivo. Me pregunto por qué no querrías almacenar todo el archivo en una nube.

espero que esto ayude

Kloudless proporciona una API común a varias API de almacenamiento en la nube diferentes (Dropbox, Box, GDrive, OneDrive, etc.). Kloudless también proporciona SDK en idiomas populares y widgets de interfaz de usuario para manejar la autenticación y otras interacciones del usuario.

Puede encontrar más información e inscribirse aquí: https://developers.kloudless.com/