Distributed Web Applications

From the monolith to Cloud Native architectures

Dr. Badia Bouhdid
ESPRIT School of Engineering · 4th-year Computer Engineering · 2026–2027
Resources are being published progressively during the semester.

What this module is about

Learning to think like a software architect

Modern web applications are no longer a single block of code. They are made of services that communicate over the network, scale independently and are deployed in containers. This module follows that evolution step by step, so that every architectural choice is understood, justified and put into practice.

Understand

Why architectures moved from the monolith to distributed systems, and what this shift really changes.

Design

Break a domain into services, define API contracts and choose the right communication and infrastructure mechanisms.

Operate

Document, test, observe, secure and deploy a distributed application in a reproducible way.

The architectural path

One system, evolving chapter after chapter

1
MonolithWhere we start
2
REST APIsHTTP, JSON, OpenAPI
3
MicroservicesBusiness decomposition
4
InfrastructureDiscovery, gateway, communication, security
5
Cloud NativeContainers and deployment

Topics covered along the way:

Distributed architectures & SOAREST APIsMicroservices migration Service discovery & observabilityAPI GatewaySynchronous communication Asynchronous messagingDistributed securityContainerization

How courses and workshops fit together

Each concept is immediately used in a concrete situation

Courses: the why

  • Concepts, principles and architectural patterns
  • Trade-offs: benefits, limits and challenges
  • Reasoning behind each design decision

Workshops: the how

  • Hands-on implementation of each mechanism
  • Applied to the same running system
  • Code, tests and documentation delivered on Git

Prosits: the problem first

  • A realistic scenario opens each topic
  • Students frame the problem and hypotheses
  • Solutions are built, then compared and discussed
Problem-Based LearningProject-Based LearningCDIOLearning by DoingBloom's progressionResponsible use of AI assistants

Learning outcomes

By the end of the module, students will be able to…

1
LO 1Explain how software architectures evolved
2
LO 2Compare monolith, SOA and microservices
3
LO 3Analyze the business needs behind a distributed architecture
4
LO 4Explain the principles of microservices
5
LO 5Evaluate their benefits, limits and challenges
6
LO 6Select and justify the right tools and technologies
7
LO 7Apply distributed-systems principles
8
LO 8Design and validate a Cloud Native solution

Running example: JobBoard

A recruitment platform that grows with the course

JobBoard brings together candidates, companies, job offers, applications, interviews and notifications. It starts as a monolith. As the course moves forward, it is exposed through REST contracts, decomposed into business services, given the distributed mechanisms it needs, and finally deployed in containers.

Using one system from start to finish keeps the focus on the architecture: each new concept answers a problem the previous version could not solve.

Business services

CandidateCompanyJobApplicationMeetingNotification

What you will find here

The module is under construction: resources are added as the semester moves forward

Course

Slides

Lecture slides for each chapter.

Course

Book

A companion book with definitions, examples, exercises and solutions.

Practice

Prosits

Problem scenarios that open each topic.

Practice

Workshops

Step-by-step hands-on guides and source code.

Project

Final project

Guidelines and milestones for the team project.

Self-study

Further reading

Selected books, articles and videos.

About the author

Module design and teaching

Portrait of Dr. Badia Bouhdid

Dr. Badia Bouhdid

PhD in Computer Science · Assistant Professor in IT · ESPRIT School of Engineering

Her teaching focuses on software architecture, distributed systems and Cloud Native development, with a project-based approach that guides students toward well-argued, reproducible solutions.