🔧 Distributed Systems Lab: A Hands-On Journey into Microservices #
Welcome to the Distributed Systems Lab — the practical segment of the Distributed Systems course. This lab is designed not just to explore the theory behind distributed systems, but to dive deep into how they work in practice.
Distributed systems exist in many forms — from peer-to-peer networks to large-scale cloud platforms. In this lab, we’ll focus on microservices, a popular architectural pattern that supports modularity, scalability, and independent deployment.
We’ll build and evolve a system from the ground up through a real-world inspired project: The Smart Library. Our journey will simulate how modern systems are developed and scaled in stages:
- Start with a monolithic application to understand the foundational structure.
- Refactor into microservices to improve scalability and flexibility.
- Use tools like Nginx, Docker, and Docker Swarm to manage, deploy, and scale the system.
- Learn essential system design concepts along the way.
By the end of this lab, you’ll not only understand how distributed systems are built, but you’ll have hands-on experience architecting one.
🎓 Who Is This Lab For? #
This Lab is designed for Software Engineering students at IIT, University of Dhaka as part of their academic curriculum. Specifically, it serves as the practical component for the CSE601: Distributed Systems course offered in the 3rd year, 6th semester (April-July 2025).
🌱 Beyond academics, this lab is perfect for:
- Students eager to apply theoretical concepts in real-world scenarios
- Early-career developers looking to strengthen their backend skills
- Tech enthusiasts passionate about modern system architecture
- Anyone who believes in learning by building practical projects
If you’re curious about how modern tech giants architect their systems, how cloud-native applications function, or how to design resilient distributed services—this lab will provide hands-on experience with industry-relevant tools and practices.
🚀 What You’ll Accomplish #
By completing this lab journey, you’ll:
- Design and deploy a complete microservice-based project
- Master container orchestration with Docker and related technologies
- Implement service discovery and load balancing with Nginx
- Apply fault tolerance and resilience patterns in distributed environments
- Gain practical DevOps experience through CI/CD implementation
- Develop a portfolio-worthy project demonstrating real-world skills
Let’s transform theoretical knowledge into practical expertise! 💻✨