Technologies that development supports
The development of the platform is supported in a microservices architecture. The technologies used in the construction are homogeneous for all microservices, however they can be used to extend and add new elements to the architecture (language, framework) as long as it complies with the principles of development.
The development of the microservices that make up the platform is Java, using the specifications of version 1.8 or higher. The microservice that implements the Oauth2 standard is developed with C# programming language.
Main libraries used as dependencies
- Spring Cloud: The microservice architecture (link to point 4) implemented is managed by the components and facilities offered by the Spring Cloud component suite, developed by Pivotal. This library allows the implementation of centralized configuration and discovery patterns. Also Spring Cloud Config and Eureka are used respectively.
- Netflix OSS: The basic microservices architecture is complemented with the application of the API Gateway pattern using the Zuul product of the Netflix OSS microservices suite and for the growth of the exploitation of the infrastructure the use of Ribbon as a balancer is foreseen of loading. Synchronous communication between microservices is done using the declarative query library of REST OpenFeign APIs.
- Spring Cloud Stream: The definition of the communication mode between the microservices is a relevant part for the construction of a microservices architecture. There are two communication modes: synchronous and asynchronous. The deployed architecture combines both modes using as a broker for the communication an instance of Apache Kafka. Spring Cloud Stream provides functionalities to easily communicate with Kafka, while in the future it facilitates the introduction of new brokers such as Redis, RabbitMQ or other supported systems.
- GoogleMaps SDK: Queries and operations on Google Maps APIs are executed from the location and georeferencing microservices that facilitates and simplifies the configuration needed to access the APIs.
- Spring Starter Actuator: Dependency that adds to each microservice with Zero configuration facilities for its monitoring, status verification and statistics.
- Swagger: Library that allows documentation of REST resources using the OpenAPI standard.
- Oauth2: Standard used to manage registry operations, authentication, access control, roles and security in general for the access of users and applications to systems.
- JavaMail: Library for sending emails from Java.
Database management system
The system is basically supported in two database engines: MySQL that follows the SQL relational paradigm, and ElasticSearch (ES) oriented to JSON documents that enables search operations, the storage of unstructured data, the use of geo-referenced data and full-text searches. In the description of microservices it is specified which is used in each case.