Preliminary List of Topics
Course 02267
Hubert Baumeister
Version 1
Disclaimer: The contents is preliminary and may change without notice.
In this course, we are looking into the development, deployment, and testing of applications consisting of interacting Microservices. We use REST to communicate with these applications and use
asynchronous communication for the communication between Microservices. SOAP will be used to
communicate with legacy systems.
We use a DevOps approach to the development of those Microservices, meaning that we use continuous integration and delivery. We deploy those Microservices using Docker on a Linux virtual machine,
and use end to end tests using Cucumber to make sure that a working application is deployed.
The course consists of lectures, video lectures, exercises/tasks to be done alone and in groups of 6
in week 1 and 2. The course concludes with a graded final project introduced in the second week to
be done in teams of 6 in week 2 and 3.
1
Topics
• Overview of the course
– Microservices to create scalable and reliable systems
– Organization of the course
• DevOps Part 1: Agile methods as the foundation of Microservices
– Mob programming lets all stake-holders work together at the system
– Behaviour-Driven development to ensure correct behaviour
– Refactoring to improve the structure of the system
– Continous Integration ensures an always working system
• Different ways of interacting with Microservices
– Using REST to send synchronous messages
– Using SOAP to communicate with legacy systems
– Using message queues to send asynchronous messages
• Advantages of using asynchronous communication with Microservices
– Event-driven architecture allows for distributed control
– CQRS separates commands from queries
– Event Sourcing treats events as the truth about the system
• How to design a Microservice based system
– Microservice design is based on the problem domain (Domain-Driven Design)
– Discovering relevant events using Event Storming
1
– Hexgonal architecture separates the business logic from the technology to access the business
logic
• Testing of Microservices
– End-to-end tests to ensure system functionality
– Fast service-level tests require hexagonal architecture
• DevOps Part 2: Deployment and continuous integration and delivery
– Using docker and docker compose to deploy Microservices
– Continuous integration and delivery on a Linux virtual machine using Jenkins
– Different options to structure the Git repository
2
Exam
• The exam consists of a larger project consisting of several Microservices (source code, tests,
deployment) plus a report to be done in groups of 6 (exceptional 5 and 7).
• The project will be introduced in week 2.
• The deadline for the project is 17:00 on the last Friday of the course, i.e., 23.1.2026.
3
Technologies being used
• Java 21 as the programming language
• JUnit 5 and Cucumber for tests
• Quarkus using the JAX-RS standard (with the RESTEasy Classic implementation) to implement
REST services
• RabbitMQ as the message broker
• A virtual machine with Linux (Ubuntu)
• Docker and docker~compose to deploy Microservices
• Jenkins for continous integration and delivery
• Git as the version control system
• ...
2
4
Topic Dependencies
Week 1: One Microservice
Topic: Agile
Software
Development
Topic: TestDriven
Development
Task: TDD and
BDD Coding
Kata
Topic: Mob
Programming
Topic: Using a
Linux VM
Task: Learn to
use the Linux
VM
Topic: REST Web
Services
Task: A first
REST project
Topic:
Deployment
using Docker
Task: A more
complex CRUD
REST service
Task: Simple
DTU Pay with
REST API
Topic: SOAP
Web Services
Task: Simple
DTU Pay using
SOAP
Topic:
Continuous
Integration
Task: Install
docker and
docker-compose
Task:
Continuous
Integration with
Jenkins
Task: Install
docker on the
VM
Assignment:
Deploy Simple
DTU Pay in Dock er
on the VM with
Jenkins
Week 2: Collaborating Microservices / Exam Project
Topic: DomainDriven Design
Topic: Event
Storming
Topic:
Hexagonal
Architecture and
Microservices
Topic:
Asynchronous
Commenication
Topic:
Microservice
ProjectStructure
Topic: Testing
Microservices
Topic: Event
Sourcing and
CQRS
Correlation
Week 3: Continue Exam Project
Assignment: Exam
Project
3