La creación de sistemas distribuidos requiere equipos de desarrolladores eficaces

Al crear una aplicación web en años anteriores, era común tener un servidor en un centro de datos centralizado que pudiera ejecutar su aplicación. A medida que creciera el uso, abordaría los cuellos de botella de escalabilidad a medida que surgieran.

Hoy en día, las aplicaciones web se están construyendo para escalar desde el principio. El código se ejecuta cada vez más en plataformas sin servidor, en entornos aislados virtuales que pueden existir solo durante el tiempo que se tarde en enviar una respuesta al usuario. El almacenamiento de archivos y las bases de datos se gestionan cada vez más para los desarrolladores, sin que tengan que configurar su propio hardware.

Una de las ventajas de este cambio es que el código puede vivir en el borde de la red, en los puntos de intercambio de Internet que conectan a los ISP de los consumidores con los proveedores de alojamiento en la nube, lo que permite tiempos de carga de baja latencia. Este cambio significa necesariamente que el código vive en varios servidores de todo el mundo desde el momento en que se implementa por primera vez, en lugar de cuando se necesita escalabilidad.

Los sistemas de software que, hace años, habríamos construido para ser centralizados, ahora son sistemas distribuidos. Estas prácticas incluso se están abriendo paso en los centros de datos centrales, con tecnología como Kubernetes que se está implementando para escalar aplicaciones automáticamente en contenedores virtuales.

En los últimos meses, se ha hecho evidente que algunas organizaciones de tecnología están luchando para cruzar esta brecha, en particular, las empresas en las que el software se gestiona como un monolito central (a menudo se supone que es un “monorepo”) sin estructuras de comunicación bien definidas entre los diferentes partes del sistema. Los sistemas distribuidos son efectivos en sistemas simples con estructuras de comunicación escalables.

La Ley de Conway es un adagio muy conocido en la gestión de la ingeniería de software que establece: “Cualquier organización que diseñe un sistema (definido en sentido amplio) producirá un diseño cuya estructura es una copia de la estructura de comunicación de la organización”.

En otras palabras, el diseño de su organización refleja en última instancia la arquitectura de su software. Las organizaciones administradas centralmente y de baja confianza tendrán dificultades para construir sistemas distribuidos con estructuras de comunicación efectivas.

Para tener éxito en la construcción de sistemas distribuidos, necesita ingenieros calificados que estén administrados de manera efectiva y motivados con las estructuras de incentivos adecuadas. Esto significa que una cultura de experimentación y seguridad psicológica se encuentra en el corazón de la construcción de servicios web en la próxima generación de tecnologías en la nube.

Junade Ali es un tecnólogo experimentado interesado en la gestión de ingeniería de software, la investigación de seguridad informática y los sistemas distribuidos.

Exit mobile version