Está en la página 1de 16

Universidad Tecnológica Cadereyta

Técnico Superior Universitario en Tecnologías de la


Información Área Entornos Virtuales y Negocios Digitales

Metodologías y Modelado de Desarrollo de Software

Ventajas y Desventajas de las Arquitecturas de Software

Alumno: Alejandro Guadalupe Castillo Tamez

Docente: MEBC Felipe de Jesús Ramírez Turrubiartes

Viernes 02 de febrero de 2024


Introducción
En este documento, se abarcará acerca de las principales ventajas de las
arquitecturas de Software que vimos en clase, las cuales son:
 SOA
 Microservicios
 Cliente-Servidor
 Monolítico
 Distribuido
 Capas

Además de, algunos ejemplos de cada uno para complementar los ejemplos que
ya vimos en clase.
SOA
Ventajas
 Reduce el nivel de acoplamiento.
 Clara definición de roles de desarrollo.
 Definición de seguridad más clara.
 Fácil testeo.
 Mejora la mantención.
 Favorece la reutilización.
 Favorece el desarrollo en paralelo.
 Permite fácil escalabilidad.
 Permite un mapeo directo entre los procesos y los sistemas.
 Permite un monitoreo preciso.
 Permite la interoperabilidad.

Desventajas
 SOA depende de la implementación de estándares. Sin estándares, la
comunicación entre aplicaciones requiere de mucho tiempo y código.
 SOA no es para: aplicaciones con alto nivel de transferencia de datos,
aplicaciones que no requieren de implementación del tipo request/response
y para aplicaciones que tienen un corto periodo de vida.
 Incrementalmente se hace difícil y costoso el ser capaz de cumplir con los
protocolos y hablar con un servicio.
 Implica conocer los procesos del negocio, clasificarlos, extraer las funciones
que son comunes a ellos, estandarizarlas y formar con ellas capas de
servicios que serán requeridas por cualquier proceso de negocio.
 En la medida en que un servicio de negocio, vaya siendo incorporado en la
definición de los procesos de negocio, dicho servicio aumentara su nivel de
criticidad. Con lo cual cada que se requiera efectuar una actualización en
dicho servicio (por ejemplo, un cambio en el código, una interfaz nueva,
etc.), deberá evaluarse previamente el impacto y tener mucho cuidado con
su implementación. Sin embargo, parte de la problemática anterior, puede
ser solventada en virtud a un buen diseño del servicio.

Microservicios
Ventajas
 Modularidad: al tratarse de servicios autónomos, se pueden desarrollar y
desplegar de forma independiente. Además, un error en un servicio no
debería afectar la capacidad de otros servicios para seguir trabajando
según lo previsto.
 Escalabilidad: como es una aplicación modular, se puede escalar
horizontalmente cada parte según sea necesario, aumentando el escalado
de los módulos que tengan un procesamiento más intensivo.
 Versatilidad: se pueden usar diferentes tecnologías y lenguajes de
programación. Lo que permite adaptar cada funcionalidad a la tecnología
más adecuada y rentable.
 Rapidez de actuación: el reducido tamaño de los microservicios permite
un desarrollo menos costoso, así como el uso de “contenedores de
software” permite que el despliegue de la aplicación se pueda llevar a cabo
rápidamente.
 Mantenimiento simple y barato: al poder hacerse mejoras de un solo
módulo y no tener que intervenir en toda la estructura, el mantenimiento es
más sencillo y barato que en otras arquitecturas.
 Agilidad: se pueden utilizar funcionalidades típicas (autenticación,
trazabilidad, etc.) que ya han sido desarrolladas por terceros, no hace falta
que el desarrollador las cree de nuevo.
Desventajas
 Alto consumo de memoria: al tener cada microservicio sus propios
recursos y bases de datos, consumen más memoria y CPU.
 Inversión de tiempo inicial: al crear la arquitectura, se necesita más
tiempo para poder fragmentar los distintos microservicios e implementar la
comunicación entre ellos.
 Complejidad en la gestión: si contamos con un gran número de
microservicios, será más complicado controlar la gestión e integración de
los mismos. Es necesario disponer de una centralización de trazas y
herramientas avanzadas de procesamiento de información que permitan
tener una visión general de todos los microservicios y orquesten el sistema.
 Perfil de desarrollador: los microservicios requieren desarrolladores
experimentados con un nivel muy alto de experiencia y un control
exhaustivo de las versiones. Además de conocimiento sobre solución de
problemas como latencia en la red o balanceo de cargas.
 No uniformidad: aunque disponer de un equipo tecnológico diferente para
cada uno de los servicios tiene sus ventajas, si no se gestiona
correctamente, conducirá a un diseño y arquitectura de aplicación poco
uniforme.
 Dificultad en la realización de pruebas: debido a que los componentes de
la aplicación están distribuidos, las pruebas y test globales son más
complicados de realizar.
 Coste de implantación alto: una arquitectura de microservicios puede
suponer un alto coste de implantación debido a costes de infraestructura y
pruebas distribuidas.
Cliente-Servidor
Ventajas
 Administración centrada en el servidor. Los clientes tienen poca
trascendencia en el esquema y sus necesidades de administración son
menores.
 Centralización de los recursos. Los recursos comunes a todos los
usuarios se administran en el servidor. Así se evitan situaciones como la
redundancia o inconsistencia de información en las bases de datos.
 Mejora de la seguridad. Al disponer de un mecanismo central de
autenticación, las posibilidades de acceso indebido se reducen
considerablemente.
 Escalabilidad de la instalación. Se pueden añadir o suprimir clientes sin que
el funcionamiento de la red se vea afectado.

Desventajas
 Coste elevado. Tanto la instalación como el mantenimiento son más
elevados debido al perfil muy técnico del lado servidor.
 Dependencia del servidor. Toda la red está construida al rededor del
servidor y si éste deja de funcionar o lo hace con un rendimiento
inadecuado, afectará a toda la infraestructura.

Monolítico
Ventajas
 Fácil de desarrollar: Debido a que solo existe un componente, es muy fácil
para un equipo pequeño de desarrollo iniciar un nuevo proyecto y ponerlo
en producción rápidamente.
 Fácil de escalar: Solo es necesario instalar la aplicación en varios
servidores y ponerlo detrás de un balanceador de cargar.
 Pocos puntos de fallo: El hecho de no depender de nadie más, mitiga
gran parte de los errores de comunicación, red, integraciones, etc.
Prácticamente los errores que pueden salir son por algún bug del
programador, pero no por factores ajenos.
 Autónomo: Las aplicaciones Monolíticas se caracterizan por ser totalmente
autónomas (auto suficientes), lo que les permite funcionar
independientemente del resto de aplicaciones.
 Performance: Las aplicaciones Monolíticas son significativamente más
rápidas debido que todo el procesamiento lo realizan localmente y no
requieren consumir procesos distribuidos para completar una tarea.
 Fácil de probar: Debido a que es una sola unidad de código, toda la
funcionalidad está disponible desde el inicio de la aplicación, por lo que es
posible realizar todas las pruebas necesarias sin depender de nada más.

Desventajas
 Anclado a un Stack tecnológico: Debido a que todo el software es una
sola pieza, implica que utilicemos el mismo Stack tecnológico para
absolutamente todo, lo que impide que aprovechemos todas las tecnologías
disponibles.
 Escalado Monolítico: Escalar una aplicación Monolítica implica escalar
absolutamente toda la aplicación, gastando recursos para funcionalidad que
quizás no necesita ser escalada (en el estilo de Microservicios
analizaremos como solucionar esto).
 El tamaño sí importa: Las aplicaciones Monolíticas son fácil de operar con
equipo pequeños, pero a medida que la aplicación crece y con ello el
equipo de desarrollo, se vuelve cada vez más complicado dividir el trabajo
sin afectar funcionalidad que otro miembro del equipo también está
moviendo.
 Versión tras versión: Cualquier mínimo cambio en la aplicación implicará
realizar una compilación del todo el artefacto y con ello una nueva versión
que tendrá que ser administrada.
 Si falla, falla todo: A menos que tengamos alta disponibilidad, si la
aplicación Monolítica falla, falla todo el sistema, quedando totalmente
inoperable.
 Es fácil perder el rumbo: Por la naturaleza de tener todo en un mismo
módulo es fácil caer en malas prácticas de programación, separación de
responsabilidades y organización de las clases del código.
 Puede ser abrumador: En proyectos muy grandes, puede ser abrumador
para un nuevo programador hacer un cambio en el sistema.

Distribuido
Ventajas
 Incrementa la eficacia. Los sistemas distribuidos permiten afrontar
problemas y proyectos que necesitan de procesamientos complejos de
forma más eficiente y a un menor coste. El uso de múltiples nodos para
procesar una o múltiples tareas supone un mayor rendimiento al optimizar
la distribución del mismo en los diferentes sitios de la red.

 Mayor tolerancia a los errores. Una arquitectura distribuida tiene una


mayor tolerancia a los fallos, ya que al caer un nodo la información se
encontrará en otros. Se trata de un sistema mucho más robusto que uno
centralizado debido a esta tolerancia a los fallos sin que se vean afectados
los procesos o los datos.
Al estar distribuida la carga de trabajo en muchos nodos distintos, ante el
fallo de uno de ellos los demás no se verán afectados y el sistema continúa
funcionando, lo que permite afirmar que los sistemas distribuidos son más
confiables que los centralizados.

 Proporciona una mayor velocidad. Una arquitectura distribuida se


caracteriza por proporcionar una mayor velocidad en el procesamiento. Por
ejemplo, si se realiza una consulta a una base de datos, los procedimientos
se dividen entre los distintos nodos, obteniendo una respuesta mucho más
rápida que si se realiza con un único nodo.

 Flexibilidad y escalabilidad. Un sistema distribuido puede ser ampliado de


forma horizontal en caso de necesidad de incremento de alguna de sus
características, como procesamiento (CPU), almacenamiento o memoria
RAM. En lugar de aumentar de forma vertical la capacidad de los equipos,
el sistema distribuido se aumenta de forma horizontal añadiendo un nuevo
nodo. Un sistema distribuido puede añadir recursos para satisfacer las
nuevas demandas sobre el sistema.

Desventajas
 Mayor nivel de complejidad. En comparación con los sistemas
centralizados, los distribuidos tienen un mayor nivel de complejidad a la
hora de diseñarlos, configurarlos y gestionarlos de forma eficiente.

 Seguridad. Los sistemas distribuidos conectan muchos nodos a través de


la red y son muchos los usuarios que acceden a la misma, lo que lleva
aparejado un aumento del riesgo en la integridad y privacidad de los datos y
las comunicaciones.
Precisamente por este motivo es necesario adoptar medidas de seguridad
adicionales para este tipo de arquitectura, de modo que se pueda
compensar el riesgo de potenciales ataques, o en caso de producirse,
mitigar sus efectos.

 Mayor esfuerzo. La gestión de un sistema distribuido requiere de un mayor


esfuerzo por parte de los administradores, ya que el sistema puede incluir
máquinas que dispongan de diferentes sistemas operativos o distintas
versiones de los mismos. Hacer funcionar toda esta arquitectura de forma
eficiente es mucho más complicado que en un sistema único centralizado y
requiere del uso de protocolos estándar.
Capas
Ventajas
Modularidad: facilita el desarrollo, la prueba y el mantenimiento de cada capa de
forma independiente.
Separación de responsabilidades: permite la separación de responsabilidades y
una mayor claridad en la arquitectura, ya que cada capa tiene una función
específica.
Reutilización: posibilita que las capas se reutilicen en diferentes proyectos, lo que
reduce el tiempo y los costos de desarrollo.
Escalabilidad: significa que se pueden agregar o quitar capas según las
necesidades del sistema.
Flexibilidad: es adaptable a diferentes entornos y requisitos del sistema.

Desventajas
 Complejidad: aumenta la complejidad del sistema debido a la necesidad
de interfaces y comunicación entre las capas.
 Tiempo y esfuerzo de desarrollo: requiere más tiempo y esfuerzo de
desarrollo debido a la necesidad de diseñar, desarrollar y probar cada capa
por separado.
 Consumo de recursos: aumenta el consumo de recursos del sistema,
como el uso de memoria y CPU, debido a la necesidad de comunicación
entre las capas.
 Costos: eleva los costos del desarrollo debido a la necesidad de diseñar y
desarrollar varias capas separadas.
 Rendimiento: disminuye el rendimiento del sistema debido a la necesidad
de comunicación entre las capas.
Ejemplos de las arquitecturas de Software
SOA
Cisco
El primer caso a mencionar es el de Cisco. La empresa adoptó SOA para lograr
que su experiencia en la realización de pedidos sea coherente para todos los
canales y productos. Para eso, expuso los procesos de pedidos como servicios
que tanto las divisiones como las adquisiciones y los socios comerciales pudieran
añadir a sus propios sitios web.

Delaware Electric
En el caso de Delaware Electric, la empresa recurrió a la arquitectura SOA para
integrar sistemas que antes no podían comunicarse entre sí. De esta forma, logró
mejorar la eficiencia de desarrollo, a la vez que ayudó a la organización a
mantener su solvencia en momentos en los que la tarifa de la electricidad estaba
congelada.

Microservicios
Amazon: No soporta tantos dispositivos como Netflix, pero tampoco es que sea
fundamental para cubrir su sector. Migró hace tres años a la arquitectura de
microservicios siendo una de las primeras grandes compañías que la
implementaban en producción. No hay cifra aproximada de la cantidad de
solicitudes que pueden recibir a diario, pero no son pocas. Entre éstas
encontramos multitud de aplicaciones, las API del servicio web que ofrecen o la
propia web de Amazon, cuyos ingenieros reconocen que habría sido imposible
sobre la arquitectura monolítica con la que trabajaban previamente.

Ebay: Cómo no, una de las empresas con mayor visión de futuro, siendo pionera
en la adopción de tecnologías como Docker o ésta que nos ocupa. Su aplicación
principal comprende varios servicios autónomos, y cada uno ejecutará la lógica
propia de cada área funcional que se ofrece a los clientes.
Cliente-Servidor
 Outlook es un cliente de correo que sirve para leer los correos del servicio
Hotmail.
 WhatsApp o Telegram son clientes de servicios de chat, vídeo, audio

Monolítico
Dos ejemplos de arquitecturas monolíticas muy popularizados son los ERP
(Enterprise Resource Planning) y los CRM (Customer Relation Management).

Distribuido
Kubernetes es una herramienta muy utilizada en los sistemas distribuidos porque
puede crear un sistema distribuido a partir de una colección de contenedores. Los
contenedores crean nodos del sistema distribuido y Kubernetes orquesta la
comunicación de red entre esos nodos, además de gestionar el escalado dinámico
horizontal y vertical de los nodos en el sistema.

Otro buen ejemplo de sistema distribuido son las criptomonedas, como Bitcoin y
Ethereum, que son sistemas distribuidos punto a punto.

Capas
 Aplicaciones de línea de negocios (LOB), como contabilidad, y sistemas de
gestión de clientes.
 Aplicaciones web Corporativas y sitios Web
Conclusión
Con esta investigación, pudimos conocer perfectamente que ventajas propone
cada arquitectura de software, así como también podemos encontrar algunas
desventajas de estas mismas para tener en consideración ambas partes al
momento de utilizar una de estas arquitecturas para modelar un software.
También incluyendo algunos ejemplos conocidos en donde se encuentran estas
arquitecturas de software, con el propósito de entender mejor como funciona cada
una y en donde se aplican en la vida cotidiana.
Referencias Bibliograficas

Arquitectura de microservicios: qué es, ventajas y desventajas. (2019, September 3). Decide

Soluciones. Retrieved February 2, 2024, from https://decidesoluciones.es/arquitectura-de-

microservicios/

Arquitectura de Monolítico. (n.d.). Reactive Programming. Retrieved February 2, 2024, from

https://reactiveprogramming.io/blog/es/estilos-arquitectonicos/monolitico

Diferencias entre arquitecturas de microservicios y monolíticas. (n.d.). Chakray. Retrieved

February 2, 2024, from https://www.chakray.com/es/integracion-de-datos-con-

arquitecturas-monoliticas-o-de-microservicio/

Durán, M. (2023, April 11). Qué es la arquitectura en capas, ventajas y ejemplos. Blog de

HubSpot. Retrieved February 2, 2024, from https://blog.hubspot.es/website/que-es-

arquitectura-en-capas

Ejemplos de arquitectura SOA. (n.d.). Revista Cloud. Retrieved February 2, 2024, from

https://revistacloud.com/ejemplos-de-arquitectura-soa/

» La importancia de una arquitectura distribuida. (2020, June 23). Ilimit Comunicacions. Retrieved

February 2, 2024, from

https://ilimit.com/blog/importancia-arquitectura-distribuida/#ventajas-y-desventajas-de-una-

arquitectura-distribuida

Peláez, J. (2009, May 30). Arquitectura basada en capas. – Blog de Juan Peláez en Geeks.ms.

Geeks.ms. Retrieved February 2, 2024, from

https://geeks.ms/jkpelaez/2009/05/30/arquitectura-basada-en-capas/

¿Qué es una arquitectura cliente-servidor? (2023, August 16). ADR Formación. Retrieved

February 2, 2024, from

https://www.adrformacion.com/knowledge/ingenieria-y-proyectos/_que_es_una_arquitectu

ra_cliente_servidor_.html
¿Qué es un sistema distribuido? (n.d.). Atlassian. Retrieved February 2, 2024, from

https://www.atlassian.com/es/microservices/microservices-architecture/distributed-

architecture

Qué son Microservicios y ejemplos reales de uso. (2016, April 19). OpenWebinars. Retrieved

February 2, 2024, from https://openwebinars.net/blog/microservicios-que-son/

Ruiz, P. (2013, August 13). 1.4. Ventajas e inconvenientes de la arquitectura cliente/servidor.

SomeBooks.es -. Retrieved February 2, 2024, from https://somebooks.es/ventajas-e-

inconvenientes-de-la-arquitectura-clienteservidor/

VENTAJAS Y DESVENTAJAS DEL SOA – SOA. (2016, August 21). SOA. Retrieved February 2,

2024, from https://yamilpo.wordpress.com/2016/08/21/ventajas-y-desventajas-del-soa/

También podría gustarte