Cómo manejar el almacenamiento en la aplicación SaaS multiinquilino

Esta pregunta tiene una gran cantidad de posibles respuestas. Las opciones de almacenamiento son probablemente una de las respuestas más complejas para proporcionar cuando se trabaja con aplicaciones SaaS de múltiples inquilinos. Sin comprender el diseño arquitectónico actual de la aplicación SaaS, es difícil para mí proporcionar mucha dirección.

¿Su aplicación requiere …

  1. ¿Se accede a los archivos MUY rápidamente?
  2. ¿Que todos los archivos estén “siempre” disponibles?
  3. Permisos específicos en lo que respecta a los archivos?

Las soluciones de ejemplo pueden ser Amazon Glacier, que ya se señaló. Si puede utilizar Object Storage, vale la pena considerar opciones como Ceph (que también puede bloquear el almacenamiento) o Apache Hadoop.

Sin embargo, supondré por ahora que la arquitectura es un poco más simple que las soluciones propuestas anteriormente. Avíseme si estoy en el camino correcto, y si no, puedo proporcionar soluciones alternativas basadas en la capacidad de experiencia que tengo.

Solución EBS, como propuso anteriormente Noam Ben-Ami :

Otra opción podría ser una replicada (o distribuida, replicada, etc.) utilizando Glusterfs. Es un proyecto fenomenal de Red Hat (compañía) y está ganando más y más tracción. Hay inconvenientes definitivos para Gluster, pero, por lo general, se ven en aplicaciones sensibles a la latencia. Nunca aloje la base de código en Gluster . Utilizando el volumen replicado a continuación (crédito para el sitio web de Glusters), aquí hay un diagrama arquitectónico simple.

Esto permitiría un enfoque escalable y también consciente de los costos de los datos del cliente. Avíseme si estoy en el camino correcto y puedo proporcionar más información.

Realmente depende de sus casos de uso particulares para los datos. EFS es una buena solución para algunas situaciones, especialmente cuando necesita simplicidad y el costo no es un factor importante. EBS, S3 y Glacier también son opciones para varios escenarios.

Además, puede almacenar datos en columnas binarias en varias bases de datos, así como enviar datos a varias CDN. Todo depende precisamente de lo que necesita hacer con los datos. Puede configurar un bucket S3 para su aplicación y dar a cada uno de sus clientes una raíz de espacio de nombres. Puede configurar un volumen EBS y dar a cada cliente acceso a una ruta en él; todos estos enfoques requieren un proxy frente a EBS / S3 que pueda controlar, por supuesto.

Crear un volumen de EBS por cliente probablemente no sea tan difícil, pero hay cuestiones de administración y seguridad. También hay límites: creo que AWS por defecto solo permite la creación de unos pocos miles de volúmenes EBS y, por supuesto, administrar tantos volúmenes puede ser doloroso. Por lo tanto, un enfoque de base de datos, S3 o carpeta dedicada puede ser bastante viable, dependiendo, nuevamente, de exactamente lo que necesita hacer con el sistema de almacenamiento

Este blog puede ayudar http://blog.techcello.com/2016/1