Que Son Los Bucket S3 Y Para Que Sirven?

Introducción
En esta serie te compartiré todo lo que conozco relacionado a los famosos Buckets S3. S3 es uno de los servicios más usados de AWS ya que permiten almacenar ficheros de una manera muy cómoda y segura (la seguridad va por ti 😂).
Definición de S3
El servicio de almacenamiento sencillo (S3 por sus siglas en inglés) es un servicio de almacenamiento de objetos que provee AWS. Presenta alta escalabilidad, durabilidad y disponibilidad. Es usado mayormente para almacenar ficheros estáticos que no cambian frecuentemente y permite que los objetos almacenados estén disponibles públicamente a través de Internet.
Cuando usamos S3 normalmente trabajamos con objetos y buckets. Los objetos no son más que ficheros con metadatos asociados, mientras que los bucket no son más que los contenedores donde son almacenados los objetos. Es importante tener en cuenta que no existe un límite de la cantidad de ficheros que puedes almacenar en un bucket S3 y en el mismo bucket puedes almacenar distintos tipos de ficheros, dígase música, imágenes, videos, documentos, etc. Uno de los aspectos más interesantes de S3 es que el nombre de los buckets es único globalmente, o sea, no pueden existir dos buckets S3 con el mismo nombre independientemente de que estén en distintas regiones de AWS. Por ejemplo, el bucket donde tengo almacenado todos los ficheros estáticos de este sitio web tiene como nombre compacompila-website, si tratas de crear un bucket con este mismo nombre, recibirás un error.
Carpetas (prefijos)
Para organizar mejor los objetos en nuestro bucket, tenemos “carpetas”, sin embargo, estas “carpetas”, no son las tradicionales que tenemos en nuestro sistema de ficheros, ya que S3 tiene una estructura plana, o sea, todos los objetos se almacenan al mismo nivel. En verdad estas “carpetas” actúan como prefijos en nuestro objeto. O sea, si tenemos un objeto en nuestro bucket dentro de la carpeta images, y el nombre de este objeto es cars.webp, entonces el key del objeto es images/cars.webp, el prefijo es images/ y el nombre del fichero es cars.webp. A modo de resumen, a pesar de que todos los ficheros se almacenan en el mismo nivel, podemos usar prefijos para agrupar objetos dentro de nuestro bucket.
Arquitectura física de S3
Los bucket S3 son recursos regionales que usan todos los centros de datos disponibles en la región que escogemos. Por defecto, S3 crea un réplica de nuestros objetos en todas las zonas de disponibilidad presentes en la región seleccionada. Esto nos brinda alta durabilidad de nuestros datos y disponibilidad, ya que, por ejemplo, si una región tiene 20 centros de datos, esto significa que nuestros objetos serán replicados 20 veces.
Cuando hablamos de datos, la durabilidad es la probabilidad de que un objeto permanezca intacto y accesible luego de un año.
Hosteo de sitio web
Otra característica de S3 es que nos permite alojar un sitio web a través de ficheros HTML, CSS y Javascript. Esta es una de mis características preferidas ya que nos permite desplegar sitios web estáticos (la forma en que desplegué este blog, te lo explico aquí) sin tener que administrar servidores y de una forma bastante barata. Respecto a esto es importante notar que no podemos ejecutar código del lado del servidor de esta forma.
Interfaz API
S3 es un servicio Web, por lo tanto, obtener los objetos que tenemos almacenados en un bucket, es similar a descargar ficheros de un servidor FTP. Básicamente lo que quiero decir es que nos comunicamos con S3 a través de un API que nos provee AWS. Si usáramos otro servicio como por ejemplo EFS, tendríamos que adjuntar nuestro dispositivo a nuestra instancia. Otra ventaja que esto nos da de cara a S3 es que como nos comunicamos a través de APIs, no depende de nuestro sistema operativo, distinto a como sucede con otros servicios de almacenamiento.
Limitantes
A pesar de que S3 es para mi, uno de los mejores servicios de almacenamiento que nos provee AWS, tiene algunas limitantes (no todo pueden ser ventajas 😂), aquí las presento, y es importante notar que si nuestra aplicación necesita de esto, tendríamos que valorar otro servicio:
- Modificación concurrente de ficheros
- Bloqueo de ficheros
Esto viene derivado de que S3 no soporta Interfaz de Sistema Operativo Portable (POSIX por sus siglas en inglés)
POSIX se refieres a ciertos estándares que definen como debe comportarse un sistema operativo incluyendo su sistema de ficheros. Relacionado específicamente a sistemas de ficheros, asegura la consistencia y una forma predecible de que las aplicaciones interactúen con ficheros y carpetas independientemente del sistema operativo.
Nos vemos pronto
Esto es todo por ahora relacionado al primer 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 distintas clases de almacenamiento que tenemos disponibles en S3. Nos vemos pronto.
Contenido relacionado
- Aplicación Práctica De Las Funciones Cloudfront
- Desplegando Nuestro Blog Sin Usar Servidores
- Mi Trayectoria en AWS