Clases De Almacenamiento S3

Introducción
En el artículo anterior de esta serie te hablé a modo introductorio de los buckets S3, que son y para que sirven. S3 es uno de los servicios más usados de AWS y a pesar de que no es dicícil almacenar tus ficheros en este servicio, hay muchos aspectos que debes dominar para poder sacarle el mayor provecho. En este arículos estaremos hablando de las clases de almacenamiento que tenemos disponibles en S3.
Como influyen las clases de almacenamiento?
Con respecto a las clases de almacenamiento debes tener en cuenta que influyen en los siguientes aspectos de tus objetos almacenados en S3:
- Precio de almacenamiento
- Precio de obtención de datos
- Disponibilidad
- Tiempo de demora de obtención de datos
- Cargos por duración mínima
La durabilidad no varía entre las distintas clases de almacenamiento de S3. Siempre nos provee alta durabilidad, 99.999999999% (si, son 11 9s 😂), que significa que en caso de almacenar 10 millones de objetos, puedes perder 1 cada 10000 años.
Básicamente debes analizar en dependencia del patrón de acceso que se cumpla para los objetos almacenados en los bucket S3, que clase de almacenamiento es mejor teniendo en cuenta los aspectos mencionados anteriormente. Antes de pasar a ver cada una de las clases de almacenamiento, debemos entender estos términos:
Precio de almacenamiento
Representa cuanto cobrará AWS por mantener almacenados los objetos en los bucket S3.
Precio de obtención de datos
Representa cuanto cobrará AWS cada vez que pidas un objeto específico, o sea, esto solo aplica cuando obtienes un objeto.
Disponibilidad
Sirve para medir el tiempo que nuestros objetos estarán disponibles, por ejemplo, la mayoría de las clases presentan una disponibilidad de 99.99%.
Una disponibilidad del 99.99% implica que el servicio no estará disponible 53 minutos al año.
Tiempo de demora de obtención de datos
Representa el tiempo que demora S3 en devolvernos un objeto, puede ser instantáneo, en el orden de minutos, y hasta en el orden de varias horas. Muy importante analizar esto a la hora de escoger la clase de almacenamiento.
Cargos por duración mínima de almacenamiento
En caso que aplique, representa el mínimo tiempo de almacenamiento que nos cobrará AWS por cada objeto. Por ejemplo, si para una clase este valor es de 30 días, significa que por cada objeto deberemos pagar por el equivalente a tenerlo 30 días almacenados, incluso aunque lo eliminemos antes de este período o hagamos la transición hacia otra clase de almacenamiento.
S3 Estándar
Esta es la clase que por defecto tienen todos los objetos que almacenamos en nuestro bucket S3. Es usada para almacenar datos a los que se accede frecuentemente. Provee alta durabilidad y rendimiento. Replica los objetos en un mínimo de tres zonas de disponibilidad, garantizando un 99.99% de disponibilidad. Presenta el mayor precio de almacenamiento de todas las clases pero su precio de obtención de datos es nulo. Además de esto no aplican los cargos por duración mínima de almacenamiento y la obtención de datos es instantánea.
Casos de uso
- Hosting de sitios web estáticos.
- Servicio de almacenamiento temporal, por ejemplo cuando hace falta mantener los logs de una aplicación por un tiempo de un día. En este caso es viable porque para esta clase no aplican los cargos por duración mínima de almacenamiento.
S3 Estándar Acceso Poco Frecuente
Esta clase de almacenamiento (S3 Standard IA) se usa para almacenar objetos cuyo acceso es poco frecuente pero que aún así dichos objetos deben ser retornados instantáneamente. Replica los objetos en un mínimo de tres zonas de disponibilidad, garantizando un 99.99% de disponibilidad. A esta clase si aplican los cargos por una duración mínima de 30 días de almacenamiento y la obtención de datos es intantánea. El precio de almacenamiento es menor que el aplicado en la clase S3 Estándar pero a su vez a esta clase si aplica el precio de obtención de datos, el cual es medido por GB.
Casos de uso
- Backups de datos.
- Cualquier aplicación en la que los datos de acceso poco frecuente deban permanecer disponibles por un largo tiempo, pero que deben ser devueltos inmediatamente.
S3 Una Zona Acceso Poco Frecuente
Esta clase de almacenamiento (S3 One Zone IA) se usa para almacenar objetos con las mismas características que la clase anterior con la diferencia que deben ser fácilmente reproducibles ya que esta clase almacena los datos en solo una zona de disponibilidad, provocando que la disponibilidad para esta clase sea de 99.95%, la más baja entre todas las clases de almacenamiento que provee S3. Es más barata que la clase S3 Estándar de Acceso Poco Frecuente, aplican los cargos por una duración mínima de 30 días de almacenamiento y la obtención de datos es intantánea.
Casos de uso
- Solución más barata para almacenar datos de acceso poco frecuente pero que deban ser devueltos inmediatamente.
- Aplicaciones que no requieren la disponibilidad y resilencia de las clases que hemos visto hasta el momento.
- Para almacenar datos que pueden volver a generarse fácilmente
S3 Intelligent Tiering
Esta clase tiene la capacidad de asignar continuamente clases a nuestros objetos cada vez que el patrón de acceso a los mismos cambie. Es muy útil desde el punto de vista operacional debido a que mueve las clases de los objetos a la más barata basado en el patrón de acceso a los mismos. Aplican los cargos por una duración mínima de 30 días de almacenamiento y no aplican los cargos de obtención de datos. Esta clase mueve las clases entre los objetos de la siguiente forma:
- S3 estándar por defecto (automático)
- S3 estándar Acceso Poco Frecuente cuando el objeto no ha sido accedido durante 30 días (automático)
- S3 Glacier Expédito cuando el objeto no ha sido accedido durante 90 días (automático)
- S3 Glacier Estándar cuando el objeto no ha sido accedido por más de 90 días (configurable)
- S3 Glacier Deep Archive cuando el objeto no ha sido accedido por más de 180 días (configurable)
Casos de uso
- Útil en aplicaciones cuyo patrón de acceso a los objetos es impredecible.
- Para buckets que contienen algunos datos que son accedidos frecuentemente y otros cuyo acceso es poco frecuente.
- Si el patrón de acceso a los datos varía todo el tiempo.
- Si los datos son accedidos por los usuarios en períodos de tiempo variables.
- Si se quiere evadir las pólizas de ciclo de vida.
S3 Glacier
Esta clase es muy útil para archivar datos. Es una solución de almacenamiento muy barata para datos que no necesitan ser devueltos instantáneamente. Replica los datos en un mínimo de 3 zonas de disponibilidad, garantizando una disponibilidad de 99.99%. Aplican los cargos por una duración mínima de 90 días y aplica altos precios de obtención de datos. Se pueden mover directamente los objetos de S3 Estándar o S3 Estándar IA hacia esta clase usando las pólizas de ciclo de vida.
Casos de uso
- Archivar datos por cierta cantidad de años antes de que los datos puedan ser eliminados.
Opciones de devolución
Expedito
- Provee acceso rápido a un grupo de los objetos archivados.
- Permite acceso a los datos en un período que varía de 1 - 5 minutos siempre y cuando el archivo no exceda los 250 MB.
- Desde el punto de vista operacional debe haber suficiente capacidad de retrieval para poder ejecutar esta operación.
Estándar
- Es la opción por defecto cuando se devuelve un objeto con la clase Glacier.
- Permite acceso a los datos en un período que varía de 3 - 5 horas.
Bulk
- Es la opción de obtención de datos más barata.
- Devuelve una gran catidad de datos en menos de 12 horas.
- Por lo general completa el proceso entre 5 - 12 horas.
S3 Glacier Deep Archive
Esta clase ofrece el menor costo de almacenamiento en S3. Soporta retención de largo plazo y preservación digital de los datos. Usado principalmente para retener datos por más de 7 años. Replica los datos en al menos 3 zonas de disponibilidad. Aplican los cargos por una duración mínima de 180 días.
Casos de uso
- Archivar datos que muy rara vez serán accedidos y que no tengan un tiempo de obtención estricto.
Opciones de devolución
Estándar
- Es la opción de devolución de datos por defecto en eesta clase de almacenamiento.
- Los datos son restaurados en 12 horas.
Bulk
- Más barata que la opción Estándar.
- Los datos son restaurados en 48 horas.
Recomendación
A continuación te comparto la forma en que decido que clase de almacenamiento uso cuando trabajo con S3:
- Si los datos son accedidos frecuentemente, por ejemplo, estoy almacenando los ficheros de un sitio web estático en el bucket, utilizo la clase estándar.
- Si los datos no son accedidos frecuentemente pero tienen que ser devueltos instáneamente, decido entre S3 Estándar Acceso Poco Frecuente y S3 Una Zona Estándar Acceso Poco Frecuente basado en si los datos pueden ser reproducibles fácilmente. En caso que los datos no tengan que ser devueltos instantáneamente decido basado en la frecuencia con la que se accede a los datos, si es una vez cada tres meses, uso Glacier con devolución expédita, si los datos son accedidos una vez al año, uso Glacier con devolución estándar o bulk, y si los datos serán accedidos menos de una vez al año, uso Glacier Deep Archive.
- Si no está claro el patrón de acceso a los objetos, simplemente uso Intellingent Tiering para que las clases de almacenamiento de cada objeto vaya cambiando en dependencia del patrón de acceso.
Nos vemos pronto
Esto es todo por ahora relacionado al segundo artículo de esta serie donde estaré brindándote una guía completa sobre los buckets de S3. En el próximo artículo estaremos hablando sobre las pólizas de ciclo de vida. Nos vemos pronto.
Contenido relacionado
- Que Son Los Bucket S3 Y Para Que Sirven?
- Aplicación Práctica De Las Funciones Cloudfront
- Desplegando Nuestro Blog Sin Usar Servidores
- Mi Trayectoria en AWS