Un sistema debe cumplir con sus funciones, pero no es lo único! también debe tener ciertas características no explícitas (tiempos de respuesta, seguridad, mantenibilidad, y muchas más), que se logran mediante una buena arquitectura de software.
El término arquitectura suena complejo y a lo largo del tiempo se han creado muchas definiciones. Para entenderlo vamos a llevarlo a algo simple: elementos y relaciones.
Podemos pensar a la arquitectura como un conjunto de estructuras. Estas estructuras están formadas por elementos, que se relacionan entre sí. Podemos decir que la arquitectura de software comprende elementos de software y cómo se relacionan entre sí.
Es una de las ramas fundamentales en materia de desarrollo de software, la forma que se le da al sistema, considerando temas como capas, responsabilidades, cohesión, acoplamiento, abstracción.
¿Cómo se arma un sistema? Hay quienes hacen todo en un solo bloque (Monolito), otros lo separan en dos grandes piezas (Cliente-Servidor), y están los que lo dividen en muchos bloquecitos que se comunican entre sí (Microservicios). Incluso existe la opción de que los bloques aparezcan solo cuando se los necesita, ante eventos (Serverless). Acá te muestro cada modelo, sus ventajas, sus limitaciones y cuándo conviene usarlos.
Distintas formas de organizar el código en nuestro sistema.
La arquitectura en capas es una técnica para organizar el código de un sistema en capas, en donde cada capa usa los servicios...
La Arquitectura Hexagonal, también conocida como “Arquitectura de Puertos y Adaptadores”, es un modelo...
Clean Architecture o Arquitectura Limpia es un término que introdujo Robert C. Martin (Uncle Bob), como un enfoque...
Este tipo de patrones son usados en aplicaciones de tipo empresarial. Fueron difundidos por Martin Fowler en su libro “Patterns of Enterprise Application Architecture”, una guía fundamental a la hora de diseñar la arquitectura de un sistema.
Se centran en la organización y estructura de la lógica del negocio, enfocados en facilitar su comprensión, mantenimiento y evolución.
Un Transaction Script es un patrón de diseño en el que se organiza la lógica de negocio en procedimientos. Cada…
Ver ArtículoDomain Model es un patrón de diseño que representa con objetos los conceptos relevantes del dominio del problema y las…
Ver ArtículoOrganiza la lógica de negocio en clases o módulos, donde cada uno representa una tabla en…
Ver ArtículoService Layer es un patrón de diseño que define una capa de servicios dentro de una aplicación para abstraer y…
Ver ArtículoDiferentes enfoques para gestionar la capa de acceso a datos, con distintos niveles de abstracción y desacoplamiento entre la lógica de negocio y la persistencia de datos.
El Table Data Gateway es un patrón de diseño que actúa como un intermediario entre la aplicación y una tabla…
Ver ArtículoRow Data Gateway encapsula el acceso a una fila de una tabla en una base de datos, actuando como un…
Ver ArtículoActive Record es un patrón de diseño en el que los objetos de una aplicación encapsulan tanto los datos (el…
Ver ArtículoEl Data Mapper es un patrón de diseño que propone un componente intermediario para mapear los datos entre la base…
Ver ArtículoBrindan estrategias y estructuras fundamentales para problemas comunes en el diseño de software.
Gateway se utiliza para encapsular el acceso a un sistema externo o recurso, como podría ser una red de computadoras,…
Ver ArtículoEl patrón Mapper, a menudo implementado como un objeto que mapea un conjunto de datos a otro, se usa para…
Ver ArtículoLayer Supertype define una superclase para todas las clases dentro de una capa específica de una aplicación…
Ver ArtículoSeparated Interface se refiere a la práctica de definir la interfaz de un componente en un paquete o módulo separado…
Ver ArtículoEl patrón Registry establece un mecanismo centralizado para almacenar y recuperar objetos e instancias de servicios utilizados…
Ver ArtículoUn Value Object es un objeto que representa un valor y no tiene identidad. Lo único que importa es su valor, dos value object…
Ver Artículo