/
Synapsis

Synapsis

1. Concepto

La arquitectura básica de Synapsis se basa principalmente en 3 desarrollos:

  • TCI
  • HERMES
  • ATENEA

El objetivo de esta documentación es poder explicar el funcionamiento de HERMES y el TCI y mostrar donde corresponda, las interfaces que ATENEA expone a los usuarios, sin entrar en detalles técnicos.

2. TCI

b+dgtal Cloud Integrator, es el integrador y orquestador de Synapsis, además ofrece una serie de funcionalidades y estándares muy utiles para los desarroladores, que permite no solo agilizar los procesos, si no hacer que todos los desarrollos formen una red de mejoras que se alimentan unos de otros.


3. HERMES

El framework de Hermes funciona como una red de funcionalidades abierta a todos nuestros productos, que a su vez comparten interfaces, utilidades, roles, etc..

Los módulos de Hermes se comunican entre si a través del TCI, y utilizan ATENEA para integrarse en el FrontEnd de los productos.

4. ATENEA

Atenea es un desarrollo basado en Angular, que cuenta con una estructura modular para los desarrollos tanto de Hermes y TCI, así como de los productos.

Cada implantación es modularizable, lo que implica que cada entorno solo cuenta con los módulos necesarios, sin tener que sobrecargar la aplicación.

El acceso a cada recurso se realiza a través de Roles y Permisos, asignados por usuario.

5. Stack Tecnológico

A continuación se presentan cuales son las tecnologías que utiliza la arquitectura de Synapsis:


Interfaz de usuario

Angular

Angular es un framework de JavaScript de código abierto escrito en TypeScript. Su objetivo principal es desarrollar aplicaciones de una sola página. Google se encarga del mantenimiento y constantes actualizaciones de mejoras para este framework.

RxJS

La programación Reactiva es un paradigma de programación asincrónico interesado en los flujos de datos y la propagación al cambio. RxJS (Reactive Extensions for JavaScript) es una librería para programación reactiva usando el patrón Observable que hace más fácil la creación de código asincrono o basado en callbacks.

NgRx

NgRx es una librería de manejo de estado para aplicaciones en Angular. Proporciona una solución centralizada para el manejo y la gestión de los datos y la lógica de negocios en una aplicación Angular.

FUSE

Es una plantilla de administración para Angular. La principal ventaja de Fuse Angular es su simplicidad y la enorme cantidad de diferentes aplicaciones y páginas integradas: contactos, calendario, chat, correo, lista de tareas, scrumboard, administrador de archivos y otras opciones.

Comunicaciones

CXF

Apache CXF es un framework de servicios de Software Libre. CXF nos ayuda a construir y desarrollar servicios utilizando JAX-WS como API de programación. Estos servicios pueden hablar una gran variedad de protocolos como SOAP, XML/HTTP, HTTP RESTful, o CORBA, y pueden trabajar sobre transportes como HTTP, JMS o JBI.

Rest API

REST, que significa Representational State Transfer, es un estilo de arquitectura que se usa para el desarrollo de servicios web. Una API que sigue los principios de REST se conoce como RESTful API. Los servicios web RESTful se basan en los estándares HTTP y utilizan los métodos HTTP GET, POST, PUT, DELETE y otros para realizar operaciones.

GraphQL

GraphQL es un lenguaje de consulta para APIs. Proporcionan una interfaz fácil de usar para consultar datos de diferentes fuentes en una sola llamada de API.

Lógica de negocio

Java

Java es una plataforma de software y un lenguaje de programación orientado a objetos ampliamente utilizado. Su sintaxis deriva en gran medida de C y C++, pero tiene menos utilidades de bajo nivel que cualquiera de ellos. Una de las cualidades más destacadas de Java es su arquitectura WORA: «write once, run anywhere» (escríbelo una vez, ejecútalo en donde sea). Esto significa que una vez que se escribe un programa en Java, se puede ejecutar en cualquier plataforma que tenga una máquina virtual de Java (JVM) instalada. Además, cuenta con una gran cantidad de bibliotecas y herramientas de desarrollo que facilitan la creación de aplicaciones de todo tipo.

Spring boot

Spring Boot es un framework desarrollado para crear microservicios y aplicaciones web con Java como lenguaje de programación. Se trata de un entorno de desarrollo de código abierto y gratuito.

Hibernate

Hibernate es una herramienta de mapeo objeto-relacional (ORM) para la plataforma Java 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. Implementa el estándar JPA (Java Persistence API) que es la API de persistencia desarrollada para la plataforma Java EE. Hibernate es software libre, distribuido bajo los términos de la licencia GNU LGPL.2​

Liquibase

Liquibase es un librería Open Source (bajo licencia Apache 2.0), totalmente independiente del DBMS, que permite realizar el seguimiento, gestión y aplicación de cambios en el modelo de datos de una base de datos. Esto significa que cualquier cambio como crear una tabla , borrar o eliminar columnas se hará de manera automática al iniciar la aplicación haciendo que la integración continua sea más eficiente..

Ehcache

EhCache es un librería Open Source para el manejo de la caché de objetos en Java. Su principio básico es dividir la caché en diversas "regiones" donde se ubican los objetos. Estas regiones son configurables. A través del XML de configuración, se pueden definir sus características principales (tiempo de expiración, cantidad máxima de elementos, etc).

ActiveMQ

Apache ActiveMQ es un servicio de bróker de mensajería de código abierto (bajo licencia Apache 2.0) que implementa la especificación de Java Message Service 1.1 (JMS). Permite la comunicación asíncrona entre aplicaciones emisoras (servidor) y receptoras (cliente) con funciones como clustering, múltiples almacenes para mensajes, así como la capacidad de emplear cualquier administrador de base de datos como proveedor de persistencia JMS, aparte de VM y caché. Pese a ser una implementación de la especificación JMS, proporciona una gran cantidad de APIs para diferentes lenguajes como PHP, C/C++, .Net, Ruby, etc facilitando el acoplamiento entre diferentes proyectos de infraestructura SOA (Service-Oriented Architectures). Soporta diferentes protocolos de conexión como HTTP, TCP, SSL, etc. ActiveMQ se utiliza en las implementaciones de Enterprise Service Bus, tales como Apache ServiceMix o Apache Camel. Posee una interfaz gráfica de administración.

Quartz

Quartz es una libreria Java de código abierto bajo la licencia Apache 2.0 para programar la ejecución de tareas. Permite ejecutar tareas de forma periódica o de forma planificada en determinados tiempos utilizando expresiones cron. Las tareas se definen como componentes estándar de Java que pueden ejecutar prácticamente cualquier acción.

RxJava

RxJava es una librería que facilita la programación asíncrona basada en eventos. RxJava es la implementación de ReactiveX para Java que se basa en el patrón Observer al que le añade operadores que permiten componer distintos Observable además de abstraer de problemas como creación de hilos (threading ), sincronización y concurrencia. Este patrón de diseño de software define una dependencia del tipo uno a muchos entre objetos, de manera que cuando uno de los objetos cambia su estado, notifica este cambio a todos los dependientes.

Apache Camel

Apache Camel es un motor de enrutamiento y mediación basado en reglas que provee una implementación basada en objetos Java de los patrones propuestos en Enterprise Integration Patterns. Posee conectividad con una gran variedad de protocolos de transporte (Cola de mensajes, CXF WebService, Rest, sistemas de archivos, etc). Soporta DSL (lenguaje especifico de dominio) para hacer más sencillo de implementar. Apache Camel utiliza varios conceptos. La integración o funcionalidades desarrolladas se modelan como un flujo, ruta o route que comienza a partir de un origen o producer y se envía a un destino o consumer. En este flujo se tratan mensajes o Exchange que contiene además de los datos del mensaje o payload metadatos como cabeceras asociadas. En los diferentes pasos del flujo, el Exchange puede sufrir transformaciones con los procesadores o processor y en el que se aplican los diferentes patrones de integración. Al igual que en una aplicación de Spring existe el ApplicationContext, Apache Camel posee un contexto a modo de registro con todos los objetos de la instancia de Camel.

Datos

SQL Server

Microsoft SQL Server es un sistema de gestión de base de datos relacional, desarrollado por la empresa Microsoft. El lenguaje de desarrollo utilizado es Transact-SQL (TSQL), una implementación del estándar ANSI del lenguaje SQL, utilizado para manipular y recuperar datos (DML), crear tablas y definir relaciones entre ellas (DDL).

PostgreSQL

PostgreSQL, también llamado Postgres, es un sistema de gestión de bases de datos relacional (RDBMS) orientado a objetos y de código abierto que hace énfasis en la extensibilidad y el cumplimiento de SQL.

Storage

MiniIO

MinIO es un servidor de almacenamiento en la nube compatible con Amazon S3, liberado bajo Licencia Apache v2. Como almacén de objetos, MinIO puede almacenar datos desestructurados como fotos, vídeos, archivos de registro, copias de seguridad e imágenes de contenedor. El tamaño máximo de un objeto es 5TB.

Google Cloud Storage

Cloud Storage es un servicio para almacenar objetos en Google Cloud. Un objeto es un dato inmutable que consta de un archivo de cualquier formato con un tamaño de hasta 5 TB. Los objetos se almacenan en contenedores llamados buckets. Todos los buckets están asociados con un proyecto que, a su vez, se puede agrupar en una organización. Cada proyecto, bucket y objeto es un recurso en Google Cloud. Está estructurado bajo el formato, rendimiento y medidas de seguridad de la nube de Google.

Amazon S3

Amazon S3 o Amazon Simple Storage Service es un servicio ofrecido por Amazon Web Services (AWS) que proporciona almacenamiento de cualquier tipo de objetos a través de una interfaz de servicio web. Ofrece escalabilidad, alta disponibilidad, seguridad y rendimiento (baja latencia) ya que utiliza la misma infraestructura de almacenamiento escalable que utiliza Amazon.com para ejecutar su red de comercio electrónico.

Servidor

Apache Tomcat

Apache Tomcat (también llamado Jakarta Tomcat o simplemente Tomcat) es un servidor web de aplicaciones. Funciona como un contenedor de servlets desarrollado bajo el proyecto Jakarta en la Apache Software Foundation. Tomcat implementa las especificaciones de los servlets y de JavaServer Pages (JSP) de Oracle Corporation.

Netty

Es un framework java que permite crear aplicaciones cliente y servidor aprovechando las posibilidades que da el paquete de java.nio de la JDK. Este paquete permite realizar operaciones I/O de forma no bloqueante. Simplifica la comunicación con Sockets TCP y UDP.

Node.js

Ideado como un entorno de ejecución de JavaScript orientado a eventos asíncronos, Node.js está diseñado para crear aplicaciones network escalables.

DevOps

Maven

Maven es una herramienta de software para la gestión y construcción de proyectos Java. Es similar en funcionalidad a Apache Ant, pero tiene un modelo de configuración de construcción más simple, basado en un formato XML. Maven utiliza un Project Object Model (POM) para describir el proyecto de software a construir, sus dependencias de otros módulos y componentes externos, y el orden de construcción de los elementos. Viene con objetivos predefinidos para realizar ciertas tareas claramente definidas, como la compilación del código y su empaquetado.

Git

Git es un sistema de control de versiones distribuido que permite registrar los cambios que se hacen en los archivos para poder volver a versiones anteriores si algo sale mal. Fue diseñado por Linus Torvalds para garantizar la eficiencia y confiabilidad del mantenimiento de versiones de aplicaciones que tienen un gran número de archivos de código fuente.

GitLab

GitLab es una suite completa basada en Git que permite gestionar, administrar, crear y conectar los repositorios con diferentes aplicaciones y hacer todo tipo de integraciones con ellas. Además de gestor de repositorios, el servicio ofrece también alojamiento de wikis y un sistema de seguimiento de errores, todo ello publicado bajo una licencia de código abierto, principalmente.

Jenkins

Jenkins es un servidor de automatización open source escrito en Java. Jenkins ayuda en la automatización de parte del proceso de desarrollo de software mediante integración continua y facilita ciertos aspectos de la entrega continua. La integración continua es una práctica de desarrollo software donde los miembros del equipo integran su trabajo frecuentemente. Jenkins admite herramientas de control de versiones como CVS, Subversion, Git, Mercurial, Perforce y Clearcase y puede ejecutar proyectos basados en Apache Ant y Apache Maven, así como secuencias de comandos de consola y programas por lotes de Windows.

JFrog

JFrog Artifactory es un repositorio de artefactos universales que puede administrar más de 30 tipos de paquetes diferentes a lo largo del ciclo de vida de desarrollo de aplicaciones. Esta basado en JCR (usando JackRabbit como implementación) para guardar los artefactos y administración de los metadatos (xml).

Kubernetes

Kubernetes es una plataforma de sistema distribuido de código libre para la automatización del despliegue, ajuste de escala y manejo de aplicaciones en contenedores​ que fue originalmente diseñado por Google y donado a la Cloud Native Computing Foundation (parte de la Linux Foundation). Soporta diferentes entornos para la ejecución de contenedores, incluido Docker.

VMware Tanzu

VMware Tanzu es una familia de productos y servicios para modernizar aplicaciones e infraestructura. Con estas herramientas se pueden crear nuevas aplicaciones cloud-native o llevar aplicaciones existentes a contenedores, además de poder ejecutarlas y gestionarlas en forma consistente y segura. Permite desplegar clústeres de Kubernetes en minutos en la nube vSphere, Amazon, Azure, etc.

Harbor

Harbor es un repositorio de código abierto que almacena, firma y escanea contenido. Se utiliza como registro de contenedor privado de las imágenes utilizadas en los clústeres de Tanzu Kubernetes.

Docker

Docker es una plataforma de código abierto que permite a los desarrolladores crear, desplegar, ejecutar y gestionar contenedores, que son componentes estandarizados y ejecutables que combinan el código fuente de aplicación con las dependencias y las bibliotecas del sistema operativo (SO) necesarias para ejecutar dicho código en cualquier entorno.

Google Cloud

Google Cloud (también conocido como Google Cloud Platform o GCP) es una plataforma que provee recursos de computación en la nube para desarrollar, implementar y operar aplicaciones en la web. La lista de funciones de GCP es extensa, con más de 100 productos y servicios como máquinas virtuales, almacenamiento de archivos, bases de datos, etc

AWS

Amazon Web Services (AWS abreviado) es una colección de servicios de computación en la nube. Los servicios de AWS ofrecen soluciones escalables para la computación, el almacenamiento, las bases de datos, el análisis y mucho más.

En esta página:

Páginas relacionadas

Avvale 2024