CLIENT
ELB/ALB
COMPUTE
STORAGE
NOW
Traffic through Internet gateway
Into application load balancer with SSL termination
Into bastion host within public subnet
Into kubernetes worker nodes in private subnets
Public and private subnets wrapped within availability zone.
Distributed across 3 availability zones for redundancy
Wrapped around by autoscaling group
Drived by Terraform and Kubectl via Travis CI
US
EUROPE
......
1
A service with no side effects.
A service which does not rely on cache to serve request.
A service which does not rely on another service to serve request.
Service A requires that service B to exists and function.
Example:
Delicate intents by events.
Your service intent is to make database call for persistence, emit an event.
Your service intent is to make email, emit an event.
2
Provision resource creation as well as deletion.
Allow your infrastructure to be function of time.
Allow your infrastructure to be reproducable.
Service/resource deployment requires DEVops.
Service deployment requires reaching to aws console/cli.
Dependency management is a manual process. Eg: You cannot delete vpc because ec2 is attached to it.
Resource creation and teardown should be your religion.
You know how to fail and come back up and not the other way around.
You remove human's error prone brain function during dependency management.
It is the best documentation of your infrastructure that you will ever have.
Reverts are super easy. Time travel.
We spin up entirely new set of infrastructure in 10 minutes.
Kubernetes
Cloudfront
Ec2 worker nodes
ECR
Security groups, NACL,
ALB
VPC,
3 AZs,
Private and public subnets,
Bastion hosts,
and 35 Load Balancers and 60+ services.
HA mongo cluster
HA redis cluster
HA Pilosa cluster
Exporters
Agents
Fluentd
.....
We spin up dev cluster during weekdays and destroy during weekends.
3
A service with entry and exit path.
A distributed system with shortest time to root cause analysis.
A distributed systems with trace continuity across process boundaries.
Service does have context of outbound and inbound request.
Service does not propagate context across process boundaries.
Your trace is limited to function call stack within the process.
Instrument and profile every execution path
Use instrumented http client with custom transport layer.
Use monitor api for database to trace transactions.
Use transport headers for messaging systems to trace events.
4
Database deployment with automatic backup and recovery.
Unified API to manage all the above irrespective of your database stack.
Automatic promotion and demotion of master/slave db cluster.
You have to hire DBAs.
Your backups and restores are manual.
You require manual work during master/slave replication failure.
Your data storage classes are not well defined. For eg: /data, /journal, /logs
5
README says "Blazingly fast reverse proxy"
README says "Compiles in < 1 sec"
Official website says "Community Edition"