Cloud Architecture
Patterns
Scaling
Load Balancing
Pipes and Filters
Scatter Gather
Execution Orchestration
Choerography
Big Data Intensive
Map Reduce
Saga
Distributed Transactions
Standardize chunk / batch
Transactional Outbox
Materialize View
Read Performance
1 or 0
Save extra entries to
CQRS
CQRS + Materialized View
Event Sourcing
Write Intensive
Read Intensive
Every state / history
version control of data
Message broker for write contention
Snapshot
with CQRS
Sync from Write to Read
- Message broker for extreme load
Video/Audio/Image, or all in one
Kayak
Event-driven, Message sent
Save data
Outbox
Duplicate events
At least one semantics
Order of events
Top courses by ratings
Product reviews
NoSQL
Course searching
Popular
Extensibility
Sidecar and Ambassador
Metrics, log event, registry, pull config
Location
Library within code base.
Services, overkill
Process.
Ambassador
Network. Retry, etc.
Anti-corruption adapter/layer
Intent
Migration between old and new systems
New and old systems permanently exist. separate them
function can be used to communicated between old and new
Backends for the frontends
Unique features of front ends call for customized backends
Reliability/Error Handling/Recovery
Throttling / RateLimit
Intent
High volume of request
Solution
429, too many requests
Queue up. Msg broker
API based
Client-based
Retry
503, service unavailable
Strategy
Back off, etc
Circuit breaker
Pessimistic. Costly
Half-open state
Solution
Log and play
To users
Fail silently
Best effort
Dead Letter Queue
Rolling deployment / Production Testing
Rolling, Popular
Blue/Green. Most popular
Canary
A/B Testing
Experimental. Will revert back to original version
Chaos Engineering
Intro
Types of problem
Functional, Unique
Non-functional. Common. Motivation
Constraints
Software Design Patterns vs System Architecture Patterns
Benefits
IaaS
Payment pricing
Tools, features, services
Limitations
Unreliable components
Cost and profitability