Key decisions (for Cloud Automation)
This is an evolving initiative. This document holds our rough notes on principles and preferences on Cloud Automation strategy. Contact @Nouman Memon for details. Or ping us on Slack.
Infra As Code
Recomendation: Terraform ā
Qualities:
š Provisioning (Docker is taking care of configuration management already)
š Cloud Agnostic / support
š Immutable infrastructure
š Declarative language
š Client-only architecture (Masterless, Agentless)
š Large communitiy support
š° Options
ā Terraform ā
ā CloudFormation
ā Ansible
Identity Provider
Recomendation: Keycloak ā
Qualities:
š Multi-tenancy support
š Cost
š Flexible
š° Options (starting with AWS)
ā Keycloak ā
+ Better Multi tenant support as compared to Cognito
+ Cloud Agnostic
+ Better MFA
+ Flexible
+ OpenSource
+ Community capibilities
- Complex setup (we could still use it as AWS service)
ā AWS Cognito
+ Free 50K identity
+ Better integration with STS, Lambdas for events etc
+ Fully managed
- Not much Flexible
- Limitation on 1000 user pool per AWS account (hard for SaaS model)
- LImitation in MFA (supports SMS)
- AWS only
- Cant scale for Multi-tenant
ā Ory (Hydra + Kratos)
+ Open source
+ Mature documenation and easy to setup
- Setting up IDP integrated (OAuth + Identity) is difficult and limited
- Have SaaS option (beta + bit pricy)
Container Management
Recomendation: EKS (EC2) ā
Qualities:
š Portability
š Simple
š Flexible
š Future proof
š Cost
š° Options (starting with AWS)
ā EKS (EC2) ā
- with minikube for dev
+ Portable: Cloud agnostic platform investment (almost)
+ Flexibility
+ Future proof
+ High Abstraction: better expererience for development
- Complex (needs experience)
- Need configuration for integrating with AWS services (not complex though)
- Might be a bit expensive (need to validate) e.g. control plane is not free (API server and etcd)
ā ECS (FARGATE)
+ Initial setup is very simple
+ Free control plane
+ Built in integration with AWS services
- AWS only
- Limiting for complex SaaS setup
- Abstraction: Coupling with AWS services due to its out-of-box integration
Docker Registry
Create BahmniIndia account on dockerhub
Keep bahmni space on dockerhub for global
AWS Services
Ā
Helm Charts
Ā
Kubernetes Packaging Structure
CI/CD tools
Ā
Monitoring and Alerting
Topics to be discussed
Secrets manager
Monitoring and Alerting (Prometheus-Grafana)
Ā
The Bahmni documentation is licensed under Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)