Si bien el almacenamiento de objetos local es un interés minoritario, en términos relativos, el almacenamiento de objetos en la nube es enorme. Es su hogar natural y el S3 de AWS es la gran bestia que deambula por allí.
Si bien es difícil obtener una cifra definitiva, las estimaciones más recientes de AWS (Amazon Web Services) sobre la cantidad de objetos S3 almacenados se acercan a medio billón (alcanzó un billón en 2010) y, en términos de volumen, son muchos exabytes de datos.
Entonces, aquí damos una descripción general de S3; qué es, cómo funciona, qué clases de almacenamiento proporciona, para qué casos de uso es bueno y las opciones locales generadas por la ascensión de S3 al estado estándar de facto.
¿Qué es el almacenamiento S3?
S3 recibe su nombre del Simple Storage Service en la nube pública de AWS. Es almacenamiento de objetos y surgió como el componente de almacenamiento más básico de los servicios en la nube de AWS.
También se ha convertido en un estándar de facto, con productos basados en S3 disponibles en almacenamiento de objetos de proveedores que apuntan a implementaciones en el sitio de los clientes. Está disponible en una amplia variedad de ofertas basadas en niveles de servicio de AWS y otros proveedores de nube, así como de fabricantes de software de almacenamiento y matrices de almacenamiento.
Almacenamiento S3: ¿Qué hay debajo del capó?
S3 es almacenamiento de objetos. Se puede almacenar cualquier tipo de datos, aunque puede que no se adapte a algunos casos de uso de aplicaciones, como bases de datos, y estos pueden incluir documentos, vídeos e imágenes.
Los objetos se almacenan con un identificador único. Esto es lo que distingue el almacenamiento de objetos del archivo y bloque tradicional. No existe una jerarquía de sistema de archivos. Debajo de las sábanas, los datos de almacenamiento de objetos pueden estar en cualquier ubicación, con su identificación única apuntando a ella.
Los datos de S3 también tienen metadatos, algunos de los cuales son generados por el sistema y comprenden variables relacionadas con la administración de objetos, como marcas de fecha, niveles de servicio, tamaño, tipo de contenido, cifrado, control de versiones, zona e información de carga. Mientras tanto, los clientes y usuarios pueden configurar metadatos para fines de almacenamiento y gestión de datos que pueden incluir detalles relevantes para la clasificación de datos y la actividad del usuario.
La carga de un único objeto S3 tiene un máximo de 160 GB. Pero los objetos pueden tener un tamaño de hasta 5 TB y cargarse en una estructura de varias partes (hasta 10 000 partes) a través de la GUI, la línea de comandos o la API.
¿Cuál es la estructura del almacenamiento de objetos de S3?
Los objetos S3 se almacenan en depósitos. Estos son fundamentales para el almacenamiento S3 y su creación es específica de las regiones de Amazon, lo que puede traer consigo costos, disponibilidad y características regulatorias particulares.
Los clientes crean depósitos y controlan el acceso a los depósitos, crean reglas de ciclo de vida para los objetos en los depósitos, realizan un seguimiento de los costos, gestionan la replicación, realizan un seguimiento de las solicitudes de acceso, utilizan el bloqueo de objetos y reciben alertas, entre otras cosas.
La administración de depósitos y los objetos que contienen se realiza a través de la consola S3 (si la está usando en AWS). Aquí puede utilizar la GUI de la consola para cargar, descargar, buscar y administrar objetos.
También hay carpetas en S3, pero son más como una etiqueta para agrupar objetos y no un elemento fundamental de su funcionamiento, como los depósitos. Las carpetas, por ejemplo, no tienen relevancia para la API de S3.
¿Qué comandos utiliza S3?
El almacenamiento S3 se basa en métodos o verbos HTTP principales que incluyen GET, PUT, DELETE, etc., y se accede a ellos a través de la GUI del navegador de AWS, la línea de comandos y mediante API. Los clientes pueden utilizar estos comandos para crear, enumerar, cambiar y eliminar depósitos; controlar el acceso a depósitos y objetos y recibir notificaciones sobre el acceso; y cargar, descargar, copiar y mover objetos y sincronizarlos con directorios locales.
Los comandos pueden pasar a través de la línea de comandos para un trabajo único e integrarse en scripts programados, etc., o pasar a través de API al código de la aplicación, con toda la gama disponible para autorización, creación de depósitos, obtención, colocación, copia, lista, acceso a metadatos, cargas y descargas.
¿Qué clases de almacenamiento existen en S3?
Las clases de almacenamiento de AWS S3 varían desde aquellas destinadas a ser utilizadas con objetos a los que se accede con frecuencia hasta aquellas destinadas a casos de uso de archivos.
En el extremo del espectro al que se accede con frecuencia, se incluyen S3 Standard y S3 Express One Zone, que brindan acceso de milisegundos en una única zona de disponibilidad.
S3 Standard-IA y S3 One Zone-IA son la versión del estándar S3 a la que se accede con poca frecuencia. Cobran una tarifa de recuperación, pero aún ofrecen acceso de milisegundos y apuntan a cargas de trabajo de respaldo y datos que pueden ser más antiguos pero a los que se puede acceder con relativa rapidez cuando es necesario.
Las clases de almacenamiento de AWS para objetos a los que se accede con poca frecuencia son Glacier Instant Retrieval (acceso de milisegundos), Glacier Flexible Retrieval (minutos) y Deep Archive (de 12 a 48 horas).
Además, existe S3 Intelligent-Tiering, en el que, por un cargo, AWS rastrea el acceso a los datos y lo traslada al nivel más barato según los patrones de uso.
¿Para qué casos de uso es adecuado S3?
Por naturaleza, el almacenamiento S3 (y el almacenamiento de objetos en general) no es el más adecuado para todos los tipos de casos de uso.
El almacenamiento de objetos puede manejar casi cualquier tipo de datos, es muy escalable, puede incluir metadatos enriquecidos y es rentable. Pero, por lo general, no es muy rápido de acceder (en comparación con el almacenamiento en bloque para bases de datos, por ejemplo) y carece del tipo de consistencia que viene con ese tipo de almacenamiento transaccional de alto rendimiento.
Todo eso hace que S3 sea adecuado para casos de uso de almacenamiento masivo y para datos no estructurados, como copias de seguridad, distribución de contenido, como repositorio de recuperación ante desastres y para conjuntos de datos de análisis e inteligencia artificial en lagos de datos, por ejemplo.
¿Qué opciones de S3 locales o privadas existen?
AWS ofrece su propio almacenamiento S3 local a través de Outposts, que permite mantener los datos en el sitio y cerca de las aplicaciones o cumplir con los requisitos de ubicación de los datos. Pero S3 es fundamentalmente almacenamiento de objetos de datos a los que se accede a través de verbos HTTP y API REST, por lo que es muy posible que cualquier proveedor ofrezca acceso de forma compatible.
Existen muchos otros proveedores de almacenamiento local compatible con S3, incluidos Cloudian (software de almacenamiento HyperStore), Dell (ECS), Minio, NetApp (en sus productos Ontap y StorageGrid), Pure Storage, QNAP, Red Hat, Scality (también ofrecido a través de HPE) y StoneFly.