AWS EFS vs EBS vs S3 (¿diferencias y cuándo usarlo?) [cerrado]
Según el título de esta pregunta, ¿cuáles son las diferencias prácticas entre AWS EFS, EBS y S3?
Mi comprensión de cada uno:
- S3 es una instalación de almacenamiento accesible desde cualquier lugar.
- EBS es un dispositivo que puedes montar en EC2
- EFS es un sistema de archivos que puedes montar en EC2
Entonces, ¿por qué debería utilizar EBS en lugar de EFS? ¿Parece que tienen los mismos casos de uso pero diferencias semánticas menores? Aunque EFS se replica en AZ, EBS es solo un dispositivo montado. Supongo que no entiendo bien EBS, por lo que no puedo distinguirlo.
¿Por qué elegir S3 en lugar de EFS? Ambos almacenan archivos, escalan y se replican. Supongo que con S3 tienes que usar el SDK, mientras que EFS es un sistema de archivos y puedes usar métodos de E/S estándar del lenguaje de programación que elijas para crear archivos. ¿Pero es esa la única diferencia real?
Respuesta de una palabra: DINERO :D
1 GB para almacenar en US-East-1: (Actualizado el 20 de diciembre de 2016)
- Glaciar: $0,004/mes (Nota: importante recorte de precios en 2016)
- S3: $0,023/mes
- S3-IA (anunciado en 2015.09): $0.0125/mes (+$0.01/cargo de recuperación de concierto)
- EBS: $0,045-0,1/mes (depende de la velocidad, SSD o no) + costos de IOPS
- EFS: $0,3/mes
Otras opciones de almacenamiento, que pueden usarse para almacenar datos temporalmente mientras/antes de procesarlos:
- redes sociales
- SQS
- corriente de kinesis
- DynamoDB, SimpleDB
Los costos anteriores son sólo muestras. Puede haber diferencias según la región y puede cambiar en cualquier momento. También hay costos adicionales por la transferencia de datos (a Internet). Sin embargo muestran una relación entre los precios de los servicios .
Hay muchas más diferencias entre estos servicios:
EFS es:
- Disponible de forma general (fuera de vista previa), pero es posible que aún no esté disponible en su región
- Sistema de archivos de red (eso significa que puede tener mayor latencia pero se puede compartir entre varias instancias; incluso entre regiones)
- Es caro en comparación con EBS (~10 veces más) pero ofrece funciones adicionales.
- Es un servicio de alta disponibilidad.
- Es un servicio gestionado.
- Puede adjuntar el almacenamiento EFS a una instancia EC2
- Puede ser accedido por múltiples instancias EC2 simultáneamente
- Desde 2016.dec.20 es posible conectar su almacenamiento EFS directamente a servidores locales a través de Direct Connect. ()
EBS es:
- Un almacenamiento en bloque (por lo que es necesario formatearlo). Esto significa que puede elegir qué tipo de sistema de archivos desea.
- Como es un almacenamiento en bloque, puedes usar Raid 1 (o 0 o 10) con múltiples almacenamientos en bloque.
- es realmente rapido
- Es relativamente barato
- Con los nuevos anuncios de Amazon, puede almacenar hasta 16 TB de datos por almacenamiento en SSD.
- Puede tomar una instantánea de un EBS (mientras aún se está ejecutando) por motivos de respaldo
- Pero sólo existe en una región particular. Aunque puede migrarlo a otra región, no puede acceder a él simplemente entre regiones (solo si lo comparte a través de EC2; pero eso significa que tiene un servidor de archivos)
- Necesita una instancia EC2 para adjuntarla
- Nueva característica (15 de febrero de 2017): ahora puede aumentar el tamaño del volumen, ajustar el rendimiento o cambiar el tipo de volumen mientras el volumen está en uso. Puede continuar usando su aplicación mientras el cambio entra en vigencia.
S3 es:
- Un almacén de objetos (no un sistema de archivos).
- Puede almacenar archivos y "carpetas", pero no puede tener bloqueos, permisos, etc. como lo haría con un sistema de archivos tradicional.
- Esto significa que, de forma predeterminada, no puedes simplemente montar S3 y usarlo como tu servidor web.
- Pero es perfecto para almacenar tus imágenes y vídeos para tu sitio web.
- Ideal para archivado a corto plazo (por ejemplo, unas pocas semanas). También es bueno para el archivado a largo plazo, pero Glacier es más rentable.
- Ideal para almacenar registros
- Puede acceder a los datos de todas las regiones (pueden aplicarse costos adicionales)
- Altamente disponible, redundante. Básicamente, la pérdida de datos no es posible (99,999999999% de durabilidad, 99,9 de tiempo de actividad SLA)
- Mucho más barato que EBS.
- Puede publicar el contenido directamente en Internet, incluso puede tener un sitio web completo (estático) funcionando directamente desde S3, sin una instancia EC2.
El glaciar es:
- Almacenamiento de archivos a largo plazo
- Extremadamente barato de almacenar.
- Potencialmente muy caro de recuperar
- Toma hasta 4 horas "volver a leer" sus datos (por lo tanto, almacene solo los elementos que sepa que no necesitará recuperar durante mucho tiempo)
Como se mencionó en el comentario de JDL, hay varios aspectos interesantes en términos de precios. Por ejemplo, Glacier, S3, EFS le asigna el almacenamiento en función de su uso, mientras que en EBS debe predefinir el almacenamiento asignado. Lo que significa que necesitas sobreestimar. (Sin embargo, es fácil agregar más almacenamiento a sus volúmenes de EBS, requiere algo de ingeniería, lo que significa que siempre "paga de más" su almacenamiento de EBS, lo que lo hace aún más costoso).
Fuente: Actualización de almacenamiento de AWS: nueva opción de almacenamiento S3 de menor costo y reducción de precio de Glacier
Me pregunto por qué la gente no destaca la razón MÁS convincente a favor de EFS. EFS se puede montar en más de una instancia EC2 al mismo tiempo, lo que permite el acceso a archivos en EFS al mismo tiempo.
(Edición de mayo de 2020, EBS ahora también admite el montaje en varios EC2 al mismo tiempo; consulte: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volumes-multi.html )
Arreglando la comparación:
- S3 es una instalación de almacenamiento accesible desde cualquier lugar.
- EBS es un dispositivo que puedes montar en EC2
- EFS es un sistema de archivos que puede montar en varias instancias EC2 al mismo tiempo
En este punto, es un poco prematuro comparar EFS y EBS: no se conoce el rendimiento de EFS ni su confiabilidad.
¿Por qué usarías S3?
- No es necesario que los archivos sean "locales" para una o más instancias EC2.
- (efectivamente) capacidad infinita
- servidor web incorporado, autenticación
Además del precio y las características, el rendimiento también varía mucho (como lo menciona el usuario1677120):
EBS
Tomado de documentos de EBS :
| EBS volume | Throughput | Throughput |
| type | MiB/s | dependent on.. |
|------------|------------|-------------------------------|
| gp2 (SSD) | 128-160 | volume size |
| io1 (SSD) | 0.25-500 | IOPS (256Kib/s per IOPS) |
| st1 (HDD) | 20-500 | volume size (40Mib/s per TiB) |
| sc1 (HDD) | 6-250 | volume size (12Mib/s per TiB) |
Tenga en cuenta que para io1, st1 y sc1 puede aumentar el tráfico de rendimiento a al menos 125 Mib/s, pero a 500 Mib/s, dependiendo del tamaño del volumen.
Puede aumentar aún más el rendimiento, por ejemplo, implementando volúmenes EBS como RAID0
EFS
Tomado de documentos de EFS
| Filesystem | Base | Burst |
| Size | Throughput | Throughput |
| GiB | MiB/s | MiB/s |
|------------|------------|------------|
| 10 | 0.5 | 100 |
| 256 | 12.5 | 100 |
| 512 | 25.0 | 100 |
| 1024 | 50.0 | 100 |
| 1536 | 75.0 | 150 |
| 2048 | 100.0 | 200 |
| 3072 | 150.0 | 300 |
| 4096 | 200.0 | 400 |
El rendimiento base está garantizado, el rendimiento en ráfaga consume los créditos que reunió mientras estaba por debajo del rendimiento base (por lo que solo tendrá esto por un tiempo limitado; consulte aquí para obtener más detalles).
T3
S3 es algo totalmente diferente, por lo que realmente no se puede comparar con EBS y EFS. Además: no hay métricas de rendimiento publicadas para S3. Puede mejorar el rendimiento descargando en paralelo (leí en algún lugar que AWS afirma que de esta manera tendría un rendimiento básicamente ilimitado) o agregando CloudFront a la mezcla.
Para agregar a la comparación: el rendimiento de lectura/escritura (ráfaga) en EFS depende de los créditos acumulados. La obtención de créditos depende de la cantidad de datos que almacene en él. Más datos -> más créditos. Eso significa que cuando solo necesita unos pocos GB de almacenamiento que se leen o escriben con frecuencia, se quedará sin créditos muy pronto y el rendimiento caerá a aproximadamente 50 kb/s. La única forma de solucionar este problema (en mi caso) era agregar archivos ficticios grandes para aumentar la tasa de obtención de créditos. Sin embargo, más almacenamiento -> más costo.