Exploración de la arquitectura de DevOps

Completado

Una arquitectura bien diseñada es como una autopista que puede entregar rápidamente valor empresarial al usuario final. Si no se hace correctamente, es como un puente inundado que evita la consecución de los objetivos finales.

Introducción a la arquitectura de software

La viabilidad a largo plazo de cualquier arquitectura requiere que su diseño, implementación, actualización y cambio inevitable sean exitosos.

La arquitectura es abstracta hasta que se pone en funcionamiento, cuando se convierte en algo vivo.

William LeMessurier, uno de los arquitectos estructurales más distinguidos de los Estados Unidos, actuó como consultor de diseño y construcción de la innovadora torre de la sede de Citicorp en Nueva York. La torre se terminó en 1977. Al año siguiente, después de que un alumno de la universidad de Princeton que estudiaba el diseño de la torre lo llamara para señalar un posible defecto, LeMessurier descubrió que, efectivamente, la estructura del edificio tenía un defecto.

El edificio no podía resistir vientos de 70 millas por hora, lo que, según las tablas meteorológicas, ocurría al menos una vez cada 55 años en la ciudad de Nueva York. En esas circunstancias las juntas fallarían y el edificio se derrumbaría desde el decimotercer piso. La torre estaba totalmente ocupada en ese momento. LeMessurier tuvo que dar la noticia a los propietarios y a los funcionarios municipales.

LeMessurier se enfrentó a un complejo y difícil problema de responsabilidad profesional. Tuvo que alertar a un amplio grupo de personas del defecto estructural y conseguir su cooperación para reparar el defecto antes de que un huracán derribara el edificio.

Ese verano, el huracán Ella se dirigió a la ciudad. El edificio estaba protegido. La torre Citicorp se ha mantenido firme desde entonces.

Importante

La arquitectura de software consiste en tomar decisiones estructurales fundamentales que son costosas de cambiar una vez implementadas.

Sus características incluyen:

  • Partes interesadas: que pueden incluir partes interesadas del negocio, equipos de aplicaciones, equipos de QA, operaciones, seguridad y usuarios.
  • Separación de intereses: para reducir la complejidad, separe los intereses que impulsan el diseño.
  • Atributos controlados por la calidad: lo que incluye la escalabilidad, la extensibilidad, la confiabilidad, el mantenimiento y la seguridad.
  • Integridad conceptual: la arquitectura de software representa una visión general de lo que se debe hacer y de cómo debe hacerse para mantener la integridad de la arquitectura, los datos y el proceso.
  • Restricciones cognitivas: las organizaciones están restringidas a generar diseños que son copias de sus estructuras de comunicación.
  • Estilos recurrentes: la disciplina de la arquitectura de software requiere desarrollar formas estándar de abordar problemas recurrentes.

Cualquier arquitectura aborda las "-idades":

  • auditabilidad
  • availability
  • compatibilidad
  • componibilidad
  • configurabilidad
  • accesibilidad
  • adaptabilidad
  • asequibilidad
  • personalizabilidad
  • demostrabilidad
  • implementabilidad
  • durabilidad
  • facilidad de uso
  • extensibilidad
  • flexibilidad
  • interoperabilidad
  • administrabilidad
  • portabilidad
  • previsibilidad
  • recuperabilidad
  • confiabilidad
  • Repetitividad
  • reusabilidad
  • escalabilidad
  • utilidad
  • sociabilidad
  • simplicidad
  • comprobabilidad
  • sostenibilidad
  • rastreabilidad
  • reproducibilidad

Al compilar software, los arquitectos deben determinar la más importante de estas "-idades". Sin embargo, muchos de estos factores son opuestos entre sí.

Por ejemplo, lograr un alto rendimiento y una escalabilidad extrema puede ser difícil porque requiere un equilibrio cuidadoso entre arquitectura, operaciones y muchos otros factores.

Este proceso de toma de decisiones es una ley de equilibrio; el equilibrio entre las ventajas y desventajas de cada decisión arquitectónica da lugar a las concesiones, por las que los arquitectos tanto suelen lamentarse.

En los últimos años, los desarrollos incrementales en los procedimientos de ingeniería principales del desarrollo de software han conformado la base para replantear cómo cambia la arquitectura con el tiempo y cómo proteger importantes características arquitectónicas a medida que se produce esta evolución.

Arquitectura de DevOps

Gene Kim es un reconocido investigador de DevOps, autor y visionario. Identifica tres elementos necesarios para que DevOps sea una realidad:

"Uno es el componente cultural. Sin duda, el otro elemento son las herramientas y la tecnología. El tercero es la arquitectura. Se necesitan excelentes procedimientos tecnológicos, incluida la automatización. Se necesita una cultura de alta confianza. Además, es la arquitectura lo que permite llegar ahí".

Las investigaciones presentadas en el libro Accelerate no muestran una correlación significativa entre el tipo de sistema y el rendimiento de entrega en muchos tipos de sistemas, incluidos los nuevos sistemas, los sistemas de registro, el software comercial empaquetado, el software de sistema central y el software insertado. Lo importante es la implementabilidad y la comprobabilidad.

Sugerencia

Una buena arquitectura facilita la implementabilidad y la comprobabilidad.

Arquitectura y organización

La ley de Conway se llama así por el programador informático Melvin Conway, que presentó la idea en 1967. Reconoce que el diseño del sistema se ve afectado por las estructuras de comunicaciones de las organizaciones que diseñan los sistemas:

Importante

Ley de Conway: cualquier organización que diseña un sistema (definido ampliamente) genera un diseño cuya estructura es una copia de la estructura de comunicación de la organización.

La ley se basa en el razonamiento de que para que un módulo de software funcione, varios autores deben comunicarse con frecuencia entre sí.

Por lo tanto, la estructura de la interfaz de software de un sistema refleja los límites sociales de las organizaciones que lo han generado, en donde la comunicación es más difícil.

Aptitudes de arquitecto en DevOps empresarial

Los arquitectos desarrollan y perfeccionan una amplia serie de aptitudes, como:

  • pensamiento con perspectiva global
  • pensamiento en los sistemas
  • conocimientos empresariales
  • aptitudes interpersonales
  • aptitudes de influencia y liderazgo
  • comprensión de la arquitectura técnica
  • experiencia en administración financiera de TI
  • Administración del tiempo
  • exposición a marcos de arquitectura empresarial (EA)
  • capacidad de explicar TI a ejecutivos
  • aptitudes de presentación
  • aptitudes de preparación
  • comprensión de la arquitectura de datos y las operaciones de TI

Importante

Pero, ¿cuál es la aptitud más importante para el éxito en el siglo XXI?

La disposición y la capacidad de aprendizaje.