Logo Studenta

Arquitectura del Software (6)

Vista previa del material en texto

Arquitectura del Software 
 
La arquitectura de software se encarga de diseñar las entrañas del software, desde los algoritmos hasta 
la estructura de los datos. Concretando un poco, podríamos decir que es un conjunto de padrones a través 
de los cuales se define como tendrá que ser el código fuente. Marca unas pautas, objetivos y restricciones 
teniendo en cuenta los posibles riesgos a los que se puede enfrentar el desarrollo y cómo superarlo. 
También es necesario tener presente como quieres que interactuen las diferentes partes del sistema. Hay 
que tener bien claro que la arquitectura de software es un cúmulo de decisiones que pueden alterar el 
producto final en su totalidad. 
Pero para entender toda la importancia de la arquitectura de software, os dejamos una lista con sus 
principales características. 
 
La importancia de la arquitectura de software 
1. Se crea una base sólida para el proyecto. 
2. La plataforma creada es escalable. 
3. Aumenta el rendimiento de la plataforma. 
4. Reduce considerablemente los costes y evita duplicaciones del código. 
5. La arquitectura de software es una manera de garantizarte una buena IT, puesto que el arquitecto debe 
conservar durante toda la creación, una visión general del producto, de forma que pueda bajar a 
pequeñas partes del código y saber enlazarlas con el resto. Debe mantener una línea lógica y en 
ocasiones incluso, dar la cara para asegurar resultados exitosos. 
6. El arquitecto, al tener esta visión global del proceso e incluso del producto final, sabe en qué aspectos 
se puede ahorrar gastos. De forma que reutiliza procesos y comparte los datos para optimizar al máximo 
cada proceso evolutivo, buscando a su vez la mayor perfección posible. 
7. Ya que el código es propio, es mucho más visible y se tiene pleno conocimiento sobre él, de forma que 
será mucho más fácil encontrar problemas y por lo tanto soluciones, en definitiva, tenemos un 
mantenimiento mucho más eficaz. 
8. Este conocimiento, a la par nos permite la implementación de cambios en los sistemas de manera más 
rápida. 
9. Incrementa la calidad de la plataforma. 
10. Ayuda en las tareas más complejas. 
11. Nos permite hacer la plataforma de manera más rápida. 
12. Permite una mayor adaptabilidad. Por ejemplo a la hora de modificar características técnicas en front 
end, o implementar motores de reglas. Son tareas más sencillas de adaptar cada una a su debido 
tiempo, ya que por otro lado el arquitecto de software establece prioridades. 
13. Ayuda a la gestión de riesgos reduciendo el porcentaje de fracasos. 
14. Reduce los tiempos de creación y de entrega de los proyectos. 
15. Da prioridad a los conflictos. Permite comunicación entre las partes y decisiones de diseño previas a 
su implementación, de forma que sea más fácil un diseño especializado. 
 
¿Qué aspectos debería tener en consideración un arquitecto de software ? 
 
Para que la arquitectura de Software sea posible, es necesario tener en cuenta una serie de aspectos sin 
los cuales, no sería posible. 
 Usuario final. No solo es una meta a la que se tiene que llegar, y para el cual queremos adaptar el 
producto, sino que el usuario final en sí, es intuitivo y exigente. Por lo tanto debemos presentarle un 
producto fiable, funcional, de fácil uso, con un buen rendimiento y seguro. 
 El administrador del sistema. Deberá estar alerta, velando por el comportamiento intuitivo y la buena 
administración. Así como de controlar las herramientas que nos ayudan a sostenerlo. 
 El vendedor. Tiene que ser consciente en todo momento de cómo se encuentra la competencia, saber 
qué es lo que quieren los usuarios, que productos se venden mejor, cuales son los costes del producto, o 
cuales son las tendencias. 
 El cliente. Preocupado en todo momento por su producto, por si será estable, cual será el coste final y 
si se cumplirá el calendario de entrega. 
nicoj
Resaltar
nicoj
Resaltar
nicoj
Resaltar
nicoj
Resaltar
nicoj
Resaltar
nicoj
Resaltar
nicoj
Resaltar
nicoj
Resaltar
nicoj
Resaltar
nicoj
Resaltar
nicoj
Resaltar
nicoj
Resaltar
nicoj
Resaltar
nicoj
Resaltar
nicoj
Resaltar
nicoj
Resaltar
nicoj
Resaltar
nicoj
Resaltar
nicoj
Resaltar
 El desarrollador. Estará atento a que todos los requisitos se cumplan y que el diseño sea simple y 
coherente. 
 El project Manager. Consciente del presupuesto, los recursos, el coste y el timing de entrega, su 
misión es conseguir que todo se cumpla. Para eso, coordina a los desarrolladores y hace de intermediario 
con el cliente. 
 The maintainer. Se preocupa por finalizar el proyecto con contenidos coherentes y comprensibles. 
Documenta el diseño para que sea más sencilla su ejecución y que futuras modificaciones sean más 
factibles. 
 
En definitiva, el arquitecto de Software debe encargarse de organizar desde una visión general cada 
proceso de creación del código, buscando la forma más sencilla, económica, práctica y segura de seguir 
adelante. 
 
 
Microservicios 
 
Los Microservicios son una moderna arquitectura de software, no un API (Interfaz de Programación 
de Aplicaciones / Application Programming Interface) o una tecnología en sí, la cual puede instalarse y 
utilizarse. Las arquitecturas de software, también conocidas como patrones de software, son ajenas por 
completo a los lenguajes de programación, pues estás nada más establecen la forma en la que las 
tecnologías deben funcionar y no como son implementadas. 
Los Microservicios pueden ser vistos como una evolución de la Arquitectura SOA (Service-
Oriented Architecture), la cual guía a los desarrolladores a crear aplicaciones más modulares, que sean 
funcionales y autónomas, con una alta capacidad de ser reutilizadas de una forma eficaz, tal como se hace 
de forma análoga, cuando optimizamos la utilización de algún hardware, en el que se despliega solo lo 
realmente necesario, en lugar de desplegar todo su potencial por completo sin necesidad. 
La Arquitectura de Microservicios, en la práctica no ha llegado a masificarse tanto como en la teoría, es 
decir, es más conocida que usada. Sin embargo, cada día más, muchos desarrolladores están 
implementandola por ser un modelo de desarrollo de software que mejora las variables tiempo, 
rendimiento y estabilidad dentro de los proyectos donde se aplica. Además, su sencilla 
escalabilidad asociada la hace especialmente adecuada en los desarrollos en los que la compatibilidad 
multiplataforma (Web, Móvil, Wearables, IoT) es imprescindible 
 
Pero, mientras SOA es una Arquitectura de más alto nivel, es decir, una Arquitectura donde se 
construyen aplicaciones basadas en servicios, donde un servicio es la unidad más pequeña y funcional de 
trabajo dentro de una aplicación creada, la Arquitectura de Microservicios también nos permite crear 
servicios, pero estos servicios están diseñados de forma muy pequeña y especifica para que cumplan 
una funcionalidad muy precisa y puntual, de forma tal, que puedan ser desacoplados del resto de 
aplicaciones y funcionar de una forma totalmente autónoma del resto de la aplicación donde fue creada. 
 
nicoj
Resaltar
nicoj
Resaltar
nicoj
Resaltar
nicoj
Resaltar
nicoj
Resaltar
nicoj
Resaltar
nicoj
Resaltar
nicoj
Resaltar
 
Ventajas de la Arquitectura de Microservicios 
Cuando una plataforma web hace uso de la Arquitectura de Microservicios suele tener las siguientes 
ventajas: 
 Resolver fácilmente cada inconveniente o problema presentado abordando cada pequeño 
Microservicio involucrado en una situación especifica. 
 Mitigar fallas generales o globales de los servicios, ya que cuando un Microservicio falla no afecta 
a losemás, debido a que son totalmente independientes. 
 Facilitar el lanzamiento e incorporación de completas o especificas funcionalidades o servicios, 
ya que se pueden añadir o quitar y actualizar cada Microservicio por separado y progresivamente. 
 Mejorar el acceso a las aplicaciones o servicios creadosdesde todo tipo de dispositivo y 
plataforma. 
 Aumentar la versatilidad de la plataforma, ya que los Microservicios pueden estar distribuidos en 
diferentes servidores y estar escritos en diferentes lenguajes. 
Frameworks de Código Abierto 
Existen muchas opciones de código abierto que los desarrolladores de software pueden utilizar para 
desarrollar soluciones que formen parte de las Arquitecturas de Microservicios. Específicamente para Java 
que es una tecnología muy usada para ello, existen las siguientes: 
 Cricket 
 Dropwizard 
 Eclipse MicroProfile 
 Helidon 
 Jersey 
 Payara Micro 
 Play 
 Restlet 
 Spark 
 Spring Boot 
 Squash 
 Swagger 
 Telepresence 
 WildFly Thorntail 
 Zipkin 
Ejemplos de Web con Arquitecturas de Microservicios 
Entre la gran cantidad de sitios webs que prestan servicios de aplicaciones a gran escala y han 
implementado progresivamente la Arquitectura de Microservicios para mejorar el mantenimiento y la 
escalabilidad de su plataforma de servicios y productos haciéndola simple, efectiva y rápido podemos 
mencionar tres grandes de la industria que son: 
 Amazon 
 Ebay 
 Netflix 
https://cricketmsf.org/
https://www.dropwizard.io/1.3.5/docs/
https://microprofile.io/
https://helidon.io/#/
https://jersey.github.io/
https://www.payara.fish/payara_micro
https://www.playframework.com/
https://restlet.com/
http://sparkjava.com/
https://spring.io/projects/spring-boot
https://github.com/solo-io/squash
https://swagger.io/
https://www.telepresence.io/
https://thorntail.io/
https://zipkin.io/
nicoj
Resaltar
nicoj
Resaltar
 
Conclusión 
Queda claro que los Microservicios aportan mucho en materia de Desarrollo de Software moderno 
basado en la Web, pero también implican abordar muchos retos nuevos que solucionar. Problemas que 
no solo tienen que ver con que Framework aprender y trabajar eficientemente, sino como estos nuevos 
desarrollo se complementan e implementan en los departamento de TI, quienes a fin de cuenta son los 
que los ponen en línea y gestionan, y tienen un voto de peso en las decisiones finales sobre cada 
desarrollo. Pero está Arquitectura está aquí y ha venido para quedarse por un buen tiempo.

Otros materiales