How to use Redis with MuleSoft. A quick start presentation.
Introducción a la Arquitectura de Software
1. Arquitectura de Software
Gustavo Alzate Sandoval
Comunidad Avanet - @avanet
Microsoft Community Specialist Colombia
http://www.eltavo.net
@ElTavoDev
3. ¿Qué es?
• Proceso a través de cual se define la estructura
base para una solución, la cual debe contemplar
los aspectos funcionales y no funcionales
• Diseño de alto nivel de la estructura de un sistema
• Toma de decisiones, que afectan el éxito del
sistema
• Garantía de los atributos de calidad requeridos
5. Principios
• Construir para el cambio y extensibilidad
• Modelar para minimizar riesgos
• Separación de incumbencias
• Principio de única responsabilidad
• Principio de mínimo conocimiento
• Don’t repeat yourself (DRY)
• Bajo acoplamiento
• Alta cohesión
6. Consideraciones
• Determinar el tipo de aplicación
• Determinar la estrategia de despliegue
• Definir las tecnologías apropiadas
• Determinar los atributos de calidad
• Determinar los aspectos transversales
7. Patrones o estilos
Conjunto de principios que proporciona un marco de
trabajo y resuelve problemas comúnmente conocidos.
• Cliente servidor
• Basado en componentes
• Orientado a dominio
• Arquitectura en capas
• Bus de mensajes
• N Tier / 3 Tier
• Orientada a objetos
• SOA
8. Atributos de calidad
Factores generales que afectan de una forma u otra el
comportamiento del sistema, como por ejemplo el
rendimiento, usabilidad etc. Los atributos de calidad
son determinados por las preocupaciones del
negocio o Divers de negocio.
• Mantenibilidad
• Reusabilidad
• Disponibilidad
• Interoperailidad
• Rendimiento
9. Atributos de calidad
Factores generales que afectan de una forma u otra el
comportamiento del sistema, como por ejemplo el
rendimiento, usabilidad etc. Los atributos de calidad
son determinados por las preocupaciones del
negocio o Divers de negocio.
• Escalabilidad
• Seguridad
• “Testeability”
• Usabilidad
10. Aspectos transversales
Funcionalidades comunes para uno o varios sistemas,
permiten generar un marco de trabajo para
desarrollo más ágil y permiten centralizar y reutilizar
implementaciones. La programación orientada a
aspectos promueve este principio. Para la
implementación de estos aspectos transversales
tenga en cuenta las siguientes consideraciones:
• Analice cuales funcionalidades pueden ser
reutilizadas en cada capa y evalué si también
pueden ser reutilizadas por otros sistemas.
11. Aspectos transversales
• Evalúe la estrategia de despliegue para los
componentes transversales, si se pueden instalar
en un Tier independiente para reutilizarlos
• Considere usar inyección de dependencias para la
utilización de estos componentes en sus
aplicaciones
• Considere usar librerías de terceros para este tipo
de aspectos transversales, como por ejemplo
Entreprise library, spring, etc.
12. Aspectos transversales
• Autenticación
• Autorización
• Chaching
• Comunicación
• Manejo de errores
• Logeo de errores y traza
• Validación
• Mensajería
13.
14. Patrones de diseño
Son la base para la búsqueda de soluciones a
problemas comunes en el desarrollo de software.
Posee principalmente dos características:
• Debe haber comprobado su efectividad
resolviendo el problema
• Debe ser reutilizable