The ATEK platform is designed with an assembly of microservices. A microservice is a service that performs a simple task (e.g. sending an email) and operates independently from other services. Its microservices communicate with each other directly via gRPC, http/s requests or indirectly via queuing systems (Kafka, pub/sub, etc.).
The advantages of microservices are:
Scalable → it's easy to add resources depending on the load
Simple to write and maintain → The update does not influence the operation of the rest of the platform
Here are the different technologies that make up the ATEK platform.
Node is a programming language that allows you to design the business logic of the system.
Express and Fastify are Node.js libraries managing the entire HTTP layer. It takes care of transmitting to the user the various requests allowing them to display the requested web page.
Mongo is a non-relational database that is used to maintain the state of items available on the system. MongoDB offers the advantage of being flexible and helps reduce the costs of carrying out a project.
Bootstrap is a library that facilitates support for devices with different resolutions, including tablets and mobile devices. It thus makes it possible to make a web application accessible to reach a larger number of users.
Angular is a JavaScript library for building rich and advanced user interfaces.
Nginx is a web server (HTTP) supporting simultaneous connections. Nginx is considered the most robust web server in the industry. It thus allows your project to support a large number of users and sensors.
Twilio is the service used for mass sending of calls and SMS. This service offers a rich and robust infrastructure for simultaneously sending and receiving millions of calls and SMS messages in addition to managing interaction with users.
Sendgrid is the service used for mass sending of transactional emails. This service allows you to validate when customers have received and read the email.
Google Cloud Platform hosts the infrastructure. This platform makes it possible to increase (scaling) the infrastructure horizontally and vertically according to server load needs and to ensure the robustness of the system throughout the product life cycle.
Redis is a very fast in-memory database. It is used to “hide” information and process data more quickly.
Docker is a container system encompassing services, their operating systems and their dependencies.