Introducción a
Arquitecturas

Arquitectura de software es ...

La arquitectura de software de un sistema es el conjunto de estructuras necesarias para razonar acerca del sistema"

(Software Architecture in Practice, 3rd edition)

La arquitectura de software es el conjunto de decisiones de diseño importantes para organizar el software y promover los atributos de calidad deseados.

(Design it From programmer to software Architecture)

La arquitectura (de software) es acerca de las decisiones importantes"
(Ralph Jhonson)

Requisitos
Funcionales

Funcionalidad requerida por el sistema

Restricciones de diseño

Restricciones del negocio, de la organización, restricciones técnicas, etc.

Atributos de calidad
[Non-functional requirements (NFRs) ]

  • Escalabilidad.
  • Desplegabilidad.
  • Rendimiento.
  • Agilidad.
  • Testeabilidad.
  • Disponibilidad.
  • Interoperabilidad.
  • Modificabilidad.
  • Seguridad.
  • Usabilidad.
  • Etc...

Propiedad medible de nuestro sistema. Algunos a destacar son:

Monolito
Y
Microservicios

Monolito

Características

  • Es la manera mas natural de comenzar en contextos chicos.
  • Una única base de código con múltiples módulos
  • Si se hace un cambio en alguno de estos módulos, por más chico que sea, debemos redeployar la aplicación completa
  • Esto produce un alto grado de acoplamiento.
  • Escalabilidad compleja.

Les presento a ....

Equipo de trabajo

Microservices

Microservicios

  • Es un estilo arquitectónico que estructura una aplicación como una colección de servicios que son:
    • Altamente mantenibles y testables.
    • Débilmente acoplados.
    • Desplegables de manera independientemente.
    • Organizados en torno al negocio.
    • Propiedad de un equipo pequeño.
    • Cada servicio puede tener su propio stack de tecnologías.

Dominios y MS

Complejidad 

  • Comunicación entre servicios
  • Transacciones.
  • Manejo de los datos.
  • Coordinación entre equipos.
  • Monitoreo.
  • Observabilidad.
  • Dificultad de probar.

Patrones

Monolitos Modulares

Características

  • Es un punto intermedio entre ambos estilos

  • Divide el código en modulos separados

  • Esto facilita el mantenimiento y la escalabilidad

  • Aún puede haber problemas con la integración de módulos y la actualización del sistema

Ejercicio

Smart Company

Esta compañia se encarga de realizar software para cadenas de comida y nos ha encargado el desarrollo de la nueva plataforma. Actualmente se encuentran en Buenos Aires pero piensan expandirse a distintos paises de la region. Entre los servicios a ofrecer se encuentran el pedido de comida por parte de los usuarios, ofrecer distintas opciones y promociones por parte de las cadenas de comida. Actualmente no se procesan pagos, pero en el roadmap del producto es una funcionalidad próxima a implementarse.escala

deck

By Agustin Rojas

deck

  • 395