Be Software Architecture Wise
Be Wise Apps

Read in English · Lire en français · Auf Deutsch lesen

Capítulo 1 de 12 · De principiante a intermedio

Qué es la arquitectura de software

Este capítulo explica qué es la arquitectura de software y por qué importa. Compara las definiciones estándar, separa la arquitectura del diseño, muestra mediante incidentes reales cómo las decisiones estructurales determinan el costo, la calidad y el riesgo, y describe lo que hacen los arquitectos. Después trata las partes interesadas y sus inquietudes, las decisiones y los compromisos, la deuda técnica y la erosión, y el lugar de la arquitectura en la entrega iterativa moderna. Está escrito para desarrolladores que avanzan hacia responsabilidades de arquitectura y para cualquier persona que trabaje con arquitectos, y solo presupone los bloques de construcción del Capítulo 0.

Introducción en video al capítulo 1

6 min · narrado en inglés, con subtítulos
Solo escuchar (audio)
Leer la transcripción

Te damos la bienvenida al Capítulo 1: Qué es la arquitectura de software. El Capítulo cero te dio los bloques de construcción. Este capítulo da un paso atrás y se pregunta qué significa organizar esos bloques de forma deliberada, quién lo hace y por qué merece la pena el esfuerzo. Te da el vocabulario del que depende el resto del curso y una forma de pensar que puedes aplicar a cualquier sistema, desde una pequeña app de reservas hasta una plataforma nacional de pagos.

Todo sistema de software tiene una arquitectura, la haya diseñado alguien o no. Es el conjunto de estructuras fundamentales que forman el sistema y de las decisiones significativas que las produjeron. Esas estructuras determinan mucho más de lo que la mayoría cree: lo rápido y fiable que es el sistema, cuánto cuesta ejecutarlo y cuántos equipos pueden trabajar en él a la vez. Sobre todo, determinan lo caro que será cambiar el sistema el año que viene. Las funcionalidades son lo que hace un sistema. La arquitectura determina en gran medida lo bien que las hace y lo que cuesta hacer algo diferente.

Este capítulo está escrito para desarrolladores que avanzan hacia responsabilidades de arquitectura. También es para cualquier persona que trabaje con arquitectos y quiera entender lo que hacen, y por qué. Se apoya en los bloques de construcción del Capítulo cero: componentes, almacenes de datos, redes y API. Si te sientes cómodo con ellos, estás preparado. Y conduce al Capítulo 2, que toma los objetivos de una arquitectura y los hace precisos y medibles, en forma de atributos de calidad.

El capítulo tiene ocho secciones. La Sección uno punto uno compara las definiciones que importan, desde la norma internacional y el Software Engineering Institute, o SEI, hasta los profesionales que destacan el entendimiento compartido y las decisiones que son caras de cambiar. La Sección uno punto dos aborda la confusión más habitual: dónde termina la arquitectura y dónde empieza el diseño. La respuesta es que no hay un muro, solo un continuo ordenado por significancia. La Sección uno punto tres expone por qué debe importarte, a partir de tres casos reales: la pérdida bursátil de Knight Capital en dos mil doce, el accidentado lanzamiento de HealthCare punto gov en dos mil trece y un cambio de Amazon Prime Video en dos mil veintitrés.

Este diagrama de la Sección uno punto uno muestra las ideas que comparten las definiciones, con un sistema de reparto de comida. La línea discontinua es el límite del sistema. Las cajas de su interior son elementos: una app móvil, un servicio de pedidos, una base de datos de pedidos, un servicio de repartidores y un módulo de pagos. Las flechas son relaciones. La app llama al servicio de pedidos mediante HTTPS. El servicio de pedidos consulta la base de datos con SQL y envía un evento al servicio de repartidores. Unas pequeñas etiquetas registran las propiedades. El servicio de pedidos, por ejemplo, no tiene estado y se ejecuta como tres copias. Fuera del límite está el entorno: los clientes, los repartidores y los restaurantes, y el proveedor de pagos con tarjeta. Y el entorno es más que otros sistemas. También incluye la ley, el presupuesto, la organización y sus equipos, y la plataforma en la nube. No puedes entender una arquitectura sin ellos.

La Sección uno punto cuatro se centra en las personas: lo que hacen realmente los arquitectos, los distintos tipos de arquitecto, por qué la arquitectura es un rol antes que un cargo y el largo debate sobre si los arquitectos deberían seguir escribiendo código. La Sección uno punto cinco amplía la mirada hacia las partes interesadas, todas las personas con un interés en el sistema, desde usuarios y desarrolladores hasta reguladores. Muestra cómo las inquietudes en conflicto se hacen explícitas, en lugar de resolverse a favor de quien grita más fuerte. La Sección uno punto seis pasa a las decisiones y los compromisos: qué contiene una buena decisión, qué decisiones se pueden revertir fácilmente y cuáles no, y la idea de decidir en el último momento responsable.

Las dos últimas secciones tratan del tiempo. La Sección uno punto siete explica la deuda técnica tal como la entendía originalmente Ward Cunningham, en qué se diferencia del simple desorden y cómo las arquitecturas se erosionan y se alejan de la forma prevista. La Sección uno punto ocho sitúa la arquitectura en el ciclo de vida de la entrega, entre el gran diseño inicial y el diseño puramente emergente, y muestra un término medio práctico: la arquitectura justa, en el momento adecuado, comprobada de forma continua.

Este diagrama de la Sección uno punto dos muestra cómo distinguir la arquitectura del diseño. Las decisiones situadas hacia la izquierda son más arquitectónicas; hacia la derecha, son más una cuestión de diseño y de código. La primera prueba es el costo de revertir una decisión: meses de trabajo para muchos equipos en un extremo, minutos para una persona en el otro. La segunda es el alcance del impacto: todo el sistema o la organización, o solo una función o clase. La tercera es el efecto sobre las cualidades clave. Los puntos sitúan una decisión real, la elección del formato de los mensajes, en cada línea, y en las tres se inclina hacia el extremo arquitectónico.

Si recuerdas una sola cosa de este capítulo, que sea esta. La arquitectura es el conjunto de decisiones que es caro equivocar. El trabajo del arquitecto es identificar esas decisiones, tomarlas de forma deliberada con las personas adecuadas, registrar por qué y mantenerlas en revisión, a la vez que hace que el mayor número posible de las demás decisiones sean baratas de cambiar. El resto del curso aplica esa idea.

Puedes leer las secciones en orden, que es lo mejor si las ideas son nuevas para ti, o consultar solo las que necesites. Leer todo el capítulo lleva unas dos horas y media. Cada sección termina con unas cuantas preguntas de autoevaluación. Intenta responderlas mentalmente antes de mirar, para ver qué se te ha quedado. Cuando estés listo, hay una prueba opcional del capítulo, con veinte preguntas de opción múltiple y dos respuestas escritas. Calcula unos cuarenta y cinco minutos. La nota de aprobado es el ochenta por ciento, la misma que en todas las pruebas de capítulo del curso.

Ese es el mapa del Capítulo 1. Empieza por la Sección uno punto uno, donde comparamos las definiciones estándar de la arquitectura de software y vemos lo que tienen en común. Nos vemos allí.

Descargar el capítulo (PDF)Leer en la app

De un vistazo

Aprenderás a

  • Explicar las definiciones de arquitectura de software de ISO/IEC/IEEE 42010:2022 y del SEI, y las ideas que comparten.
  • Distinguir las estructuras de módulos, de componentes y conectores y de asignación, y una arquitectura de su descripción.
  • Clasificar decisiones como arquitectónicas o de diseño según su reversibilidad, su alcance y su efecto sobre los atributos de calidad.
  • Analizar cómo contribuyeron las decisiones estructurales a incidentes reales como los de Knight Capital y HealthCare.gov.
  • Describir las responsabilidades, las habilidades y los tipos de arquitecto, y cómo se mantienen los arquitectos en contacto con la práctica.
  • Identificar a las partes interesadas y sus inquietudes, y hacer explícitas las inquietudes en conflicto.
  • Evaluar las decisiones arquitectónicas como compromisos, teniendo en cuenta la reversibilidad y el momento oportuno.
  • Explicar la deuda técnica, la erosión y la deriva, y cómo detectarlas y gestionarlas a lo largo del ciclo de vida.

Antes de empezar

El Capítulo 0, o un conocimiento práctico de los componentes, las bases de datos, las API, las redes y la nube.

Tiempo

Unas 2½ horas de lectura; 45 minutos para la prueba.

Términos clave

Arquitectura de software · Descripción de arquitectura · Estructura · Arquitectónicamente significativo · Atributo de calidad · Costo del cambio · Parte interesada · Inquietud · Compromiso · Reversibilidad · Deuda técnica · Erosión de la arquitectura · Función de aptitud (fitness function) · Ley de Conway

Por qué este capítulo va primero

Todo sistema de software tiene una arquitectura, la haya diseñado alguien o no. Es el conjunto de estructuras fundamentales que forman el sistema (sus partes principales, cómo se conectan y qué propiedades tienen) y de las decisiones significativas que las produjeron. Esas estructuras determinan mucho más de lo que la mayoría cree: lo rápido y fiable que es el sistema, cuánto cuesta ejecutarlo, cuántos equipos pueden trabajar en él a la vez y, sobre todo, lo caro que será cambiarlo el año que viene. Las funcionalidades son lo que hace un sistema; la arquitectura determina en gran medida lo bien que las hace y lo que cuesta hacer algo diferente.

El Capítulo 0 presentó los bloques de construcción: programas, almacenes de datos, redes, API, servidores y la nube. Este capítulo da un paso atrás y se pregunta qué significa organizar esos bloques de forma deliberada, quién lo hace y por qué merece la pena el esfuerzo. Te da el vocabulario del que depende el resto del curso y una forma de pensar que puedes aplicar a cualquier sistema, desde una pequeña app de reservas hasta una plataforma nacional de pagos.

Qué es la arquitectura y qué no es

Las dos primeras secciones tratan de definiciones, porque las definiciones confusas conducen a un trabajo confuso. La Sección 1.1 compara las definiciones que importan: la norma internacional ISO/IEC/IEEE 42010:2022, que habla de los conceptos o propiedades fundamentales de un sistema en su entorno y de los principios que rigen su evolución; la definición del Software Engineering Institute, que habla de las estructuras necesarias para razonar sobre un sistema, formadas por elementos, relaciones y sus propiedades; y las definiciones de los profesionales, que destacan el entendimiento compartido y las decisiones que son caras de cambiar. Muestra lo que tienen en común y presenta tres tipos de estructura que tiene todo sistema: cómo se divide su código, qué se ejecuta y qué se comunica con qué, y cómo se corresponde el software con la infraestructura y los equipos.

La Sección 1.2 aborda después la confusión más habitual: dónde termina la arquitectura y dónde empieza el diseño. La respuesta es que no hay un muro, solo un continuo ordenado por significancia. Una decisión es arquitectónicamente significativa cuando es costosa de revertir, tiene un alcance amplio o es decisiva para una cualidad clave, y por eso una convención modesta, como la forma de almacenar los importes de dinero, puede ser más arquitectónica que una caja grande en un diagrama. La sección también separa los niveles en los que se usa la palabra: arquitectura empresarial, de soluciones y de software, con la arquitectura de datos, de seguridad y de infraestructura atravesándolas.

Por qué importa y quién la hace

La Sección 1.3 expone por qué debe importarte. Muestra cómo los atributos de calidad, como la disponibilidad y el rendimiento, surgen de la estructura y no de líneas de código concretas, cómo crece el costo del cambio a medida que se construye más sobre una decisión, y cómo la arquitectura condiciona el riesgo, la organización de los equipos (mediante la ley de Conway), la comunicación y la estimación. Tres casos reales, contados a partir de fuentes primarias, sustentan el argumento: la pérdida bursátil de Knight Capital en agosto de 2012, el accidentado lanzamiento de HealthCare.gov en octubre de 2013 y la decisión de Amazon Prime Video en 2023 de pasar un servicio de monitorización de pasos serverless distribuidos a un único proceso, lo que, según se informó, redujo su costo en más de un 90% e ilustra que la arquitectura trata de la adecuación, no de la moda.

La Sección 1.4 se centra en las personas. Describe lo que hacen realmente los arquitectos, a partir de las ocho expectativas que plantean Mark Richards y Neal Ford y de las tareas del plan de estudios iSAQB Foundation; los distintos tipos de arquitecto; por qué la arquitectura es un rol antes que un cargo; por qué los arquitectos valoran la amplitud de conocimientos; y el largo debate sobre si los arquitectos deberían seguir escribiendo código.

La Sección 1.5 amplía la mirada hacia las partes interesadas (todas las personas con un interés en el sistema, desde usuarios y desarrolladores hasta el personal de operaciones, los delegados de protección de datos y los reguladores) y sus inquietudes, y muestra cómo las inquietudes en conflicto se hacen explícitas en lugar de resolverse a favor de quien grita más fuerte. La Sección 1.6 pasa a las decisiones y los compromisos: la anatomía de una buena decisión, la diferencia entre las decisiones que se pueden revertir fácilmente y las que no, la idea de decidir en el último momento responsable y las trampas cognitivas que llevan por mal camino a personas capaces.

La arquitectura a lo largo del tiempo

Las dos últimas secciones tratan del tiempo. La Sección 1.7 explica la deuda técnica tal como la entendía originalmente Ward Cunningham en 1992, en qué se diferencia del simple desorden y cómo las arquitecturas se erosionan y se alejan de la forma prevista; muestra cómo detectar el daño y cómo explicarlo en términos de negocio. La Sección 1.8 sitúa la arquitectura en el ciclo de vida de la entrega: la vieja discusión entre el gran diseño inicial (big design up front) y el diseño puramente emergente, y el término medio práctico de la arquitectura dirigida por riesgos, continua y evolutiva, en la que un equipo hace la arquitectura justa, en el momento adecuado, y sigue comprobando que todavía encaja.

La idea que debes llevarte

Si recuerdas una sola cosa de este capítulo, que sea esta: la arquitectura es el conjunto de decisiones que es caro equivocar, y el trabajo del arquitecto es identificar esas decisiones, tomarlas de forma deliberada con las personas adecuadas, registrar por qué y mantenerlas en revisión, a la vez que hace que el mayor número posible de las demás decisiones sean baratas de cambiar. Todo lo demás en este curso, desde los atributos de calidad del Capítulo 2 hasta el diseño de sistemas con IA del Capítulo 12, es una aplicación de esa idea.

Las 8 secciones

1.1 · Principiante · 18 minDefinir la arquitecturaLa norma internacional, el SEI y los profesionales más destacados definen la arquitectura de software de forma distinta. Aprende las definiciones principales, lo que tienen en común y los tres tipos de estructura que tiene todo sistema.Leer →1.2 · Principiante · 17 minArquitectura frente a diseñoLa arquitectura y el diseño forman un único continuo de decisiones. Aprende qué hace que una decisión sea arquitectónicamente significativa, en qué se diferencian las decisiones estratégicas y las tácticas, y cómo se relacionan la arquitectura empresarial, la de soluciones y la de software.Leer →1.3 · Principiante · 19 minPor qué importaLa arquitectura determina las cualidades de un sistema, el costo y la velocidad de cada cambio futuro, sus riesgos y cómo pueden trabajar los equipos. Casos reales de Knight Capital, HealthCare.gov y Prime Video muestran por qué.Leer →1.4 · Principiante · 18 minEl papel del arquitectoLo que hacen realmente los arquitectos en su día a día, las ocho expectativas descritas por Richards y Ford, los tipos de arquitecto, la amplitud frente a la profundidad y si los arquitectos deberían seguir escribiendo código.Leer →1.5 · Principiante · 18 minPartes interesadas e inquietudesQuién tiene un interés en un sistema, qué entiende ISO/IEC/IEEE 42010 por inquietud, cómo identificar a las partes interesadas e implicarlas, y cómo las inquietudes en conflicto se convierten en requisitos, decisiones y vistas explícitos.Leer →1.6 · Intermedio · 20 minDecisiones y compromisosPor qué toda elección arquitectónica es un compromiso, cómo se estructura una decisión bien formada, las puertas de un solo sentido y de doble sentido, el último momento responsable, el diseño para la reversibilidad, las trampas cognitivas y la matriz de decisión ponderada.Leer →1.7 · Intermedio · 20 minDeuda técnicaLo que quería decir realmente la metáfora de la deuda de Ward Cunningham, el principal y los intereses, el cuadrante de la deuda de Fowler, por qué la deuda arquitectónica es la que más cuesta, la erosión y la deriva, y cómo detectar, gestionar y explicar la deuda en términos de negocio.Leer →1.8 · Intermedio · 19 minArquitectura y ciclo de vidaEl gran diseño inicial (big design up front) frente al diseño emergente, lo que dice realmente el Manifiesto Ágil, el modelo dirigido por riesgos de Fairbanks, la arquitectura intencional y la pista arquitectónica (runway), la arquitectura continua, los esqueletos andantes, los spikes y la arquitectura en DevOps.Leer →

Prueba del capítulo

Comprueba lo que has entendido del capítulo 1

Opcional: 20 preguntas de opción múltiple y 2 respuestas escritas breves, elegidas de nuevo cada vez de un banco de 72 preguntas. Nota de aprobado: 80%. Superar todas las pruebas de capítulo y después la evaluación final da derecho al Certificado de Finalización Be Wise.

Haz la prueba del capítulo 1 en la app

Lecturas recomendadas