Extends or augments the application container used as,
Proxy
Configuration manager
Modularity
Alters the way application container communicates to the outside world
Sharded
Service Brokering
Request Splitting or Experimentation
Modifies the interface of the application container to conform with the expected interface
Monitoring with Prometheus
Logging with FluentD
Health Checks
Microservices
Stateless services
Session tracked services
Application layer replicated services - Varnish Cache
Replicated sharded caching with Memcache
Either use ambassador pattern or sharded service
-
Determinism (Output must be same for the same input)
-
Uniformity (All the shards are equally load balanced)
(req.path | req.path + req.country)
Hot Sharding systems
Presto DB
- Co-ordinator node distributes work among the Worker nodes.
Decorator Pattern
- Request defaulting before request processing
- 2 FA
Kubernetes
Redis ElasticSearch
RabbitMQ Kafka
MySQL Presto Hadoop Mongo
Locust
O'Reilly Designing Distributed systems - Patterns and Paradigms for scalable, reliable services - Brendan Burns