Course Highlights
  • Architecting Software Systems and Solutions: We will start with a basic three tier application architecture which we will enhance as we move along.
  • How to build a technical stack by getting architectural insights into products like Nodejs, Redis, Cassandra, Kafka, Hadoop, Elastic Search, .. and many more
  • Non-Functional Requirements: How to design architecture considering Performance, Scalability, Reliability, and Security
  • Deployment of large scale production systems using tools like Docker & Kubernetes
Curriculum

2 Topics
Developer To Architect
Introduction to Developer To Architect

36 Topics
Module contents overview
A reference software system for discussing performance
What is performance
How do performance problems look like
Performance principles
System performance objectives
Performance measurement metrics
Serial request latency
Network transfer latency
Minimizing network transfer latency
Memory access latency
Minimizing memory access latency
Disk access latency
Minimizing disk access latency
CPU processing latency
Minimizing CPU processing latency
Some common latency costs
Concurrency related latency
Amdahl's law for concurrent tasks
Gunther's universal scalability law
Shared resource contention
Minimizing shared resource contention
Minimizing locking related contention
Pessimistic Locking
Optimistic Locking
Compare and swap mechanism
Deadlocks
Coherence related delays
Caching
System architecture for performance
Caching for performance
HTTP Caching of static data
Caching of dynamic data
Caching related challenges
Summary
Performance presentation slides

44 Topics
Module contents overview
Performance vs Scalability
Vertical & Horizontal scalability
Reverse proxy
A reference software system for discussing scalability
Scalability principles
Modularity for scalability
Replication
Stateful replication in web applications
Stateless replication in web applications
Stateless replication of services
Database replication
Database replication types
Need for specialized services
Specialized services - SOAP/REST
Asynchronous services
Asynchronous processing & scalability
Caching for scalability
Vertical partitioning with micro-services
Database partitioning
Database partitioning selection
Routing with database partitioning
Methods for horizontal scalability
Dealing with large scale systems
Load balancing multiple instances
Discovery service and load balancing
Load balancer discovery
HLB vs SLB
Layer-7 load balancers
DNS as load balancer
Global server load balancing
Global data replication
Auto scaling instances
Micro-Services Architecture
Micro-Services Motivation
Service Oriented Architecture
Micro-Services Architecture Style
Transactions in Micro-Services
Compensating Transactions - SAGA Pattern
Micro-services communication model
Event driven transactions
Extreme scalability with NoSQL and Kafka
Summary
Scalability presentation slides

40 Topics
Module contents overview
Failures in large scale distributed systems
Partial system failures
Reliability engineering topics
Reliability
Availability
High Availability
Fault Tolerance
Designing Fault Tolerance
Fault tolerant design
Redundancy
Types of redundancy
Single point of failures
Stateless component redundancy
Stateful component redundancy
Load balancer redundancy
Datacentre infrastructure as SPOF
Creating datacenter redundancy
Fault detection
Fault models
Health checks
External monitoring service
Internal cluster monitoring
Fault detection in a system
Recovering from failures
Stateless component recovery
Stateful Failovers
Load Balancer high availability
Database recovery with hot standby
Database recovery with warm standby
Database recovery with cold backups
High Availability in large scale systems
Failover best practices
System stability
Timeouts
Retries
Circuit Breaker
Fail Fast and Shed Load
Summary
Reliability presentation slides

42 Topics
Module contents overview
Security objectives
Network security
Symmetric key encryption
Public key encryption
Secure network protocol
SSL and TLS
Hashing
Digital signatures
Digital certificates
Chain of trust
TLS/SSL handshake
Secure network channel
Firewalls
Network security
Identity management
Authentication and authorization
Authentication
Credentials transfer
Credentials verification
Stateful authentication
Stateless authentication
Single Sign-On
Access management
Role based access control model
Role based access example
Authorization
OAuth2 token grant
OAuth2 token grant - Code Flow
OAuth2 token grant - Password Flow
OAuth2 in a system
OAuth2 token types
Json Web Tokens
Token storage
Securing data at rest
Securing a Software System
Common vulnerabilities
SQL Injection
Cross Site Scripting
Cross Site Resource Forgery
Summary
Security presentation slides

37 Topics
Module contents overview
Large scale deployment challenges
Application deployment
Infrastructure deployment
System operations
Modern deployment solutions
Application deployment
Component deployment
Component deployment automation
Deployment with Virtual Machines
Isolation through virtual machines
Deployment with Containers
Docker containers
Infrastructure deployment
Infrastructure requirements
Provisioning and configuration
Deployment with containers on Cloud
Deployment with AWS cloud stack
Deployment with Kubernetes
Kubernetes lifecycle management
Kubernetes naming and addressing
Kubernetes scaling with multiple instances
Kubernetes load balacing
Kubernetes high availability
Kubernetes rolling upgrades
Kubernetes capabilities
Kubernetes deployment
Kubernetes services and workloads
Kubernetes architecture
System upgrades
Rolling updates
Canary deployment
Recreate deployment
Blue Green deployment
A/B testing
Summary
Deployment presentation slides

55 Topics
Module contents overview
Reference system for using tech platforms
Web applications
Solutions for web applications
Apache web server
Apache webServer architecture
Apache webserver scalability
Nginx webserver
Nginx architecture
Nginx as reverse proxy and cache
Web containers & spring framework
Jetty & Spring
Node.JS
Node.JS event loop
Cloud Solutions for web
Cloud storage
Cloud CDN
Services
Services solutions
Memcached
Memcached Architecture
Redis Cache & its architecture
Cloud caching solutions
RabbitMQ
RabbitMQ architecture
Kafka architecture
Redis Pub/Sub
Cloud MQ solutions
Datastores
Datastore solutions
RDBMS
RDBMS scalability architecture
NoSQL objectives & trade-offs
Amazon DynamoDB
DynamoDB architecture
Google BigTable
BigTable architecture
HBase
Cassandra
Cassandra features
MongoDB
MongoDB architecture
Analytics
Analytics solutions
Logstash architecture
Logstash data streaming architecture
Fluentd
Elasticsearch
Elasticsearch architecture
Hadoop HDFS
Map-Reduce
Apache Spark
Stream processing
Summary
Technology Stack presentation slides

  Write a Review

Software Architecture & Technology of Large-Scale Systems

Go to Paid Course