Reason to deploy a cloud native deployment
-
1 Click deployment of EF-CX tenant
Bigger Picture
External components for-example mongo, minio, redis and postgreSQL are deployed using replication while using the local disk as the storage mechanism.
Sign-Up
A user signs up form with
-
username
-
Password
-
email
and is returned with a customer ID
Process
The user given a progress bar which will run below given schedulers at the backend.
-
region
-
namespaced EF-CX deployment
-
instantiation of tenant ID in KeyCloakwith central postgreSQL DB running in pgpool env witha minimum of 1K connections availablePV size of 250 GiBmongoOption-1 1 single MongoDB cluster ( 1 master, all else slaves )consistency 1 master always availableDR can survive upto 1 node in the whole clusteraverage size of the customer dataretention of the customer's dataretention policymanagement is expensiveadministration is hecticesingle point of failureeasy to setup with Local-Volume based storage ( no need for a Cloud native Storage ) Backup and restores are overall performance restoration of the cluster may take time.Option-21 single instance per Tenant ( Using MongoDB operator )Requires Cloud Enabled Storage ( longhorn, OpenEBS or Rook )manageabilityadministration ( more sort of automated administration is handy with operator style )backups and restoration is easyredisOption-1Redis Operator based deploymentindependently covered and managedrequires Cloud Native Storage ( Longhorn, OpenEBS or Rook ) ( another option is to use local-disk of the node as always )performance degradations covered because another client may have messed up the their own redis instnace.Backup/recovery-- do we really need to backup redis data PV ??? discuss Node Failures are covered when Node where the redis instance was running, fails, the cluster spins up the same instance on another available node with possibilities of if using local storage – the re-birth will be flash blankif using Cloud native – will emerge from where it crashed.Option -2Deploy as a Redis Cluster ( possibly with Centinel ) One Central EndPoint for the whole clusterRequires at least 5 nodes ( a minimum of 3 , but recommended 5 )One large database ( with centinel only 1 large database is possible ) but solution is guarentee to run Node failure survivals can survive until last nodeBackup/restore – discussOption-3Deployed as 1 Master with 1 Slave approachCan be either per tenant or CentralSupports multiple databasecan be namespaced ( local to tenant ) requies at least 2 nodesOption-41 single instance of the redis will be enough ( manually driven )ActiveMQ/Artemis in a central Poolpreferred single instance per tenant