Cómo diseñar una aplicación web: Software Architecture 101


Así que te embarcaste en el viaje emprendedor y decidiste crear tu propia aplicación web. Tienes una idea, pero ahora es crucial que tengas la arquitectura correcta.

En esta publicación, veremos estas áreas clave:


  • ¿Qué es la arquitectura de software?
  • ¿Por qué es importante la arquitectura de software?
  • La diferencia entre arquitectura de software y diseño de software.
  • Patrones de arquitectura de software.
  • Cómo decidir la cantidad de niveles que debe tener su aplicación.
  • Escalado horizontal o vertical: ¿cuál es el adecuado para su aplicación?
  • Monolito o microservicio?
  • ¿Cuándo deberías usar NoSQL o SQL?
  • Elegir la tecnología adecuada para el trabajo.
  • Cómo convertirse en un arquitecto de software.
  • A dónde ir desde aquí.




Nuestro objetivo es brindarle una comprensión sólida de la arquitectura web, los conceptos involucrados y cómo elegir la arquitectura y la tecnología correctas cuando diseña su aplicación. Al final de esta pieza, no estará sentado en la oscuridad cuando tenga que diseñar una aplicación desde cero.

Si está buscando un curso completo sobre arquitectura de software y aplicaciones web, le recomendamos que consulte la Arquitectura 101 de aplicaciones y software web. Este es un curso útil para cualquiera que busque fortalecer su conocimiento general de la arquitectura de software.

¿Qué es la arquitectura de software?

La arquitectura de software de un sistema describe sus componentes principales, sus relaciones y cómo interactúan entre sí.
Básicamente, sirve como modelo. Proporciona una abstracción para gestionar la complejidad del sistema; establece comunicación y coordinación entre componentes.

Some key points:
La arquitectura ayuda a definir una solución para cumplir con todos los requisitos técnicos y operativos, con el objetivo común de optimizar el rendimiento y la seguridad.
El diseño de la arquitectura implica la intersección de las necesidades de la organización y las necesidades del equipo de desarrollo. Cada decisión puede tener un impacto considerable en la calidad, el mantenimiento, el rendimiento, etc.
Una de mis definiciones favoritas de arquitectura de software es la de Ralph Johnson, coautor de Design Patterns: Elements of Reusable Object-Oriented Software.

¿Por qué es importante la arquitectura de software?

Construir un edificio o hacer una pizza: para crear cualquier cosa con éxito, necesita obtener la base correcta. Si no tiene la base correcta y algo sale mal, solo tiene que comenzar de nuevo, no hay forma de evitarlo.
Crear una aplicación web no es diferente. La arquitectura es la base. Debe pensarse cuidadosamente para evitar cambios importantes en el diseño y la refactorización de código más adelante.
Muchos ingenieros te dirán eso: no quieres tener que rediseñar cosas. Te devora el tiempo como un agujero negro. Tiene el potencial de adelantar su fecha de envío por meses, si no más. Y eso sin contar el desperdicio de ingeniería y recursos financieros.
Las decisiones apresuradas tomadas durante las fases iniciales de diseño pueden causar un punto muerto en cualquier etapa del proceso de desarrollo. Entonces, incluso antes de ensuciarnos con el código, debemos corregir la arquitectura subyacente.
El desarrollo de software es un proceso iterativo y evolutivo: no siempre obtenemos las cosas perfectas al principio. Pero esto no es excusa para no hacer nuestra tarea.

La diferencia entre arquitectura de software y diseño de software

A menudo hay confusión entre el diseño del software y la arquitectura. Analicemos esto.
La arquitectura de software se utiliza para definir el esqueleto y los componentes de alto nivel de un sistema y cómo funcionarán todos juntos. Por ejemplo, ¿necesita una arquitectura sin servidor que divida la aplicación en dos componentes: BaaS (back-end como servicio) y FaaS (funciones como servicio)? ¿O necesita algo como una arquitectura de microservicio donde las diferentes características / tareas se dividen en módulos / bases de código respectivos?
Elegir una arquitectura determinará cómo lidiar con el rendimiento, la tolerancia a fallas, la escalabilidad y la confiabilidad.
El diseño del software es responsable del diseño a nivel de código: lo que está haciendo cada módulo, el alcance de las clases y las funciones, propósitos, etc. Cuando se usan estratégicamente, pueden hacer que un programador sea más eficiente, dándoles métodos que ya han sido refinados por otros, para que no tengan que reinventar la rueda.
Además, cuando discuten con otros o administran código en equipos más grandes, proporcionan un lenguaje común útil para conceptualizar problemas y soluciones repetidos. Comience a aprovechar los patrones de diseño de software en su código con este útil curso: Patrones de diseño de software: mejores prácticas para desarrolladores de software.
Aquí hay un buen artículo sobre la importancia del diseño de software y los patrones probados y verdaderos que los desarrolladores usan con frecuencia: los 7 patrones de diseño de software más importantes.


Patrones de arquitectura de software

Servidor de cliente
La arquitectura funciona en un modelo de solicitud-respuesta. El cliente envía la solicitud al servidor para obtener información y el servidor responde.
Cada sitio web que navega, ya sea un blog de WordPress, una aplicación web como Facebook o Twitter, o su aplicación bancaria, se basa en la arquitectura cliente-servidor.


De igual a igual


Una red P2P es una red en la cual las computadoras, también conocidas como nodos, pueden comunicarse entre sí sin la necesidad de un servidor central. La ausencia de un servidor central descarta la posibilidad de un único punto de falla. Todas las computadoras en la red tienen los mismos derechos. Un nodo actúa como sembrador y leecher al mismo tiempo. Entonces, incluso si algunas de las computadoras / nodos se caen, la red y la comunicación aún están activas.
P2P es la base de la tecnología blockchain.

Modelo-Vista-Controlador (MVC)

La arquitectura MVC es un patrón arquitectónico de software en el que la lógica de la aplicación se divide en tres componentes en función de la funcionalidad. Estos componentes se llaman:
Modelos: representan cómo se almacenan los datos en la base de datos.
Vistas: los componentes que son visibles para el usuario, como una salida o una GUI.
Controladores: los componentes que actúan como una interfaz entre modelos y vistas.
La arquitectura MVC se usa no solo para aplicaciones de escritorio, sino también para aplicaciones móviles y web.


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Más info

aceptar