Introducción a la arquitectura de software - un enfoque práctico

¿Qué encontrarás
en este libro?

Principales estilos y patrones arquitectónicos

Analizaremos la diferencia entre patrones y estilos arquitectónicos, con más de 20 casos explicados a la perfección

Atributos de calidad

Aprenderemos a identificar y garantizar que el software cumpla con los principales atributos de calidad, los cuales son la base para crear aplicaciones robustas

Principales principio de diseño

Los principios de diseño son técnicas que nos ayudarán a diseñar soluciones más robustas, cohesivas, desacopladas, escalables y con una menor propensión a errores

Decenas de nuevos conceptos y términos

Este libro cuenta con varias decenas de nuevos conceptos y terminología que utilizamos en la arquitectura de software y que son fundamentales para tener un vocabulario común

Introducción a la arquitectura de software

Comenzaremos explicando los orígenes de la arquitectura de software y como este ha evolucionado hasta convertirse en lo que hoy es, incluyendo del rol del arquitecto de software en la actualidad.

Proyecto final

Dado que la arquitectura es en su mayoría conceptos abstractos y difíciles de imaginar, hemos agregado un proyecto final que implementará muchos de los conceptos, patrones y estilos arquitectónicos que explicamos en este libro.

Acerca del libro

Una breve reseña por parte del autor acerca de este libro

Desde los inicios de la ingeniería software, los científicos de la computación lucharon por tener formas más simples de realizar su trabajo, ya que las cuestiones más simples, cómo imprimir un documento, guardar un archivo o compilar el código, era una tarea que podría tardar desde un día hasta una semana.

Hoy en día, contamos con herramientas que van indicando en tiempo real si tenemos un error de sintaxis en nuestro código, pero no solo eso, además, son los suficientemente inteligentes para a completar lo que vamos escribiendo, incluso, nos ayudan a detectar posibles errores en tiempo de ejecución.

La realidad es que a medida que la tecnología avanza, tenemos cada vez más herramientas a nuestra disposición, como lenguajes de programación, IDE’s, editores de código, frameworks, librerías, plataformas en la nube y una gran cantidad de herramientas que nos hacen la vida cada vez más simple, y por increíble que parezca, los retos de hoy en día no son compilar el código, imprimir una hoja, guardar en una base de datos; tareas que antes eran muy difíciles; lo curioso es que hoy en día hay tantas alternativas para hacer cualquier cosa, que por increíble que parezca, el reto de un programador hoy en día es decidirse por qué tecnología irse, eso es increíble, tenemos tantas opciones para hacer lo que sea, que el reto no es hacer las cosas, si no con que tecnologías la aremos.

Ahora bien, yo quiero hacerte una pregunta, ¿crees que hacer un programa hoy en días es más fácil que hace años?

Seguramente a todos los que les haga esta pregunta concordarán con que hoy en día es más fácil, sin embargo, y por increíble que parezca, el hecho de que las tecnologías sean cada vez más simples, nos trae nuevas problemáticas y justo aquí donde quería llegar.

A medida que las tecnologías son más simples y más accesibles para todas las personas del mundo, las aplicaciones se enfrentan a retos que antes no existían, como la concurrencia, la seguridad, la alta disponibilidad, el performance, la usabilidad, la reusabilidad, testabilidad, funcionalidad, modificabilidad, portabilidad, integridad, escalabilidad, etc, etc. Todos estos son conceptos que prácticamente no existían en el pasado, porque las aplicaciones se desarrollaban para una audiencia muy reducida y con altos conocimientos técnicos, además, se ejecutaban en un Mainframe, lo que reducía drásticamente los problemas de conectividad o intermitencia, pues todo se ejecuta desde el mismo servidor.

Contenido del libro

El libro cuenta con más de 400 páginas dividido en 6 secciones
a continuación el contenido completo del libro
Índice completo del libro

Patrones arquitectónicos

los patrones arquitectónicos se distinguen de los patrones de diseño debido a que tiene un alcance global sobre los componentes,
ya que afectan su funcionamiento, su integración o la forma en que se comunican con otros componentes.
Data Transfer Object

Data Transfer Object (DTO)

El patrón DTO tiene como finalidad la creación de objetos planos (POJO) con una serie de atributos que puedan ser enviados o recuperados del servidor en una sola invocación, de tal forma que un DTO puede contener información de múltiples fuentes o tablas y concentrarlas en una única clase simple.

Data Access Object (DAO)

El patrón Arquitectónico Data Access Object (DAO) permite separar la lógica de acceso a datos de los Objetos de negocios (Bussines Objects), de tal forma que el DAO encapsula toda la lógica de acceso de datos al resto de la aplicación.

Polling

El polling consiste en realizar una serie de consultar repetitivas y con una periodicidad programada en búsqueda de nueva información, de esta forma, el sistema interesado tendrá que ir al servidor y preguntar si hay nuevas actualizaciones, si las hay, el servidor las retornará, en otro caso, el cliente seguirá preguntando cada x tiempo hasta que encuentre nuevas actualizaciones

Webhook

Un webhook o también llamado API de devolución de llamada web es un patrón que permite proporcionar notificaciones a otras aplicaciones en tiempo real.

Load Balance

El patrón load balance o equilibrio de cargas consiste en repartir la carga de trabajo entre un conjunto de servidores que trabajan en conjunto para dar la impresión que trabajan como un solo servidor, incrementando el poder de procesamiento a medida que se agregan más servidores.

Service Registry

El patrón Service Registry propone crear un servidor centralizado donde todos los servicios se registren al momento de encender, de esta forma, cada servicio le tendrá que enviar la dirección IP, el puerto en el que responde al servidor y finalmente, el identificador del servicio, que por lo general es un nombre alfanumérico que ayude a identificarlo, de esta forma, el servidor central o registro, sabrá exactamente dónde está cada servicio disponible.

Service Discovery

El Service Discovery es un componente que se encarga de recuperar del Service Registry todas las instancias de los servicios disponibles y realizar el balance de cargas, sin embargo, existen dos formas en la que este descubrimiento se pueda dar, del lado del cliente y del lado del servidor.

API Gateway

El API Gateway funciona como una compuerta del API al mundo, desde la cual podemos exponer nuestros Microservicios personalizando la experiencia para cada cliente, de esta forma, podemos indicar que servicios exponer, el formato de los datos retornados, e incluso, controlar el acceso, además, nos permite proporcionar un único punto de acceso para toda el API, lo que podemos aprovechar para agregar la seguridad que sea necesaria.

Access token

El acceso por Tokens es una estrategia que se utiliza para aumentar la seguridad de las aplicaciones, evitando que los usuarios tengan que enviar constantemente sus credenciales al servidor, al mismo tiempo que se reducen drásticamente la posibilidad de que sea interceptada o sea replicada a otros sistemas.
Single Sig On

Single Sign On (Inicio de sesión único)

El SSO es una estrategia que permite separar la lógica de autenticación de la aplicación en un componente independiente que tiene cómo única responsabilidad la de autenticar a los usuarios, de esta forma, todos los usuarios son redireccionados al SSO para para la autenticación.

Store and forward

El patrón Store and forward consiste en el almacenamiento local de los mensajes para su envío a un servidor remoto, de esta forma, el mensaje se almacena primeramente de forma local para impedir que se pierda, luego, el mensaje local es reenviado al servidor remoto cuando este puede aceptar el mensaje, de esta forma se garantiza la entrega del mensaje incluso si la aplicación destino no está en condiciones de recibirlo en ese momento.

Circuit Breaker

El patrón Circuit Breaker es muy parecido a un fusible, el cual se funde para evitar que una descarga eléctrica afecte al circuito, de esta misma forma, Circuit Breaker permite abrir el circuito para evitar que un componente que está fallando se ejecute y en su lugar, realizamos una acción secundaria para mitigar el error.

Log aggregation

El patrón Log Aggregation permite recopilar y homologar los logs producidos por diferentes servicios distribuidos de tal forma que puedan ser analizados de forma simple con una trazabilidad completa de punta a punta, evitando tener que ir a buscar los logs directamente al sistema operativo.

Estilos arquitectónicos

Un estilo arquitectónico establece un marco de referencia a partir del cual es posible construir aplicaciones que comparten un
conjunto de atributos y características mediante el cual es posible identificarlos y clasificarlos

Monolítico

El estilo arquitectónico monolítico consiste en crear una aplicación autosuficiente que contenga absolutamente toda la funcionalidad necesaria para realizar la tarea para la cual fue diseñada, sin contar con dependencias externas que complementen su funcionalidad. En este sentido, sus componentes trabajan juntos, compartiendo los mismos recursos y memoria. En pocas palabras, una aplicación monolítica es una unidad cohesiva de código.

Cliente-Servidor

Cliente-Servidor es uno de los estilos arquitectónicos distribuidos más conocidos, el cual está compuesto por dos componentes, el proveedor y el consumidor. El proveedor es un servidor que brinda una serie de servicios o recursos los cuales son consumido por el Cliente.

Peer-to-peer (P2P)

El estilo arquitectónico Red entre iguales (Peer-to-peer, P2P) es una red de computadoras donde todos los dispositivos conectados a la red actúan como cliente y servidor al mismo tiempo. En esta arquitectura no es necesario un servidor central que administre la red (aunque puede existir), si no que todos los nodos de la red pueden comunicarse entre sí.

Arquitectura en Capas

La arquitectura en capas es una de las más utilizadas, no solo por su simplicidad, sino porque también es utilizada por defecto cuando no estamos seguros que arquitectura debemos de utilizar para nuestra aplicación.

Microkernel

El estilo arquitectónico de Microkernel o también conocido como arquitectura de Plug-in, permite crear aplicaciones extensibles, mediante la cual es posible agregar nueva funcionalidad mediante la adición de pequeños plugins que extienden la funcionalidad inicial del sistema.

Service-Oriented Architecture (SOA)

SOA es un estilo arquitectónico que se apoya en la creación de servicios para lograr la integración de las aplicaciones, exponiendo servicios de alto nivel con ayuda de estándares abiertos para poder ser consumidos por cualquier cliente sin importar la tecnología.

Microservicios

El estilo de Microservicios consiste en crear pequeños componentes de software que solo hacen una tarea, la hace bien y son totalmente autosuficientes, lo que les permite evolucionar de forma totalmente independiente del resto de componentes.

Event Driven Architecture (EDA)

La arquitectura dirigida por eventos o simplemente EDA (por sus siglas en inglés) es una arquitectura asíncrona y distribuida, pensada para crear aplicaciones altamente escalables. En una arquitectura EDA los componentes no se comunican de forma tradicional, en la cual se establece comunicación de forma síncrona, se obtiene una respuesta y se procede con el siguiente paso. En esta arquitectura, se espera que las aplicaciones lancen diversos “eventos” para que otros componentes puedan reaccionar a ellos, procesarlos y posiblemente generar nuevos eventos para que otros componentes continúen con el trabajo.

Representational State Transfer (REST)

REST es un conjunto de restricciones que crean un estilo arquitectónico y que es común utilizarse para crear aplicaciones distribuidas. REST fue nombrado por primera vez por Roy Fielding en el año 2000 donde definió a REST como.
Breve descripción

ACERCA DEL AUTOR

Oscar Blancarte

Oscar Blancarte

Software Architect & Full Stack Developer

Oscar Blancarte es originario de Sinaloa, México donde estudió la carrera de Ingeniería en Sistemas Computacionales y rápidamente se mudó a la Ciudad de México donde actualmente radica. Oscar Blancarte es un Arquitecto de software con más de 15 años de experiencia en el desarrollo y arquitectura de software. Certificado como Java Programmer (Sun microsystems), Análisis y Diseño Orientado a Objetos (IBM) y Oracle IT Architect (Oracle).

A lo largo de su carrera ha trabajado para diversas empresas del sector de TI, entre las que destacan su participación en diseños de arquitectura de software y consultoría para clientes de los sectores de Retail, Telco y Health Care. Oscar Blancarte es además autor de su propio blog oscarblancarteblog desde el cual está activamente publicando temas interesantes sobre Arquitectura de software y temas relacionados con la Ingeniería de Software en general. Desde su blog ayuda a la comunidad a resolver dudas y es por este medio que se puede tener una interacción más directa con el autor.

En los últimos años ha sido miembro fundador de Codmind, una plataforma de educación online y SnippingCode, una plataforma colaborativa donde podemos guardar pequeños fragmentos de código para aumentar la productividad.

No tienes nada que perder...

Si en 30 días el libro no alcanza tus expectativas te regresamos el 100% de tu dinero

Lo que más cuidamos es nuestra reputación, es por eso que nos esforzamos para que cumplas con tus objetivos, así que si no estás satisfecho (por cualquier motivo) simplemente te pones en contacto con nosotros por cualquier medio y te regresamos tu dinero. Sin hacer preguntas. Nosotros tomamos el riesgo.

Toma acción ahora, no dejes para mañana lo que puedes hacer hoy. No tienes nada que perder

Precio

A continuación la tabla de precios de nuestros productos

Esta promoción termina en:

1

días

:1

horas

:37

minutos

:51

segundos

Jr Architect
$75
$25/USD

Descuento por tiempo limitado

Sr Architect
$150
$45/USD

Descuento por tiempo limitado

Principal Architect
$165
$59/USD

Descuento por tiempo limitado

A continuación, algunas de las preguntas más frecuentes con respecto a libro

Preguntas frecuentes

  • ¿Qué diferencia tiene este libro con el resto?
    Este es el único libro en español que te enseña como convertirte en arquitecto de software mediante la enseñanza de los principales patrones y estilos arquitectónicos, enseñados con un proyecto final que te permitirá pasar de la teoría a un ejemplo real.
  • ¿Puedo descargar una muestra gratis?
    SI, Al comienzo de esta página podrás encontrar el botón de descarga.
  • ¿El libro cuenta con alguna garantía?
    SI, tienes un plazo de 24 horas para solicitar tu reemisor total en caso de que el libro no alcance tus expectativas.
  • ¿Qué conocimientos requiero?
    Es recomendable contar con fuertes conocimientos en cualquier lenguaje de programación y patrones de diseño
  • ¿Qué tan extenso es el libro?
    El libro se conforma de casi 500 páginas, dividido en 9 estilos arquitectónicos, 13 patrones arquitectónicos, 13 principios de diseño, los principales atributos de calidad y más de una centena de nuevos conceptos que te ayudarán a comprender los términos más utilizados por los arquitectos de software.
  • ¿Tengo que pagar por las actualizaciones?
    NO, el libro está en constante evolución, y todas las actualizaciones estarán disponibles de forma gratuita.
  • ¿Qué pasa si tengo una duda?
    La compra del libro incluye acceso a un grupo privado para resolver dudas, donde yo personalmente respondo todas las preguntas.
  • ¿El libro cuenta con un proyecto final?
    SI, todo el libro gira al rededor un proyecto final para crear una aplicación completa con API REST y una arquitectura de microservicios.
📝 Escribe un libro