Introducción a Amazon S3

Última actualización:

En este post aprenderemos en qué consiste el servicio de Amazon S3, cómo funciona a alto nivel y por qué es una excelente opción para centralizar archivos y datos en la nube. Además, lo comparamos con HDFS para determinar sus diferencias.

Introducción a AWS S3 Simple Storage Service

¿Qué es Amazon S3?

Amazon S3 (Simple Storage Service) es el servicio de almacenamiento de objetos de Amazon Web Services (AWS) de tipo PaaS (Platform as a Service). Es la solución más común para almacenar datos en la nube de una forma segura, eficiente y escalable.

Con este servicio, podemos almacenar información de cualquier tipo, que se tratará como objetos. Por ejemplo, podemos usar S3 para almacenar fotografías, archivos de texto, código de webs estáticas, logs, backups, vídeos, etc.

S3 es uno de los servicios más conocidos y usados de AWS. Además está totalmente integrado con la mayoría de los otros servicios ofrecidos. La alternativa en la nube de Microsoft Azure sería el servicio Azure Blob Storage.

¿Cómo se almacenan los datos? S3 Bucket

Los datos en S3 se almacenan como objetos dentro de los llamados Buckets. Un objeto es la unidad básica de almacenamiento, consiste en un fichero con un identificador y metadatos asociados. Un Bucket en Amazon S3 no es más que un directorio lógico de alto nivel en el que se encuentran los objetos, cada uno de ellos identificado con una clave. Un ejemplo de identificación de objeto puede ser el siguiente:

s3://bucket-a/2020/log.csv

El nombre del Bucket en este caso sería “bucket-a” y la clave del fichero dentro de ese Bucket “2020/log.csv”. Para acceder a los ficheros almacenados en S3 y descargarlos, existen varios métodos e interfaces: URL con autenticación, API Rest, la consola de AWS (AWS console) y los SDKs disponibles. Además, se pueden subir archivos a Amazon S3 con clientes FTP.

Al usar S3, es importante tener en cuenta las políticas de acceso, y evitar en lo posible dejar los buckets públicos. Es posible crear reglas y ACLs (Listas de Control de Acceso) para definir quién tiene acceso a los buckets y los objetos almacenados. También hacer uso de la transferencia de ficheros con el protocolo SSL.

Características de Amazon S3

Amazon S3 Logo

S3 tiene un modelo de consistencia eventual. Esto significa que es posible que inmediatamente después de la actualización de un objeto, no se devuelva la última actualización hasta que se haya propagado y replicado en el sistema de forma asíncrona. También puede ocurrir al eliminar un fichero. En este caso, podría seguir apareciendo en los listados durante un tiempo. El tiempo puede variar entre varios segundos y horas, dependiendo de factores como el tamaño de los objetos y las regiones de destino.

La disponibilidad del dato que proporciona S3 es muy alta, del 99,99% por defecto. Existen varios tipos de almacenamiento que permiten ajustar la disponibilidad a las necesidades. Además, escala verticalmente de forma transparente y nos proporciona una capacidad de almacenamiento prácticamente ilimitada acorde al uso de datos.

El coste del servicio depende de su uso, tanto en capacidad de almacenamiento usada como en peticiones de red. Este precio es muy competitivo e incluye la replicación y backups de los datos, que se gestionan de forma automática y transparente. S3 también permite almacenar datos comprimidos. De esta forma, se puede reducir el coste total.

En cuanto al rendimiento de S3, hay que tener en cuenta las latencias de conexión. En el caso de usar S3 con otros servicios de AWS, podría ser despreciable, al existir optimizaciones en las redes y encontrarse entro del mismo ecosistema. Por otro lado, si estamos usando S3 como capa de almacenamiento para nuestro sistema on-premise, es un factor muy importante a considerar respecto al uso de otras tecnologías de almacenamiento como HDFS y sus ventajas.

Amazon S3 Glacier

Amazon S3 Glacier logo

AWS también proporciona otro servicio basado en S3 llamado Amazon S3 Glacier. Este servicio está orientado a proporcionar almacenamiento de objetos duradero para archivos de datos a un precio muy reducido.

El precio de este servicio es de aproximadamente 1 euro por terabyte al mes. Ofrece varias opciones de acceso, desde minutos a horas. También existe un servicio aún más frío, y con accesos desde 12 a 48 horas para tener los datos disponibles llamado Amazon S3 Glacier Deep Archive.

El uso más común de estos servicios de Amazon S3 Glacier es para almacenar copias de seguridad. Estos ficheros no tienen la necesidad de ser accedidos al instante, y generalmente se puede sacrificar el tiempo de acceso para ahorrar costes, ya que a su vez suelen ser ficheros de gran tamaño.

Sistema de Notificaciones en AWS S3

Los Buckets de S3 tienen la capacidad de generar notificaciones cuando ocurren ciertos eventos como la creación de un objeto o su borrado. En la actualidad se soportan tres mecanismos para notificar estos eventos:

  • AWS Lambda
  • Simple Queue Service (SQS)
  • Simple Notification Service (SNS)

Amazon S3 vs HDFS

Es común comparar estas dos tecnologías como capa de almacenamiento en nuestros sistemas big data. Aun así, no dejan de ser totalmente diferentes, existiendo casos de uso para ambas. En esta sección vamos a comparar los aspectos principales de cada una de ellas para tener un buen criterio de elección.

Escalabilidad

HDFS escala horizontalmente añadiendo más almacenamiento local en más nodos. Es posible añadir discos más grandes o, la solución más común: añadir más nodos al sistema. Esta forma de aumentar su capacidad es más costosa y complicada que S3, ya que requiere la compra y el mantenimiento de más piezas de hardware que no impactan al 100% en la capacidad de almacenamiento.

Como hemos visto, S3 escala de forma automática y transparente prácticamente sin límite y sin cambios de configuración.

Precio

En cuanto al precio, hay que tener en cuenta que HDFS necesita con su configuración por defecto 3 copias de cada bloque, lo que multiplica por 3 el espacio necesario, y con ello los costes asociados.

S3 no tiene esta necesidad ya que gestiona las copias de forma transparente, y se paga por consumo.

Rendimiento

hadoop hdfs logo

El rendimiento suele ser superior en HDFS, ya que el procesamiento se realiza en el mismo host que donde se encuentra almacenado el dato. Esto hace posible tener una alta velocidad de procesamiento y de acceso al dato. S3 tiene una mayor latencia en las lecturas y escrituras por lo que en procesos de cómputo intensivos que requieren mover grandes cantidades de datos HDFS parece una mejor solución.

Conclusión

En resumen, S3 es una tecnología con una mejor escalabilidad, precios menores y con menos barreras de entrada.

Por otro lado, HDFS consigue un mejor rendimiento, y no tiene limitaciones de tamaño para los ficheros ni de formatos.

Además, hay que tener en cuenta las compatibilidades que ofrecen las tecnologías que van a ejecutar y procesar los datos almacenados en HDFS o S3. Por algunas características de S3 como la consistencia eventual o el tratamiento de objetos, no la hacen ideal para cargas de trabajo específicas sin un impacto importante en el rendimiento.

En la práctica, es común usar S3 como almacenamiento de objetos más frío que HDFS. En HDFS se almacenarán los datos accedidos frecuentemente sobre los que hacer operaciones. S3, por otro lado se convierte en el almacenamiento de objetos más barato y sobre el que se van a realizar menos accesos u operaciones.

Siguientes Pasos y Formación

Si quieres conocer más sobre la diferencia entre el almacenamiento de objetos (por ejemplo con S3) y el almacenamiento de bloques, sus ventajas y cuándo usar cada uno de ellos echa un vistazo a esta entrada en la que lo explico:

Almacenamiento de Objetos vs Almacenamiento de Bloques

Preguntas Frecuentes Amazon S3 – FAQ

¿Para qué se usa Amazon S3?

S3 es un sistema de almacenamiento de objetos escalable en la nube. Los usos más comunes son como backup de datos y archivos y aplicaciones debido al coste y a su facilidad de acceso. S3 es ideal para almacenar datos que necesitan tener una alta disponibilidad y durabilidad, que se escriben una vez pero se acceden frecuentemente.

¿Qué es un Bucket en Amazon S3?

Un Bucket de Amazon S3 es un recurso virtual que se comporta como un directorio en el que almacenar objetos (sus datos y metadatos).

¿Qué tipo de almacenamiento es S3?

S3 usa un modelo de almacenamiento de objetos para dar servicio. Cada objeto es independiente y contiene los datos, su identificador único y sus metadatos asociados.

¿Qué es Amazon S3 Glacier?

Amazon S3 Glacier es el servicio de almacenamiento de objetos de AWS con un coste reducido. Está orientado a almacenar archivos y copias de seguridad a las que no se necesite acceder al momento, y sean aceptables unos tiempos de acceso de minutos u horas.

¿Es Amazon S3 una base de datos?

No, Amazon S3 es un servicio de almacenamiento de objetos en la nube. No tiene capacidad de realizar consultas como haría una base de datos ni de establecer relaciones.


A continuación, el vídeo-resumen. ¡No te lo pierdas!


¡Echa un ojo a mi lista de reproducción de Big Data en Youtube!

Si te ayuda el contenido del blog, por favor considera unirte a la lista de correo para reconocer el trabajo!

Deja una respuesta