E0 209 Principles of Distributed Software

January-April 2024, 2.00pm-3.30pm Mon Wed, Room 117 CSA

Instructor: K. V. Raghavan

Teaching Assistants: Rajanya Dasgupta (rajanyad), Anurag Kumar (anuragk), Rahul Singh (rahulsingh14)

Lecture slides

Motivation

Development of distributed software applications is a very important activity, accelerated in recent years by the increasing predominance of cloud computing. The typical requirements from a modern day distributed application are continuous availability even in the presence of software and hardware faults, ability to scale up or down on-the-fly based on input load (i.e., elasticity), ease of development and maintenance, and ease of continuous integration and deployment. This course will introduce the principles and programming models and frameworks for distributed applications that help meet these requirements. It will also cover representative modern languages and technologies that are used to develop and deploy such applications.

Syllabus

Introduction to distributed software and cloud computing. OS-level virtualization, developing and deploying containers using Docker. Services, statelessness and statefulness, Representational State Transfer (REST). Basics of developing services and web applications using SpringBoot. The microservices paradigm of distributed software development, and common microservices architecture patterns. Useful attributes of microservices paradigm such as scale in and out, fault tolerance, and availability. Cluster management using Kubernetes. Introduction to actors -- a message-driven programming model that enables large scale concurrency, distribution, and fault tolerance. Programming actor-based systems using the Akka toolkit. Achieving availability and elasticity by distributing the application over multiple nodes using Akka Cluster. Introduction to distributed data analytics -- batch architecture patterns, and introduction to Spark. Consistency of data in distributed programs -- eventual consistency.

Reading material

Acknowledgment

Course designed with inputs from Dr. Prasad Deshpande.