Getint.io platform is designed to work as a clustered system with multiple tenants under each cluster. So its possible to create multiple clusters and point forward incoming requests to specific cluster basing on their e.g. subdomains (like https://cluster1.getint.io.company.com).
With such approach, its possible to
run multiple clusters integrating different apps / software of organisation
separate and perform integrations of particular partners on dedicated clusters
within a cluster, setup integrations on separate tenants (e.g. put more resource intensive or business critical integrations on separate tenants)
have getint.io platform running Fully Behind Firewall
Below you can find cluster high level architecture diagram
Incoming HTTP Requests is containing information about a cluster and tenant to which it wants to reach. That info can be attached to requests under different technics but for not only subdomain approach is supported. So each tenant within each cluster is having different subdomain e.g. tenant1.getint.mycompany.com
Load balancer is directing the request to the proper cluster
Spring Web Application is the main heart of the cluster. It is receiving incoming requests, authenticates them, extract info about tenant and performs business logics to return a data
React UI is a chosen framework for building modern UI. Its packaged and included within Spring Web Application and server when user visits administration panel
Tenant N Thread as said before, clusters supports multi-tenancy. For every tenant separate integration thread is created which is responsible for performing data synchronization according to configured integrations by tenant users
PostgreSQL is a RDBMS of our default choice. Years of experience with that db system make us sure its the best choice we could as a heart of a platform data storage. One of the biggest advantages we found was different supported ways of data replication and most importantly, possibility to store non-relations data
Tenant Schema is created for each tenant within a database to which that cluster is connected. Each tenant has the access only to its schema.