Introducción a la arquitectura de software

84 ratings

Una breve reseña por parte del autor

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.


Sobre el autor

Oscar Blancarte es un arquitecto de software con más de 18 años de experiencia en el mundo del desarrollo de software. Actualmente es arquitecto de software en Red Hat desde donde aporta su conocimiento y experiencia para clientes a nivel mundial.

Oscar Blancarte cuanta actualmente con varias certificaciones, como Java Programmer, Análisis y Diseño Orientado a Objetos (IBM) y Oracle IT Architect (Oracle), Red Hat Certified Specialist in Containers y Red Hat Certified Cloud-native Developer. 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 https://www.oscarblancarteblog.com 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.

Además, es un apasionado por el emprendimiento, lo que lo ha llevado a emprender en diversas ocasiones, como es el caso de Codmind, una plataforma de educación online, Snipping Code, una plataforma de productividad para desarrolladores donde pueden guardar pequeños fragmentos de código repetitivos y Reactive Programming, la plataforma en la cual publica sus libros e invita a otros a desarrollar sus propias obras.


En este libro aprenderás:


Principios de diseño

  • Encapsulación
  • Acoplamiento
  • Cohesión
  • Don't repeat yourself (DRY)
  • Separation of concerns (SoC)
  • La Ley de Demeter
  • Keep it simple, Stupid! (KISS)
  • Inversion of control (IoC)
  • S.O.L.I.D
  • Single responsibility principle (SRP)
  • Open/closed principle (OCP)
  • Liskov substitution principle (LSP)
  • Interface segregation principle (ISP)
  • Dependency inversion principle (DIP)


Atributos de calidad

  • Performance (rendimiento)
  • Security (Seguridad)
  • Availability (disponibilidad)
  • Functionality (funcionalidad)
  • Usabilidad
  • Modificabilidad
  • Portabilidad
  • Reusabilidad
  • Testabilidad
  • Escalabilidad


Estilos arquitectónicos

  • Monolítico
  • Cliente-Servidor
  • Peer-to-peer (P2P)
  • Arquitectura en capas
  • Microkernel
  • Service-Oriented Architecture (SOA)
  • Microservicios
  • Event Driven Architecture (EDA)
  • Representational State Transfer (REST)

Patrones arquitectónicos

  • Data Transfer Object (DTO)
  • Data Access Object (DAO)
  • Polling
  • Webhook
  • Load balancer
  • Service Registry
  • Service discovery
  • API Gateway
  • Access token
  • Single Sign On (Inicio de sesión único)
  • Store and forward
  • Circuit breaker
  • Log aggregation


Projecto final

El proyecto consta de una aplicación de comercio electrónico construido con un potente backend basado en microservicios, el cual es accedido por medio de un API Gateway y autenticación por medio de un Single Sign On (SSO) basado en Tokens.

La arquitectura está diseñada para escalar, por lo que soporta múltiples instancias de cada microservicio con la finalidad de balancear la carga, además, todos los servicios implementan el patrón Service Discovery, lo que hace que no sean dependientes de una dirección IP y puerto, lo que hace que podremos escalar el sistema sin necesidad de reiniciar el sistema.

El proyecto final está compuesto de un total de 8 microservicios e implementa un total de 13 patrones arquitectónicos que trabajan en perfecta sincronía para dar vida a un API totalmente robusto y escalable capaz de soportar aplicaciones para empresas de clase mundial.


Este es sin duda, el libro más completo de arquitectura en español que encontrarás, ya que no solo te quedarás con la parte teórica, sino que aplicar todos los conocimientos mediante un proyecto real, el cúal podrás descargar desde GitHub y ejecutarlo de forma local en tu computadora.


¿Necesitas mentoring?

Del lado derecho podrás comprar mi paquete especial que incluye 3 sesiones 1 a 1 de mentoring, donde podrás resolver dudas, o ayudarte a guiar tu carrera profesional, la idea es ayudarte a crecer profesionalmente con con mi experiencia.

*Tras realizar la compra, me pondré en contacto directamente contigo por email para comenzar a organizar nuestras sesiones.

Pay
Copy product URL

Ratings

4.8
(84 ratings)
5 stars
92%
4 stars
5%
3 stars
0%
2 stars
0%
1 star
3%
$15

Introducción a la arquitectura de software

84 ratings
Pay