SE464: Software Design and Architectures
don’t really go to this class, but there seems some good guest lectures.
Things I need to master for Final:
- The 5 SOLID principles and examples for each
- Two kinds of partitioning: functional and data partitioning
- The different quorum levels (week 4)
- What happens when DHT quorum fails?
My writeup:
- Sharding is to remove bottleneck in writing to DB
- Read replicas is making copies of the DB, and let them be read only
- Replication is to avoid data loss. You can replicate the entire DB or replicate shards based on the setup, so replication is not about sharding
Concepts
Week 1: Introduction to Software Architecture
- Software Architecture
- Architectural Drift
- Architectural Erosion
- Architectural Recovery
- 4+1 View Model
Week 2: Design Principles
- UML
- SOLID Principles
- Non-Functional Requirement
Week 3: Scalability, Caching, Proxies
- Scalability
- Horizontal and Vertical Scaling
- Stateless vs Stateful
- Proxy
- Load Balancing
- Cache
- Cache Coherency
- HTTP Cache Control Headers
Week 4: Databases and Distributed Consistency
- Read Replicas
- Database Sharding
- Functional Partitioning
- Data Partitioning
- NoSQL
- Data Normalization
- Distributed Hash Table
- CAP Theorem
- Quorum
- Client-Centric Consistency
Week 5: Choosing a Database, REST APIs
- OLTP
- OLAP
- Redis
- Elasticsearch
- Distributed Cache
- CDN
- Cloud Object Store (S3)
- HDFS
- REST API
- Serialization
Week 6: Load Balancing and Microservices
Week 8: Architecture Modeling
Week 10: Push Notifications
Week 11: Architectural Styles and Async Communication
- Message Queue
- Architectural Styles
Week 12: Security
Week 13: Streaming vs Batch Processing