Está en la página 1de 7

Pliego de Prescripciones Técnicas

ANEXO II: ARQUITECTURA DE DESARROLLO

DIRECCIÓN GENERAL DE SEGURIDAD, PROCESOS Y SISTEMAS CORPORATIVOS


DIRECCIÓN DE TRANSFORMACIÓN DIGITAL Y SISTEMAS
Subdirección de Soluciones y Productos
INDICE
1. Introducción ................................................................................................... 3
2. Capa de presentación .................................................................................... 5
3. Entorno Operativo .......................................................................................... 6
4. Componentes de ADIF .................................................................................... 7

Página 2 de 7
1. INTRODUCCIÓN
En la Dirección de Transformación Digital y Sistemas se ha definido una arquitectura
de referencia que deberán seguir todas las aplicaciones que se creen como parte de
un proyecto. A continuación se mostrará la arquitectura de microservicios basada en
Spring Framework. El diagrama de contexto de dicha arquitectura es el siguiente:

Los elementos que componen la arquitectura mostrada en la figura son los


siguientes:
• Edge Services. Es un proxy inverso cuya principal función es centralizar la
llamada de todas las peticiones. En esencia, al Edge Services le llegan
todas las peticiones y se encargará de saber a que microservicio se está
llamando en función de la URL.
• Load Balancer. Es un balanceador de carga
• Registry. Se utiliza para saber donde se encuentran todas las instancias de
un microservicio en todo momento. De esta manera, cada vez que se
levanta una instancia de microservicio, se debe registrar para poder saber
como acceder a la misma.
• Circuit Breaker. Es una manera de programar los métodos de “FailOver” en
los microservicios. La arquitectura de microservicios se basa en la
interconexión de pequeñas piezas. Si una de las piezas conectada falla, los
demás se quedarían esperando la respuesta, lo que podría provocar la
caída del sistema entero. Para evitar esta situación, se implementa un
método de “Fallo” que permita asegurar la consistencia del sistema.
• Logging (Logs Centralizados). Para tener controlado la información de
“Log” que proporciona cada uno de los microservicios, la mejor solución es
que todos ellos vuelquen esta información en un único punto. De esta
manera, en el caso de que se produzca un error, el mantenedor de los

Página 3 de 7
microservicios no se volverá loco buscando los “Logs” del sistema en
distintos puntos.
• Configuration (Config). Igual que sucede con los “Logs”, es necesario
guardar la configuración de todo un sistema de microservicios en el mismo
punto y, de esta manera, facilitar la configuración de los microservicios
que forman el sistema.
Como se puede ver en la figura, los microservicios se encuentran en el núcleo
de la figura. Para la implementación de dichos microservicios, nos basamos en Spring
Framework como se muestra en la siguiente figura.

Los elementos principales que se muestran en la figura son:


• Spring Boot. Proyecto de Spring que intenta facilitar la creación de
aplicaciones basadas en Spring. La idea es que con muy poco esfuerzo de
configuración y generación de código, podemos crear aplicaciones
dispuestas para ejecutarse en entornos productivos. Las principales
carácteristicas de Spring Boot son:
o Permite crear aplicaciones Spring stand-alone
o Es capaz de tener embebido un Tomcat o un Jetty (no se necesita
crear un WAR e instalarlo en un servidor de aplicaciones)
o Proporciona 'starter' que simplifica la configuración y la
construcción de aplicaciones
o Configura automáticamente las librerías de Spring y de 3rd.
siempre que sea posible
o Proporciona características como gestión de métricas, controles de
estado y gestión de la configuración externa lo que nos produce un
componente listo para ejecutarse en entornos productivos con
todas las garantías.
• Spring Data. Proyecto de Spring cuya misión principal es proporcionar un
modelo de trabajo familiar y consistente de acceder a los datos. Spring
Data facilita el uso de tecnologías de acceso a datos, tanto base de datos

Página 4 de 7
relacionales y no relacionales, como MapReduce y servicio de datos en
cloud.
• Hibernate. Es un ORM (Object-Relational Model) que facilita el mapeo de
atributos entre una base de datos relacional tradicional y el modelo de
objetos de una aplicación, mediante archivos declarativos (XML) o
anotaciones en los beans de las entidades que permiten establecer estas
relaciones.
• MyBatis. Es una herramienta de persistencia Java que se encarga de
mapear sentencias SQL y procedimientos almacenados con objetos a partir
de ficheros XML o anotaciones. Es un ORM muy similar a Hibernate con la
única diferencia que podemos utilizar sentencias en SQL estándar para
manejar la bases de datos.
• Swagger. Es un marco de software de código abierto que ayuda a los
desarrolladores a diseñar, construir, documentar y consumir servicios web
RESTful
• Hystrix. Se encarga de definir la política de fallo de cada uno de los
microservicios. Esta política, se desarrolla en cada uno de los
microservicios. Se podría decir que, a grandes rasgos, es un “try / catch”
distribuido. A parte de esta funcionalidad, Hystrix proporciona
monitorización en tiempo real de cada microservicio.

2. CAPA DE PRESENTACIÓN
Hasta ahora, hemos visto cómo construir elementos que nos permiten
implementar la lógica de negocio. Todos estos elementos y microservicios deben ser
capaces de presentar los datos al usuario para que sea capaz de tomar decisiones y
realizar acciones de manera adecuada. Para realizar esta operativa, hemos
posicionado Angular. Angular, es un framework para aplicaciones web desarrollado
en TypeScript, de código abierto, mantenido por Google, que se utiliza para crear y
mantener aplicaciones web de una sola página. Las principales características de
angular son:
• Cross Platform
o Utiliza las características actuales de las plataformas web actuales
con el fin de conseguir una buena experiencia de usuario
o Permite construir aplicaciones nativas utilizando plataformas como
Cordova o Ionic.
o Podemos crear aplicaciones de escritorio que funcionan de igual
manera en entornos Windows, Mac o Linux
• Velocidad y rendimiento
o Generación de plantillas optimizadas para los motores JavaScript
existentes en el mercado
o Es capaz de realizar renderizaciones de tu parte visual en, casi
exclusivamente, HTML y CSS, lo que conlleva un rendimiento muy
alto
• Mayor productividad

Página 5 de 7
o Creación de plantillas que nos permiten generar elementos de
manera muy rápida
o Proporciona herramientas de línea de comando (Angular CLI)
o Gran cantidad de IDEs para facilitar el desarrollo con Angular

3. ENTORNO OPERATIVO
Cuando hablamos de microservicios creado con Spring Boot, existen dos maneras de
desplegar nuestro servicio:
• Modelo cloud. Nuestro microservicio se incluirá en un contenedor de
docker que desplegamos en nuestra cloud privada. En este caso, utilizará
toda la infraestructura proporcionada por la cloud para gestionar todos los
elementos explicados en el diagrama de contexto de arquitectura (al
principio del anexo).
• Modelo stand-alone. Nuestro microservicio correrá en un servidor como un
servicio asociado a la máquina. En este caso, el diagrama de contexto de
arquitectura quedaría como sigue:

Los nuevos elementos que aparecen en el diagrama son:


• ELK / Log4j. Se necesita el uso de algún sistema de logging sencillo
como puede ser Log4j 2.0 o Elastic Search
• Spring Cloud Config. Proporciona soporte tanto en la parte cliente como
en la parte servidora para la configuración externa de entornos
distribuidos. Con el config server se centraliza la gestión de
propiedades externas entre los diferentes microservicios y a través de

Página 6 de 7
todos los entornos. Spring Cloud Config es capaz de refrescar el
contexto de Spring en caso de que alguna propiedad haya cambiado.
Su funcionamiento es similar al que explicamos con el servidor de
Eureka: Cada microservicio tiene un cliente que se comunica con el
servidor de configuración. Una característica muy interesante de Spring
Cloud Config es la posibilidad de guardar los ficheros de propiedades
en un repositorio GIT.
• 3Scale como Edge Services
• Consul es una herramienta para descubrir y configurar servicios.
Proporciona varias funcionalidades:
o Descubrimiento del servicio
o Comprobación de estado
o Almacenamiento clave/valor (Key/Value)
o Multi Datacenter

4. COMPONENTES DE ADIF
Para facilitar el desarrollo de aplicaciones de microservicios, ADIF proporciona los
siguientes componentes / aplicaciones:
1. Soteria. Aplicación que centraliza la gestión de la autenticación y
autorización de aplicaciones con arquitectura de microservicios.
2. Spring Cloud Config. Microservicio para gestionar las propiedades
compartidas.

Página 7 de 7

También podría gustarte