Please enable JavaScript.
Coggle requires JavaScript to display documents.
ARQUITECTURA DE SOFTWARE, Bibliografía:, Cliente - Servidor, Tubos y…
ARQUITECTURA DE SOFTWARE
La arquitectura de software consiste en distintos tipos de patrones que, a la hora de crear un programa, ayudan en la planificación y construcción del mismo.
-
Cliente - Servidor
Ventajas
Todos los datos se encuentran en un mismo lugar, requiere poco mantenumiento y la recuperación de los datos es posible.
Características
Un sevidor proporiona servicio a un cliente (persona o empresa). Es el encargado de aceptar el proceso y de entregar los datos solicitados por el cliente.
Desventajas
Los clientes se pueden ver afectados por virus, troyanos y phishing. Los servidores son propensos a sufrir ataques de denegación de servicio (ataques DoS) y los datos se pueden modificar durante su transmisión.
Tubos y filtros
Ventajas
Los filtros individuales son reutilizables en diferentes contextos, cambiarlos o agregarlos es más fácil ya que cada uno es independiente. Se puede escalar horizontalmente agregando más instancias de filtros.
Características
La aplicación se divide en etapas o filtros, los datos fluyen de una etapa a otra a través de tubos y cada filtro es independiente, es decir, realiza una tarea específica
Desventajas
La coordinación entre filtros puede ser compleja. El uso de tubos para la comunicación puede introducir un overhead, específicamente en sistemas distribuidos. Puede ser difícil adaptarse a cambios en el flujo de datos en tiempoo real.
-
-
-
-
Peer to peer
Ventajas
Debido a la falta de servidor central, los gastos son menores, siendo una opción más económica
Características
También se conoce como red entre pares. Permite compartir gran cantidad de datos al consistir en una red descentralizada de clientes y servidores. Todas las partes consumen recursos sin la neceesidad de tener un servidor centralizado.
Desventajas
Si uno de los pares es atacado por un virus, la posibilidad de que le lleve ese virus al resto de pares conectados en la red es bastante alta.
-
Separación de responsabilidades: Permite la separación de preocupaciones (SoC), ya que cada capa tiene una sola responsabilidad.
Fácil de desarrollar: Este estilo arquitectónico es especialmente fácil de implementar, además de que es muy conocido y una gran mayoría de las aplicaciones la utilizan.
Fácil de probar: Debido a que la aplicación construida por capas, es posible ir probando de forma individual cada capa, lo que permite probar por separada cada capa.
Fácil de mantener: Debido a que cada capa hace una tarea muy específica, es fácil detectar el origen de un bug para corregirlo, o simplemente se puede identificar donde se debe aplicar un cambio.
Seguridad: La separación de capas permite el aislamiento de los servidores en subredes diferentes, lo que hace más difícil realizar ataques.
-
Tolerancia a los fallos: Si una capa falla, todas las capas superiores comienzan a fallar en cascada.
Todas las capas se colocan de forma horizontal, de tal forma que cada capa solo puede comunicarse con la capa que está inmediatamente por debajo, por lo que, si una capa quiere comunicarse con otras que están mucho más abajo, tendrán que hacerlo mediante la capa que está inmediatamente por debajo.
Los servicios funcionan de forma independiente y proporcionan intercambios de datos o funcionalidades a sus consumidores.
Testabilidad: Las aplicaciones basadas en SOA son muy fáciles de probar, pues es posible probar de forma individual cada servicio.
Reutilización: Los servicios SOA son desarrollados para hacer una sola tarea, por lo que facilita que otras aplicaciones reutilicen los servicios que existen.
-
Escalabilidad: Los servicios SOA son muy fáciles de escalar, sobre todo porque permite agregar varias instancias de un servicio y balancear la carga desde el ESB.
Más puntos de falla: Debido a que SOA es una arquitectura distribuida, es necesario implementar estrategias de falla, pues se incrementa el número de puntos de falla.
Volumetría: SOA no se lleva con grandes volúmenes por petición, por lo que para procesar mucha información es recomendable utilizar otras tecnologías.
-