2 puntos por GN⁺ 2024-03-11 | 1 comentarios | Compartir por WhatsApp

S3 es de archivos, pero no es un sistema de archivos

  • Amazon S3 es una tecnología original de la nube lanzada en 2006, llamada "almacenamiento de objetos", pero en la práctica está pensada para archivos.
  • La idea de que S3 es un "Amazon Cloud Filesystem" es una creencia útil para impulsar su adopción, pero en realidad S3 no es un sistema de archivos.

Qué es un sistema de archivos y la "profundidad" de los módulos

  • La API de archivos de Unix se compone de cinco funciones básicas, que proporcionan todo lo necesario para leer y escribir archivos.
  • Estas funciones abordan muchos problemas como buffering, page cache, fragmentación, permisos, programación de IO y más, sin exponerlos al usuario.
  • Los módulos profundos tienen la ventaja de permitir que el usuario use la funcionalidad sin tener que pensar en esa complejidad.

Características de S3 (esto también es profundo)

  • S3 no reimplementa la API de sistemas de archivos de Unix, y su modelo básico de llamadas es diferente.
  • La API de S3 es más simple que la API de archivos de Unix, pero tiene la limitación de que no permite sobrescribir parcialmente objetos.

El software de sistemas de archivos, especialmente las bases de datos, no puede migrarse a Amazon S3

  • Las bases de datos necesitan un lugar donde almacenar los datos, y normalmente eso se hace en varios archivos dentro de un sistema de archivos.
  • Las bases de datos dependen en gran medida de la sobrescritura parcial, algo que en S3 no es posible.

Lo que S3 hace bien y lo que no

  • La ventaja de S3 es que el ancho de banda de lectura y escritura es muy alto.
  • Sin embargo, S3 no tiene sobrescritura parcial, ni operaciones de renombrado o movimiento, y listar archivos también es lento.
  • Aun así, S3 requiere poco mantenimiento y simplifica tareas como configurar respaldos, replicación y aprovisionamiento.

La importancia de la profundidad de los módulos entre organizaciones

  • No sorprende que S3 se haya convertido en la primera API de nube popular, ya que una API profunda ayuda a gestionar la complejidad entre organizaciones.
  • Integrar software empresarial complejo como SAP es una tarea dolorosa, y eso se debe a que SAP no es un módulo profundo.

Información adicional

  • Este artículo no pretende sugerir que S3 esté sobrevalorado, sino explicar el concepto de módulos profundos frente a módulos relativamente superficiales.
  • Algunas bases de datos han sido diseñadas para usar la API de S3 como almacenamiento; eso es posible, pero no transparente.
  • En S3, muchos formatos de archivo tienen peor rendimiento que en disco.

Opinión de GN⁺

  • Es importante entender que S3 no es un sustituto de un sistema de archivos, sino una solución de almacenamiento optimizada para casos de uso específicos. Por ejemplo, es adecuado para almacenar y transferir archivos inmutables a gran escala, pero no para aplicaciones como bases de datos que requieren actualizaciones parciales frecuentes.
  • El rendimiento y la escalabilidad de S3 son muy altos, pero al considerar la eficiencia de costos y la complejidad operativa, no es adecuado para todos los proyectos. Por ejemplo, el proyecto open source MinIO puede ser una buena alternativa para organizaciones que quieren construir almacenamiento compatible con S3 en su propia infraestructura.
  • Al usar S3, también hay consideraciones adicionales como consistencia de datos, costos de red y control de acceso, y estos factores pueden afectar el diseño completo del sistema.
  • Aunque los casos de uso de S3 pueden ser limitados, es una herramienta muy poderosa en aplicaciones específicas como data lakes o soluciones de respaldo. Su capacidad para almacenar datos de forma segura y recuperarlos rápidamente cuando se necesitan ofrece un valor importante para muchos negocios.
  • Este artículo puede ayudar a tomar decisiones técnicas al ofrecer una comprensión profunda de los detalles técnicos de S3 y de sus casos de uso reales.

1 comentarios

 
GN⁺ 2024-03-11
Opiniones de Hacker News
  • Nunca he oído hablar de problemas con la durabilidad de S3, pero tampoco he visto que estas afirmaciones se hayan puesto a prueba. Me dan curiosidad estas afirmaciones.

    • La durabilidad de S3 está a la cabeza de la industria y no se puede comparar con los sistemas de archivos tradicionales.
    • La separación de zonas de disponibilidad de AWS es superior a la de otros proveedores de nube.
    • S3 se toma muy en serio la integridad de los datos y los desastres naturales.
    • S3 opera a una escala lo bastante grande como para detectar el "bit rot".
    • No guardaría datos importantes en ningún otro lugar que no sea S3.
    • Fuente: alguien que escribió el sistema de facturación de S3.
  • Listar archivos es lento. S3 es muy rápido para leer y escribir, pero listar archivos es muy lento.

    • Lo útil de S3 no es la lectura y escritura rápidas, sino la capacidad de listar archivos.
    • En buckets sin versionado, listar un prefijo dado es prácticamente posible en tiempo constante.
    • Puedes particionar los datos de distintas maneras y usar los identificadores que necesites sin preocuparte por el rendimiento.
  • Hace poco me sorprendió lo lento que es listar archivos. Mientras trabajaba en scripts para administrar recursos en S3, me di cuenta de que necesitaba una caché de listado de archivos.

    • Hay unas 100,000 carpetas en el nivel raíz, y cada una contiene algunas carpetas con algunos archivos.
    • Listar los archivos de forma recursiva toma 15 minutos.
    • Me pregunto por qué Amazon no ha resuelto este problema.
  • Amazon S3 es la tecnología de nube original, lanzada en 2006. Los "objetos" estaban de moda en ese momento y S3 fue llamado un "almacenamiento de objetos".

    • S3 no es un sistema de archivos, es un almacenamiento de objetos.
    • S3 no es un archivo, ni tampoco un sistema de archivos.
    • Lo que se espera de la abstracción de archivo es mutabilidad.
    • S3 ofrece una lista mutable de objetos inmutables.
    • S3 resuelve un problema distinto, y los intentos de hacer que parezca un sistema de archivos provienen de un malentendido por parte de los clientes.
  • Hay una discusión comparando la API de object_store de Apache Arrow y la API ofrecida por Apache OpenDAL.

    • Apache OpenDAL es una biblioteca que ofrece una API similar a FS para varios almacenamientos en la nube, incluido S3.
    • Algunos sistemas de bases de datos como GreptimeDB y Databend usan OpenDAL para acceder a datos en almacenamiento en la nube.
    • Otras soluciones como Alluxio y JuiceFS también administran una interfaz similar a un sistema de archivos sobre S3.
  • El software de sistemas de archivos, especialmente las bases de datos, no puede portarse a Amazon S3.

    • Sin embargo, sí puede portarse.
    • No es necesario sobrescribir el archivo completo de la BD cada vez que se hace INSERT/UPDATE/DELETE.
    • En el caso de SQLite, existen herramientas como Litestream que soportan replicación y restauración hacia S3.
  • Uso Minio como "S3" local para almacenar datasets y checkpoints de modelos.

    • Minio tiene muchas funciones que no necesito.
    • ¿Cuál es actualmente la mejor opción autoalojada y de un solo nodo para una "cosa" mínima tipo S3 que permita CRUD de archivos y ver listados?
  • Vale la pena mencionar Backblaze B2 mientras hablamos de S3.

    • Estoy muy satisfecho con un precio 3 veces menor que S3.
  • S3 puede usarse erróneamente como sistema de archivos.

    • S3 quiere objetos, y aquí hay objetos de 512 o 4096 bytes llamados clústeres.