4 puntos por GN⁺ 2023-07-28 | 1 comentarios | Compartir por WhatsApp

Construcción y operación de S3

  • S3 es la sigla de Amazon Simple Storage Service y se refiere a un sistema de almacenamiento a gran escala.
  • Andy Warfield trabajó en S3 y llegó a tener una comprensión amplia del sistema.
  • S3 es un servicio que abarca desde la experiencia de rendimiento del cliente hasta la mecánica de los discos duros.

Hace 17 años, en un campus universitario muy lejano...

  • S3 se lanzó el 14 de marzo de 2006 y este año cumple 17 años.
  • Warfield terminó su doctorado en la Universidad de Cambridge, participó en el proyecto Xen y luego fundó una startup llamada XenSource.
  • XenSource creció y fue adquirida por Citrix, y Warfield aprendió mucho sobre crecimiento del negocio y gestión de equipos.

Cómo funciona S3

  • Después de unirse a Amazon, Warfield aprendió cómo funciona S3 de Seth Markle, uno de los primeros ingenieros de S3.
  • S3 es un servicio de object storage con una API HTTP REST, compuesto por frontend, servicio de namespace, una flota de almacenamiento con discos duros y una flota que realiza trabajos en segundo plano.
  • S3 está compuesto por cientos de microservicios, y la interacción entre equipos se basa en contratos a nivel de API.

Observaciones iniciales

  • S3 es un ecosistema en evolución continua que va más allá del software e incluye hardware y personas.
  • La escala de S3 está formada por un conjunto de servicios escalados horizontalmente en cada componente, por lo que toma tiempo entender la magnitud del sistema.

Escala técnica: la física del almacenamiento

  • S3 es un sistema enorme que utiliza millones de discos duros.
  • Los discos duros representan una maravilla de tecnología e innovación, y ofrecen una gran eficiencia de costos.

Gestión térmica: ubicación de datos y rendimiento

  • En S3 se realizan optimizaciones para resolver el problema de la 'gestión térmica', distribuyendo de forma uniforme las solicitudes de I/O entre muchos discos duros.

Replicación: ubicación de datos y durabilidad

  • S3 usa esquemas de redundancia como replicación y erasure coding para garantizar la durabilidad de los datos y gestionar el calor.

El impacto de la escala: estrategias de ubicación de datos

  • Al distribuir los datos lo más ampliamente posible entre la mayor cantidad de discos, se logra que los datos de cada cliente ocupen una porción muy pequeña en cada disco, consiguiendo así aislamiento de carga de trabajo.

El factor humano

  • La complejidad de S3 no se debe solo a factores técnicos, sino también al factor humano.
  • Amazon fomenta que los ingenieros y equipos fallen rápido y de forma segura, y que se enfoquen en ofrecer almacenamiento de alta durabilidad.

Ampliar mi propia escala: resolver problemas difíciles que empiezan y terminan con la 'ownership'

  • Warfield experimentó en Amazon una expansión de su propia escala personal y aprendió sobre la escala del software, las personas y el negocio.
  • En Amazon hay un fuerte énfasis en la 'ownership', lo que ayuda a entender la estructura organizacional y el enfoque de ingeniería.

La opinión de GN⁺

  • S3 es más que un simple servicio de almacenamiento: es un ecosistema complejo donde se combinan hardware, software y factor humano.
  • Este artículo ofrece ideas valiosas para ingenieros de software principiantes que quieren entender la escala y complejidad de S3.
  • La cultura de 'ownership' de Amazon es un elemento importante que motiva a los equipos y a las personas a innovar con un mayor sentido de responsabilidad.

1 comentarios

 
GN⁺ 2023-07-28
Opiniones de Hacker News
  • Que la tasa de error sea de 1 por cada 10^15 solicitudes es algo que ocurre con frecuencia en el mundo real, y es algo que debe considerarse en S3.

    • Cuando trabajaba en AWS, recuerdo que a la escala de S3, los eventos de una en mil millones ocurren todos los días, y hay que considerar y manejar incluso eventos con una probabilidad tan baja que normalmente no valdría la pena preocuparse por ellos.
    • Me alegra leer sobre ShardStore; en particular, me impresionan la verificación formal, las pruebas basadas en propiedades y demás. La generación anterior de servicios era famosa por tener muchos bugs, pero al menos estaba bien diseñada gracias a los ingenieros de S3, obsesionados con fallar de forma segura para evitar la pérdida de datos.
  • Trabajo en genómica y he manejado muchos almacenes de datos de varios petabytes durante la última década.

    • Por mi experiencia usando distintos sistemas de almacenamiento como AWS S3, GCP GCS, Ceph, Gluster y sistemas de HP, valoro mucho el esfuerzo que implica operar estos sistemas.
    • La ventaja de compartir los IOPS de disco con muchísimos otros clientes es enorme, y mitigarlo en un solo sistema es muy difícil.
    • En el caso de clústeres de hardware colocalizado, tuvimos que personalizar el sistema de lotes para tratar el IO en trabajos grandes como un recurso asignable, igual que la RAM o el CPU.
    • S3 y GCP son caros, pero su rendimiento vale lo que cuestan.
  • Las cosas que podríamos construir si S3 usara un protocolo basado en OAuth2 para delegar acceso de lectura/escritura.

    • Necesitamos un protocolo basado en HTTP para que las apps puedan acceder a datos en nombre del usuario.
    • Google Drive es lo más cercano a eso, pero tiene el problema de ser un único proveedor; es una lástima que remoteStorage no haya ganado popularidad.
    • Espero que Solid tenga éxito, pero se siente complejo.
    • Mi propia solución al problema es gemdrive.io, pero por ahora estoy concentrado en otras partes de la pila self-hosted.
  • Explicación de las especificaciones del disco duro IBM RAMAC de 1956.

    • La especificación de capacidad de almacenamiento: 3.75 MB, costo: aproximadamente $9,200 por terabyte, puede no ser correcta.
    • Otros sitios sugieren un precio de compra de unos $10,000 por megabyte, así que la especificación debería ser $9,200 por megabyte.
  • Manejar la autenticación en sistemas distribuidos es muy difícil.

    • A la escala de AWS, la autenticación parece magia, y AWS tiene un modelo de permisos muy rico, donde los cambios de autenticación se propagan por la infraestructura a velocidad de submilisegundos.
    • A diferencia de otros servicios, S3 tiene los permisos en el recurso, posiblemente por razones de velocidad.
  • Como ingeniero muy experimentado con una agenda técnica, dedico más tiempo a desarrollar y explicar claramente el problema que a aportar ideas.

    • Para desempeñar un rol exitoso, me enfoco en aclarar el problema y respaldar la solución, buscando cómo ayudar a que un equipo de ingeniería sólido se adueñe de la solución.
  • Es bueno ver a empleados de Amazon hablar públicamente sobre el funcionamiento interno de S3.

    • Me gustaría escuchar más sobre cómo funciona Glacier; como aún no se ha revelado el medio de almacenamiento que usa, hay mucha especulación.
  • La parte que explica el cabezal del disco duro comparándolo con un avión 747.

    • Es un trabajo de tal precisión que equivale a que un avión dé 25,000 vueltas a la Tierra y cometa un solo error al no tocar una brizna de pasto.
  • Volviendo a la época de S3 KeyMap, aprendimos que incluso después de identificar los objetos/particiones/buckets más calientes, no bastaba con moverlos para resolver el problema.

    • La solución real fue dividir la carga de particiones del host en cuartiles y mover las particiones del segundo cuartil al host con menos carga.
    • Esto hizo que la tasa de error pasara de un ~1% estable a días sin errores, por lo que actualizamos las alertas para que fueran mucho más estrictas.
  • S3 no es solo almacenamiento, es un estándar.

    • En varios lugares ofrecen almacenamiento compatible con S3; no tengo claro qué tan abierto es el estándar ni si hay que pagarle a Amazon para poder decir "compatible con S3", pero es algo muy genial.