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 KeyCloak
-
with central postgreSQL DB
-
running in pgpool env with
-
a minimum of 1K connections available
-
PV size of 250 GiB
-
-
-
-
mongo
-
Option-1
-
1 single MongoDB cluster ( 1 master, all else slaves )
-
consistency
-
1 master always available
-
DR can survive upto 1 node in the whole cluster
-
-
average size of the customer data
-
retention of the customer's data
-
retention policy
-
management is expensive
-
administration is hectice
-
single point of failure
-
easy 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-2
-
1 single instance per Tenant ( Using MongoDB operator )
-
Requires Cloud Enabled Storage ( longhorn, OpenEBS or Rook )
-
manageability
-
administration ( more sort of automated administration is handy with operator style )
-
backups and restoration is easy
-
-
-
redis
-
Option-1
-
Redis Operator based deployment
-
independently covered and managed
-
requires 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 blank
-
if using Cloud native – will emerge from where it crashed.
-
-
-
-
Option -2
-
Deploy as a Redis Cluster ( possibly with Centinel )
-
One Central EndPoint for the whole cluster
-
Requires 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 node
-
-
Backup/restore – discuss
-
-
Option-3
-
Deployed as 1 Master with 1 Slave approach
-
Can be either per tenant or Central
-
Supports multiple database
-
can be namespaced ( local to tenant )
-
requies at least 2 nodes
-
-
Option-4
-
1 single instance of the redis will be enough ( manually driven )
-
-
-
ActiveMQ/Artemis in a central Pool
-
preferred single instance per tenant
-
-
