Performance Investigation of Various Microservice Architectures is a diploma thesis project of Alexandros Kyriakakis (NTUA, July 2023) that examines how different software architecture paradigms affect the performance of web services. It provides a comparative analysis of monolithic systems, Service-Oriented Architectures (SOA), and microservices, with a particular focus on the increasingly popular microservices approach. The project implements five distinct microservice architectural variants (spanning centralized orchestration and event-driven choreography patterns) and evaluates their performance under identical conditions. By stress-testing each architecture and measuring key metrics, the study highlights how design choices impact throughput, latency, scalability, and failure tolerance.
Key findings reveal that different architectures come with unique trade-offs. For example, an event-streaming choreography approach using Redpanda excelled at handling high-volume data, whereas a RabbitMQ message broker ensured stable performance under high load. Meanwhile, an orchestrator-driven microservices design simplified service coordination but introduced state management complexities. This research provides actionable insights for engineers selecting architecture styles based on real-world needs.
- Full Thesis PDF: Performance Investigation of Various Microservice Architectures
- Presentation: Performance Investigation of Various Microservice Architectures Presentation
- Online Publication: artemis.cslab.ece.ntua.gr (NTUA Thesis Repository)
- Advisor: Vassilios Vescoukis
This project leverages a broad set of technologies and infrastructure components:
Python β Core language for implementing services and orchestrators.
FastAPI β Web framework for building RESTful API endpoints.
Docker β Containerization of all microservices for consistency and scalability.
RabbitMQ β AMQP message broker used for microservice communication.
Redpanda β Kafka-compatible streaming platform for event-driven services.
PostgreSQL β Database for storing performance test results.
Prometheus β Monitoring system for collecting performance metrics.
Grafana β Dashboarding tool for real-time visualization of metrics.
Metabase β Querying and analyzing collected test results.
- Containerization: Services run in isolated Docker containers for consistent deployments.
- Monitoring: Prometheus collects metrics, and Grafana visualizes performance in real time.
- Performance Benchmarking: Systematic tests ensure fair comparisons between architectures.
- API Stress Testing: Load tests simulate real-world traffic and measure scalability.
Ensure you have Docker and Docker Compose installed before proceeding.
git clone https://github.com/AlexandrosKyriakakis/apistresstesting.git
cd apistresstesting
docker compose -f deployment/docker-compose-front.yml -f deployment/docker-compose-workers.yml up -d
To execute a performance test for a specific architecture, use:
make orchestrator
# or
make async_orchestrator
# or
make serialised_rmq
- Grafana Dashboard: http://localhost:3001
- Prometheus Metrics: http://localhost:9090
- Metabase Data Analysis: http://localhost:3000
docker compose down
This project is licensed under the MIT License. See the LICENSE file for details.