Tech stack
NodeJS
Backend services are built with NodeJS as a main programming language. NodeJS enables us to create performant asynchronous web services. Its' event driven I/O model makes it easier to create scalable network solutions, which is very important when dealing with large volume of financial data.
Docker
We are using docker to containerise the Syllo into many container which can scale separately. Every containerized service covers specific set of Syllo's functionality and docker (together with Kubernetes) makes the deployement and running of the application faster and more straight forward.
SQL
SQL databases are used for relational data storage. The type of database depends on underlying hosting provider capabilities (AWS Aurora with MySQL dialect, SQL server, PostgreSQL). The financial data is relational in its' core and fits well with SQL databases. By carefylly using indexes, redundant columns and tables and other data optimisation techniques SQL databases proved to be reliable and performant in all Syllo's use cases.
NoSQL
NonSQL databases are used for storing large sets of non-relational data. They are mostly used for logging or for storing data in intermediate format before processing and storing the data in relational database. Their abilities to store and query non-structured data makes them perfect for fast querying through the data when prompt investigation and report generation is needed.
Microservice architecture
Syllo's functionalities are split into several microservices. Every microservice follows following principles:
-
Microservice is strictly scoped
Every microservice has specific set of functionalities and responsibilities which don't interfere with other microservices.
-
Microservice manages its' own data
Every microservice is responsible for data it uses for its' functioning.
-
Microservice is scalable
In case of higher load every microservice will scale for itself. This reduces operating costs and enables the system to scale faster.
-
Microservices are decoupled on infrastructure level
Microservices are hosted in their own containers. In case of brute-force attack and outage of a specific service, no other services are affected and affected containers can be easily replaced.