Back to Full Curriculum
SE501Semester 63 (3-0-0)Major

Distributed Systems & Microservices

Characteristics of distributed systems (transparency, openness, scalability), System models (client-server, peer-to-peer, multi-tier), Fallacies of distributed computing (clock synchronization, network failures), Time...

Syllabus

01

Unit 1: Distributed Systems Fundamentals

Characteristics of distributed systems (transparency, openness, scalability), System models (client-server, peer-to-peer, multi-tier), Fallacies of distributed computing (clock synchronization, network failures), Time synchronization (NTP, logical clocks, vector clocks), Distributed mutual exclusion algorithms (Ricart-Agrawala, token ring), CAP theorem and consistency models (strong, eventual, causal).

02

Unit 2: Communication and Coordination

Message passing vs. shared memory, RPC and RMI principles, REST vs. gRPC communication models, Asynchronous messaging (RabbitMQ, Apache Kafka), Publish-subscribe patterns, Leader election algorithms (Bully, Raft simplified), Group membership and failure detectors, Distributed transactions (2PC, 3PC, Saga pattern).

03

Unit 3: Replication and Consistency

Replication techniques (primary-backup, multi-master, chain), Consistency models (linearizability, sequential consistency, PRAM), Quorum systems and consistency guarantees, Conflict resolution strategies (last-writer-wins, vector clocks, CRDTs), Paxos consensus algorithm overview, Raft consensus protocol (leader election, log replication), Practical replication systems (ZooKeeper, etcd).

04

Unit 4: Microservices Architecture Principles

Monolith to microservices decomposition strategies, Domain-Driven Design (bounded contexts, context mapping), Service granularity and cohesion principles, API gateway patterns, Service mesh architecture (Istio, Linkerd), Circuit breaker pattern, Bulkhead pattern, Saga pattern for distributed transactions, Event sourcing and CQRS.

05

Unit 5: Distributed System Resilience and Observability

Fault tolerance design patterns (retry, timeout, fallback), Chaos engineering principles, Distributed tracing (OpenTelemetry, Jaeger), Metrics collection and alerting (Prometheus, Grafana), Service level objectives (SLOs, SLIs, error budgets), Load balancing strategies (client-side, server-side), Autoscaling and capacity planning, Deployment strategies (blue-green, canary, rolling updates).