Arquitectura de Aplicaciones Empresariales Lic. Esteban Cesar Calabria 2007 TEMARIO Introducción Aplicaciones Empresariales Introducción a la Arquitectura de Aplicaciones empresariales Layering Patrones Arquitecturas Empresariales Algunos patrones Base Arquitectura Lic. Esteban Cesar Calabria Arquitectura “Software architecture is the set of design decisions which, if made incorrectly, may cause your project to be cancelled." – Eoin Woods Aplicaciones Empresariales Que entendemos por arquitectura… División de alto nivel de un sistema en sus partes Decisiones que son difíciles de cambiar Lic. Esteban Cesar Calabria Aplicaciones Empresariales Existen distintas visiones de arquitectura que cambian durante el ciclo de vida del sistema. Es algo subjetivo, un conocimiento compartido sobre el diseño del sistema en forma de los componentes mas importantes y como interactúan. Lic. Esteban Cesar Calabria División de alto nivel Conocimiento subjetivo Componentes Importantes ARQUITECTURA Decisiones difíciles de cambiar Interaccion Partes Decisiones tempranas Vision del Sistema Aplicaciones Empresariales Algunos factores que intervendrán son: El equipo de trabajo La plataforma Cantidad de usuarios Complejidad de la lógica de negocios Escalabilidad El tipo de aplicación Lic. Esteban Cesar Calabria Patrones de Arquitectura Arquitectura Patrón de Arquitectura Describen un problema que ocurren una y otra vez. Esbozan una la solución a ese problema Un mismo patrón puede aplicarse muchas veces sin hacer 2 veces lo mismo. Están arraigados en la práctica Ayudan a la comunicación Arquitectura Algunos ejemplos de Patrones de Arquitectura son: Presentation-abstraction-control Layering Pipe-Filter Implicit invocation Blackboard system Peer-to-peer Broker Pattern Naked objects SOA Microkernel Arquitectura Los mencionados son aceptados con cierto consenso como patrones de arquitectura. Cada patrón de arquitectura se orienta a un determinado tipo de aplicación. Aquí veremos aplicaciones empresariales donde se utiliza principalmente layering, pero eso no implica que no podamos tomar ideas de otros patrones de arquitectura. Arquitectura Naked Objects Toda la interfaz de usuario es generada automáticamente a partir de un modelo de objetos. Peer-to-Peer Por ejemplo el azureus o emule presenta esta arquitectura Arquitectura Pipe-Filter Muy común ver soluciones de este estilo implementadas en el shell de unix/linux. MicroKernel Un componente central (Kernel) que se encarga de mediar entre distintos modulos. Interpreter Por ejemplo la Java se construye sobre una arquitectura de ese estilo Aplicaciones Empresariales Aplicaciones Empresariales Qué es una aplicación empresarial? Aplicaciones que se utilizan en una empresa Se integran en los procesos de negocio de la misma Muestran, manipulan y almacenan grandes cantidades de información Aplicaciones Empresariales Las aplicaciones Empresariales pueden incluir: Manejo del Stock de la empresa Sistemas Financieros Sistemas de Reservas Ventas, Compras Manejo de la Producción ERP (Enterprise Resource Planning) Aplicaciones Empresariales NO son aplicaciones empresariales: Sistemas Operativos Juegos de Computadoras Sistemas Embebidos Aplicaciones Ofimáticas Aplicaciones P2P que funcionen por Internet. Sistemas Inteligentes Aplicaciones Empresariales Consideraremos como definir la arquitectura de una aplicación empresarial a.. Definir como separaremos la aplicaciones empresariales en capas. Definir como estructuraremos la lógica de negocios. Definir como va a ser la presentación. Describir el mecanismo que utilizaremos para Transportar objetos de memoria a la base de datos Acordar como realizaremos el manejo de sesiones … Lic. Esteban Cesar Calabria Caracteristicas Aplicaciones Empresariales Aplicaciones Empresariales Características Importantes Manejar Datos Persistentes Manejan Grandes Cantidades de Datos Se accede a los datos concurrentemente Muchas Interfaces de Usuario Se integran con otras aplicaciones empresariales Contienen lógica de negocio compleja Problemáticas en Aplicaciones Empresariales Aplicaciones Empresariales Las temas que nos enfrentamos al construir una aplicación empresarial abarcan: Organización de la aplicación (Layering) Estructurar Reglas de Negocio Interfaz de Usuario y Presentación Persistencia Seguridad Concurrencia Manejo de Sesiones Internacionalización Aplicaciones Empresariales La lista continua: Manejo de transacciones Distribución Validación y manejo de errores Mensajería Integración de Diferentes Aplicaciones Escalabilidad Performance Versionados y Entregas Incrementales Layering Aplicaciones Empresariales Layering es una técnica muy común utilizada a la hora de diseñar software para dividir un sistema complejo. Se puede ver en Arquitectura de computadoras Arquitectura de Redes Arquitectura de Sistemas Operativos Lic. Esteban Cesar Calabria Aplicaciones Empresariales Ejemplo de Layering en Computadoras Lenguaje de Programación Llamadas al Sistema Operativo Llamadas a Assembler Hardware Lic. Esteban Cesar Calabria Aplicaciones Empresariales Ejemplo de Layering en Redes FTP se construye sobre.. TCP que se construye sobre.. IP que se construye sobre Ethernet Lic. Esteban Cesar Calabria Aplicaciones Empresariales Lic. Esteban Cesar Calabria Aplicaciones Empresariales Ejemplo de Layering en sistemas operativos Lic. Esteban Cesar Calabria Aplicaciones Empresariales Características Existe la idea de Capa Superior y Capa inferior. Una capa superior usa los servicios de la capa inferior inmediata Una capa inferior no sabe nada de la existencia de las capas superiores Generalmente la capa 4 usa servicios de la capa 3 que a su vez usa servicios de la capa 2, pero la capa 4 desconoce la existencia de la capa 2 Lic. Esteban Cesar Calabria Aplicaciones Empresariales Ventajas Se puede entender una capa en particular sin saber demasiado sobre el resto de las capas Por ejemplo se puede construir un servidor ftp sobre tcp sin saber en detalle como funciona ethernet. FTP TCP ??? Lic. Esteban Cesar Calabria Aplicaciones Empresariales Ventajas Se pueden sustituir capas con implementaciones alternativas que ofrezcan los mismos servicios Aplicacion Interfaz Capa Persistencia Capa que lee datos desde un archivo Interfaz Capa Persistencia Capa que lee los datos desde una base de datos Access Interfaz Capa Persistencia Capa que lee los datos desde una base de Firebird Aplicaciones Empresariales Ventajas Agregar capas intermedias permite minimizar dependencias entre las capa. Por ejemplo podemos cambiar ADSL por Cabmemodem, pero mientras funcione la capa de IP, no tenemos que modificar el servidor FTP Lic. Esteban Cesar Calabria Aplicaciones Empresariales Ventaja Una vez que se construye una capa, se puede reutilizar con muchos servicios de alto nivel FTP HTTP TELNET SSH TCP Ventaja Las capas y los servicios que ofrecen son un buen lugar para definir estándars. Lic. Esteban Cesar Calabria Aplicaciones Empresariales Desventaja No existen estándares en cuanto a la definición de los servicios e interfaces entre capaz para las aplicaciones empresariales. No existe un estándar/consenso para el desarrollo de aplicaciones empresariales de la misma forma que existe por ejemplo con TCP/IP Desventaja Capas adicionales pueden dañar la performance Lic. Esteban Cesar Calabria Aplicaciones Empresariales Desventajas Las capas encapsulan algunas cosas, pero no todas. Cambios en Cascada. Ejemplo Para agregar un campo nuevo para mostrar en la interfaz gráfica debe modificarse la base de datos y por consiguiente todas las capas en el medio Lic. Esteban Cesar Calabria Aplicaciones Empresariales Centraremos la discusión sobre Aplicaciones empresariales en tres Layers o capas lógicas Presentación Dominio, Domain, Lógica de Negocio, Capa de negocios Data Source (ej:Persistencia) Aplicaciones Empresariales En ingles se distinguen los términos Tier y Layer En castellano no hay una clara separación y suele referir a todo como capa Tier Implica una separación física Separar un sistema en capas no significa que todas tienen que correr en una PC o procesos distinto. Hablaremos de Capas lógicas Lic. Esteban Cesar Calabria Layering En Aplicaciones Empresariales Lic. Esteban Cesar Calabria Aplicaciones Empresariales Centraremos la discusión sobre Aplicaciones empresariales en tres Layers o capas lógicas Presentación Dominio, Domain, Lógica de Negocio, Capa de legocios Data Source (ej:Persistencia) Lic. Esteban Cesar Calabria Aplicaciones Empresariales Layer Presentación Dominio Data Source Responsabilidad Proveer lo necesario para mostrar información y manejar las acciones que genera el usuario Modela y resuelve la problemática para la que el sistema fue concebido Comunicación con: base de datos, sistemas de mensajería, manejadores de transacciones, otros paquetes Layering Dividir la aplicación en capas es algo conceptual. Por ejemplo, para un problema simple puedo hacer todo en un mismo método o hacer un método para la presentación, un método para la persistencia y un método para la lógica de negocios A medida que el sistema evoluciona esos métodos se pueden ir transformando en clases independientes Capa de Negocios Lic. Esteban Cesar Calabria Capa de Negocios Modela y resuelve la problemática para la que el sistema fue concebido Lic. Esteban Cesar Calabria Capa de Negocios Opciones Trabajar orientado a transacciones: y tener un metodo/objeto que se encargue de procesar cada transaccion del sistema: Aprovechar las funcionalidades de una plataforma que base mucha de su funcionalidad alrededor de un RecordSet Construir un modelo de negocios rico con objetos Lic. Esteban Cesar Calabria Capa de Negocios Opciones Transaction Script Table Module Domain Model Lic. Esteban Cesar Calabria Layer de Negocios Capa de Persistencia Lic. Esteban Cesar Calabria Capa de Persistencia Comunicación con: base de datos, sistemas de mensajería, manejadores de transacciones, otros paquetes Debido a su importancia nos concentraremos en la comunicación del objeto con la base de datos Lic. Esteban Cesar Calabria Capa de Persistencia Opciones Un objeto que abstraiga el acceso a una tabla Un objeto que abstraiga el acceso a un registro de la base de datos Un objeto que abstraiga el acceso a un registro de la base de datos y contenta lógica de negocios Un objeto que transporta objetos de memoria a una base de datos Lic. Esteban Cesar Calabria Capa de Persistencia Opciones Table Data Gateway / DAO Row Data Gateway Active Record Data Mapper Lic. Esteban Cesar Calabria Capa Presentación Lic. Esteban Cesar Calabria Capa Presentación Proveer lo necesario para mostrar información y manejar las acciones que genera el usuario Lic. Esteban Cesar Calabria Presentación Gran parte de la arquitectura de nuestra aplicación se vera afectada dependiendo si decidimos realizar: Rich Clients Thin Clients Smart Clients Capa de Persistencia Opciones Model View Controller Model View Presenter Template View Transform View Two Step View Lic. Esteban Cesar Calabria Aplicaciones Empresariales Heurística Importante Las capas de Domain y Data Source no deben ser dependientes de la presentación. En otras palabras no debe existir ningún método en capas que invoque a una rutina de la presentación. Ejemplo Separación en Capas Lic. Esteban Cesar Calabria Aplicaciones Empresariales En el Cliente Ventajas Tiempos de Respuesta (responsiveness) Operaciones Desconectadas Interfaces Gráficas ricas y complejas Lic. Esteban Cesar Calabria Aplicaciones Empresariales Veamos un ejemplos… Se quiere mostrar en una lista de productos de modo que aquellos que han incrementado sus ventas en relación al mes anterior se pinten con verde Como lo resolvemos? Donde ejecutar cada capa… Lic. Esteban Cesar Calabria Aplicaciones Empresariales La separación de capas es útil incluso si todas las capas corren en la misma PC. La decisión es dónde ejecutar el procesamiento En el cliente En un servidor Ej : tener un front-end HTML que use un web browser Lic. Esteban Cesar Calabria Aplicaciones Empresariales En el servidor Ventajas Facilita el deployment Facilita solucionar errores Soluciona problemas de compatibilidad Lic. Esteban Cesar Calabria Aplicaciones Empresariales Opción 1: Programo esa lógica en la capa de presentación de modo que antes mostrar un producto comparo sus ventas contra las del mes anterior Opción 2: Agrego un método en la capa de negocios que me devuelva un valor Boolean dependiendo si el producto vendió mas que el mes anterior. La capa de presentación llama a ese método para saber si pintar el producto de otro color o no Patrones Base Patrones Base Algunos patrones base que citaremos son: Dependency Injection / Plugin / Separated Interface Data Transfer Object / Value Object Record Set Gateway Mapper Layer Supertype Conditional Map