
Equipo de almacenamiento de objetos S3 ha traducido un artículo sobre qué criterios son importantes a la hora de elegir un almacenamiento de objetos. A continuación, el texto desde la perspectiva del autor.
Cuando se habla de almacenamiento de objetos, generalmente, la gente solo piensa en una característica: el precio por TB/GB. Por supuesto, esta métrica es importante, pero limita el enfoque y reduce el almacenamiento de objetos a una herramienta para almacenar archivos archivados. Además, este enfoque disminuye la importancia del almacenamiento de objetos en el stack tecnológico de la empresa.
Al elegir un almacenamiento de objetos, vale la pena prestar atención a cinco características:
- rendimiento;
- escalabilidad;
- compatibilidad con S3;
- respuesta a fallas;
- integridad.
Estas cinco características son nuevas métricas para el almacenamiento de objetos, junto con el costo. Analicemos todas ellas.
Rendimiento
Los tradicionales sistemas de almacenamiento de objetos no se caracterizan por un alto rendimiento. Los proveedores de servicios han sacrificado constantemente este aspecto en su búsqueda de precios bajos. Sin embargo, con los modernos sistemas de almacenamiento de objetos, todo es diferente.
La velocidad de varios sistemas de almacenamiento se aproxima o incluso supera a Hadoop. Los requisitos modernos de velocidad de lectura y escritura varían desde 10 GB/s para discos duros, hasta 35 GB/s para NVMe.
Tal ancho de banda es suficiente para Spark, Presto, Tensorflow, Teradata, Vertica, Splunk y otros modernos frameworks de computación en el stack analítico. El hecho de que las bases de datos MPP se configuren para sistemas de almacenamiento de objetos indica que se utilizan cada vez más como almacenamiento principal.
Si su sistema de almacenamiento no proporciona la velocidad necesaria, no podrá usar los datos ni extraerles valor. Incluso si extrae datos de un almacenamiento de objetos a una estructura de procesamiento en memoria, aún se requerirá ancho de banda para transferir datos hacia y desde la memoria. Los sistemas de almacenamiento de objetos obsoletos no tienen suficiente capacidad.
Este es un punto clave: la nueva métrica de rendimiento es el ancho de banda, no la latencia. Esta se requiere para datos escalables, y es la norma en la infraestructura de datos moderna.
Y aunque las pruebas de rendimiento son una buena forma de determinar el rendimiento, no se puede medir con precisión hasta que la aplicación se ejecute en el entorno. Solo después de ello se puede identificar dónde está el cuello de botella: en el software, los discos, la red o en el nivel computacional.
Escalabilidad
La escalabilidad se refiere al número de petabytes que se pueden alojar en un solo espacio de nombres. Los proveedores afirman tener una escalabilidad sencilla, pero omiten que a medida que se escalan, los sistemas monolíticos masivos se vuelven frágiles, complejos, inestables y costosos.
Un nuevo indicador de escalabilidad es el número de espacios de nombres o clientes que puedes atender. Esta métrica se obtiene directamente de los hiperescaladores, donde los bloques de almacenamiento son pequeños, pero se escalan hasta miles de millones de unidades. En general, es una métrica de la nube.
Cuando los bloques estándar son de tamaños pequeños, es más fácil optimizarlos, es decir, garantizar seguridad, control de acceso, gestión de políticas, ciclo de vida y actualizaciones sin interrumpir el servicio. Y al final, asegurar el rendimiento. El tamaño del bloque de construcción es una función de la administrabilidad del área de falla, así es como se construyen los sistemas altamente resistentes.
La multi-tenencia tiene muchas características. Si bien el parámetro se refiere a cómo las organizaciones proporcionan acceso a datos y aplicaciones, también se relaciona con las aplicaciones mismas y la lógica de su aislamiento entre sí.
Características del enfoque moderno de la multi-tenencia:
- En un corto período, el número de clientes puede aumentar de cientos a millones.
- Los clientes están completamente aislados entre sí. Esto les permite ejecutar diferentes versiones del mismo software y almacenar objetos con configuraciones, permisos, funciones, niveles de seguridad y mantenimiento diversos. Esto es necesario cuando se escalan nuevos servidores, actualizaciones y regiones geográficas.
- El almacenamiento se escala de manera elástica, los recursos se proporcionan bajo demanda.
- Cada operación es gestionada por API y se automatiza sin intervención humana.
- El software se puede alojar en contenedores y utilizar sistemas de orquestación estándar, como Kubernetes.
Compatibilidad con S3
Amazon S3 API — el estándar para almacenamiento de objetos. Cada proveedor de software para almacenamiento de objetos afirma ser compatible con él. La compatibilidad con S3 es binaria: o se implementa en su totalidad o no se implementa en absoluto.
En la práctica, pueden surgir cientos o miles de escenarios límite donde algo sale mal al usar almacenamiento de objetos. Esto es especialmente cierto con los proveedores de software y servicios propietarios. Sus casos de uso principales son la archivación directa o la copia de seguridad, por lo que hay pocas razones para invocar la API; las opciones de uso son homogéneas.
Las ventajas del software de código abierto son notables. Cubre la mayoría de los escenarios límite, considerando el tamaño y la diversidad de aplicaciones, sistemas operativos y arquitecturas de hardware.
Todo esto es importante para los desarrolladores de aplicaciones, por lo que vale la pena probar cómo funciona la aplicación con los proveedores de almacenamiento. El código abierto simplifica el proceso: es más fácil entender qué plataforma se adapta a su aplicación. El proveedor puede ser utilizado como un único punto de entrada a los almacenamiento, lo que significa que satisfará sus necesidades.
El código abierto significa: las aplicaciones no están atadas a un proveedor y son más transparentes. Esto proporciona un ciclo de vida de la aplicación más largo.
Y algunas observaciones más sobre el código abierto y S3.
Si está ejecutando una aplicación para trabajar con grandes datos, S3 SELECT mejora drásticamente el rendimiento y la eficiencia. Esto se logra al usar SQL para extraer solo los objetos que necesita del almacenamiento.
Un punto clave es el soporte para notificaciones de buckets. Las notificaciones de buckets facilitan la computación sin servidor, un componente importante de cualquier arquitectura de microservicios que se ofrece como un servicio. Dado que el almacenamiento de objetos es efectivamente almacenamiento en la nube, esta capacidad se vuelve crucial cuando las aplicaciones en la nube utilizan almacenamiento de objetos.
Finalmente, la implementación de S3 debe admitir las interfaces de cifrado del servidor Amazon S3: SSE-C, SSE-S3, SSE-KMS. Aún mejor si S3 soporta protecciones contra accesos no autorizados que sean realmente seguras.
Reacción ante fallos
Un indicador que probablemente se pasa por alto a menudo es cómo el sistema maneja las fallas. Los fallos ocurren por diversas razones y el almacenamiento de objetos debe gestionarlos todos.
Por ejemplo, hay un único punto de fallo, cuya métrica es cero.
Desafortunadamente, muchos sistemas de almacenamiento de objetos utilizan nodos especiales que deben activarse para que el clúster funcione correctamente. Estos incluyen nodos de nombre o servidores de metadatos, lo que crea un único punto de fallo.
Incluso donde se prevén múltiples puntos de fallo, lo primordial es la capacidad de soportar fallos catastróficos. Los discos fallan, los servidores se descomponen. El punto clave es desarrollar software diseñado para manejar fallos como un estado normal. Cuando un disco o nodo falla, este software continuará funcionando sin cambios.
La protección incorporada contra la eliminación y degradación de datos garantiza: puedes perder tantos discos o nodos como bloques de paridad tengas, normalmente es la mitad de los discos. Y solo entonces el software no podrá recuperar los datos.
La falla rara vez se prueba bajo carga, pero ese tipo de prueba es esencial. La simulación de una falla bajo carga mostrará los costos acumulativos incurridos después de la falla.
Consistencia
Un indicador de consistencia del 100% también se llama consistencia estricta. La consistencia es un componente clave de cualquier sistema de almacenamiento, pero la consistencia estricta se encuentra bastante rara vez. Por ejemplo, Amazon S3 ListObject no es estrictamente consistente, solo es consistente al final.
¿Qué se entiende por consistencia estricta? Para todas las operaciones después de una operación PUT confirmada debe cumplirse lo siguiente:
- El valor actualizado es visible al leer desde cualquier nodo.
- La actualización está protegida por la reserva ante la falla de un nodo.
Esto significa: si se tira del enchufe en medio de una escritura, no se perderá nada. El sistema nunca devuelve datos corruptos o desactualizados. Esta es una alta barra que importa en muchos escenarios: desde aplicaciones transaccionales hasta respaldo y recuperación.
Conclusión
Estas son nuevas métricas de almacenamiento de objetos que reflejan los modelos de uso en organizaciones modernas, donde el rendimiento, la consistencia, la escalabilidad, los dominios de fallo y la compatibilidad con S3 son bloques de construcción para aplicaciones en la nube y análisis de grandes datos. Recomiendo utilizar esta lista junto con el precio al crear pilas de datos modernas.
Sobre el almacenamiento de objetos de Mail.ru Cloud Solutions: .
Qué más leer:
- .
- .
- .
Fuente: habr.com
