Cloud Infrastructure
Introduction
CARE is cloud-agnostic and can be deployed on any Cloud Provider of your choice. We recommend using a Kubernetes Cluster, but since CARE is dockerized, you can deploy a Single Node using Docker as well.
During the initial days, when CARE was used for capacity monitoring, it was deployed on Heroku. Once the need for storing Patient Data was raised, CARE was moved to AWS (Mumbai Region). Moving forward, different versions of CARE were deployed across different Cloud and on-prem Environments. CARE supports deployments in major Cloud Service Providers such as AWS, GCP, and Azure.
Different components of CARE for a cloud deployment are as follows:
Backend
CARE backend consists of the following components
Django application
Celery Beat
Celery Worker
Redis
All of the above have their own docker images. Backend images are available in the CARE repository. It allows us to deploy backend in any of the various cloud solutions such as Virtual Machine, Kubernetes Cluster, Container Services, etc.
Refer backend documentation for setting it up once the deployment is done.
Frontend
CARE frontend is a React Web application. Docker images for the frontend are available in the CARE_FE repository. Frontend also can be deployed in Virtual Machines, Kubernetes Cluster or Container Services.
Database
The database used in CARE is PostgreSQL. CARE is tested up to v14 of the PostgreSQL database. Cloud solutions like AWS RDS can be used to deploy the database. Make sure to deploy the database in the same region as the backend to ensure minimal latency.
Object Storage
CARE uses two S3 API compatible object storage. One public object storage is used for storing facility images and one private object storage is used for patient file uploads.
Email Service
An email service like Amazon SES or Sendgrid can be used for the email functionalities of CARE.
SMS Gateway
An SMS gateway like Amazon SNS can be used for the SMS functionalities of CARE.
Dashboard
Dashboard service is also a React Web app that will provide an interactive dashboard to monitor metrics in CARE
Reporting Tool - Metabase Instance
A Metabase instance can be used along with CARE as a reporting tool for creating a static, but comprehensive dashboard with metrics captured by CARE
Cloud Architecture
As mentioned above, CARE supports a variety of ways for it to be deployed. The following is a generic cloud architecture for deploying CARE with a Kubernetes cluster.
Cloud Components List for CARE application:
Load balancer
Virtual Network
Postgres DB
Kubernetes Cluster
File Storage
Email Gateway
SMS Gateway
Cloud Components List for Metabase (Reporting Software):
Virtual Machine
Postgres DB
Cloud Components for Dev Access:
Virtual Machine as a jump server
Last updated