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
- 387