Qué es una arquitectura de software
Una arquitectura de software es la forma en que se reparten las partes grandes de un sistema y cómo se hablan entre sí. Los tres estilos más comunes son las capas, los servicios y los eventos.
Elegir bien depende de lo que el sistema necesita, no de lo que esté de moda. Un estilo que ayuda a un equipo grande puede estorbar a uno pequeño.
Al terminar esta lección
Nota
Puedo elegir entre capas, servicios o eventos según lo que necesita un sistema.
Palabras clave
| Palabra | Qué significa | Ejemplo |
|---|---|---|
| Arquitectura | cómo se reparten y se hablan las partes grandes de un sistema | |
| Capa | un nivel que solo habla con el de al lado | presentación, lógica, datos |
| Servicio | un programa con un trabajo, al que otros piden por red | |
| Evento | un aviso de que algo ha pasado | sala reservada |
| Publicar | enviar un evento sin saber quién lo recibe | |
| Escuchar | esperar un tipo de evento para reaccionar |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Las capas reparten el trabajo por niveles
En un estilo de capas, cada nivel hace un tipo de trabajo y solo habla con el nivel de al lado. Lo habitual son tres: lo que ve la persona, las reglas del negocio y los datos.
Es sencillo de entender y de probar. Todo vive en un solo programa, así que un cambio pequeño se despliega entero y no hay red de por medio.
Los servicios separan el sistema en programas
En un estilo de servicios, cada parte es un programa aparte con un trabajo, y se hablan por red. El servicio de reservas, el de salas y el de avisos pueden tener equipos distintos.
Se puede cambiar o escalar uno sin tocar los demás. A cambio, hay red de por medio: las peticiones pueden fallar o tardar, y el sistema entero es más difícil de seguir.
Un error frecuente
Advertencia
Mucha gente cree que los servicios son siempre mejores que las capas porque son más modernos. Cada servicio añade red, fallos y trabajo de despliegue. Con un equipo pequeño y un sistema sencillo, las capas bastan y cuestan menos.
Los eventos avisan sin saber quién escucha
En un estilo de eventos, una parte publica un aviso cuando algo pasa: "sala reservada". Otras partes que lo escuchan reaccionan por su cuenta.
Quien publica no sabe quién escucha, así que se puede añadir un oyente nuevo sin tocarlo. A cambio, es más difícil seguir qué ocurre y en qué orden.
Ejemplo resuelto: cuándo encaja cada estilo
| Estilo | Encaja cuando | Lo que cuesta |
|---|---|---|
| Capas | Hay un equipo pequeño y un sistema que cabe en un solo programa | Todo se despliega junto |
| Servicios | Hay tres o más equipos, o una parte necesita crecer sola | Red, fallos y más despliegues |
| Eventos | Muchas partes deben reaccionar cuando algo pasa | Es difícil seguir el orden de lo que ocurre |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Las partes del laboratorio ya son tres
El laboratorio es un ejemplo real. Tu terminal, la API y la base de datos son tres partes que se hablan por red. Los comandos las miran sin cambiar nada.
Primero pides a la base de datos una suma, que ella resuelve sola. Luego pides a la API su raíz, que debe responder con un 200. Por último, publicas un evento de ejemplo en la base. Da primero a psql la contraseña.
Dar a psql la contraseña
export PGPASSWORD=shopSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Pedir una suma a la base de datos
psql -h db -U shop -c "select 1 + 1 as total"Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Pedir a la API su dirección raíz
curl -s -o /dev/null -w "%{http_code}\n" "http://api:3000/"Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Publicar un evento de ejemplo
psql -h db -U shop -c "notify reservas, 'sala A1 reservada'"Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.