
Jairo Saul Salas Quiñones Pro-Dev | Sci-Tech
PreguntaQué diferencias tiene con la arquitectura de software? O dónde está su relación ?

Joaquín Jairo Ochoa Canela
Me gusto mucho la analogía de ver la arquitectura de software como el mapa de un centro comercial donde existen zonas como tiendas de ropa, jugueterías, comida, estacionamientos, etc. y como se comunican entre sí por medio de elevadores, escaleras, pasillos, todo distribuido con un sentido y orden, en software estas zonas serían las funcionalidades como seguridad, acceso a datos, creación de reportes, etc. Mientras que los patrones de diseño sirven para la creación de las funcionalidades por separado dando una estructura al codigo.

Daniel Basulto
Hey Jairo, buena pregunta.
Dentro del diseño, se encuentra el proceso de definir una arquitectura. Hay varios niveles de esta, cuando yo hablo de "Arquitectura" me refiero a una perspectiva de alto nivel de la app, por ejemplo: la app corre en Amazon/Google/Azure y usamos servicios que nos permiten manejar servidores, bases de datos, balanceadores de carga, y todo estos servicios orientados a un uso basado en microservicios.
Otro "nivel" de arquitectura es el que usas a la hora de construir la aplicación de back/front, he leído sobre personas que se refieren a esto como "patron arquitectónico" de la app, por ejemplo: en el back de mi app esta hecha en node y estoy usando Nest.js, pero le hice unas modificaciones para que pueda aplicar Domain Driven Design (DDD), otro ejemplo seria, mi app de front esta hecha en Next.js y para dividir las responsabilidades de los diferentes elementos a usar (componentes, llamadas a la API a.k.a servicios, vistas) use una arquitectura basada en capas o una arquitectura hexagonal.
Como puedes ver Jairo, la arquitectura es un proceso de diseño de naturaleza iterativa/evolutiva, el concepto de arquitectura es el mismo si lo usas para describir las diferentes capas de tu toda tu aplicación.

Juan Castro

Juan Castro
Los patrones de diseño son la forma en que se estructura el código de cualquier parte de tu aplicación (puedes usar unos patrones para el front, otros para el back...).
La arquitectura de software es mucho más general. Se enfoca en cómo se comunican tooooodos los elementos de un mismo negocio (usamos un monolito o microservicios? necesitamos balanceadors de carga? cómo funcionarán las réplicas de la base de datos?).