Software Architecture
Software architecture involves software elements and their relationships, as well as the decisions made to achieve certain non-explicit characteristics such as response times, security, maintainability, and many more.
What is software architecture?
Before delving into models and patterns, let's understand what architecture really is, what it's for, and why it's fundamental in professional development.
Architectural Models
How is a system put together? Some do everything in a single block (Monolith), others separate it into two large pieces (Client-Server), and there are those who divide it into many small blocks that communicate with each other (Microservices). There is even the option for the blocks to appear only when they are needed, in response to events (Serverless). Here I show you each model, its advantages, its limitations, and when it's best to use them.
Client-Server Model
arrow_forwardThe basis of communication between web and mobile apps.
Monolithic Architecture
arrow_forwardEverything in a single deployment block.
Microservices Architecture
arrow_forwardIndependent components that collaborate.
Serverless Architecture
arrow_forwardFunctions without managing servers.
Architectural Styles
Different ways to organize the code in our system.
Layered Architecture
A technique for organizing a system's code into layers, where each layer uses the services...
Hexagonal Architecture
Also known as "Ports and Adapters Architecture", it is a model...
Clean Architecture
Clean Architecture is a term introduced by Robert C. Martin (Uncle Bob)...
Enterprise Architecture Patterns
These types of patterns are used in enterprise-type applications. They were popularized by Martin Fowler in his book "Patterns of Enterprise Application Architecture", a fundamental guide when designing a system's architecture.
account_tree Domain Logic Patterns
They focus on the organization and structure of business logic, aimed at facilitating its understanding, maintenance, and evolution.
Transaction Script
arrow_forwardOrganizes business logic into procedures that handle each transaction...
Domain Model
arrow_forwardRepresents relevant concepts of the problem domain and their...
Table Module
arrow_forwardOrganizes business logic into classes or modules, where each represents a table...
Service Layer
arrow_forwardDefines a service layer within an application to abstract and...
database Data Source Architectural Patterns
Different approaches to managing the data access layer, with different levels of abstraction and decoupling.
Table Data Gateway
arrow_forwardActs as an intermediary between the application and a specific table in the DB.
Row Data Gateway
arrow_forwardEncapsulates access to a row of a table in a database, acting as a...
Active Record
arrow_forwardObjects encapsulate both data and business logic and persistence.
Data Mapper
arrow_forwardProposes an intermediary component to map data between the base...
sync_alt Object-Relational Metadata Mapping
Patterns for managing the mapping of objects to relational databases in an advanced way.
Unit of Work
arrow_forwardMaintains a list of objects affected by a business transaction.
Identity Map
arrow_forwardEnsures that each object is loaded only once by keeping them in a map.
Lazy Load
arrow_forwardPostpones object loading until the moment they are needed.
Repository
arrow_forwardActs as a collection of in-memory objects to access the domain.
desktop_windows Web Presentation Patterns
Structures for handling user interaction with the system through the web.
architecture Base Patterns & Distribution
Provide fundamental strategies for common problems and data distribution.
Gateway
arrow_forwardUsed to encapsulate access to an external system or resource.
Mapper
arrow_forwardImplemented as an object that maps one data set to another...
DTO (Data Transfer Object)
arrow_forwardSimple object that transports data between processes to reduce calls.
Remote Facade
arrow_forwardCoarse-grained interface to improve network performance.
Layer Supertype
arrow_forwardDefines a superclass for all classes within a specific layer.
Separated Interface
arrow_forwardDefines a component's interface in a separate package or module...
Registry
arrow_forwardEstablishes a centralized mechanism for storing and retrieving objects and instances.
Value Object
arrow_forwardAn object that represents a value and has no identity of its own.
Explore other topics
Next level:
Design Patterns arrow_forward