Skip to content

AlexandrosKyriakakis/apistresstesting

Repository files navigation

Performance Investigation of Various Microservice Architectures

Project Overview

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.

Thesis Link

Technologies & Infrastructure

This project leverages a broad set of technologies and infrastructure components:

  • Python Python – Core language for implementing services and orchestrators.
  • FastAPI FastAPI – Web framework for building RESTful API endpoints.
  • Docker Docker – Containerization of all microservices for consistency and scalability.
  • RabbitMQ RabbitMQ – AMQP message broker used for microservice communication.
  • Redpanda Redpanda – Kafka-compatible streaming platform for event-driven services.
  • PostgreSQL PostgreSQL – Database for storing performance test results.
  • Prometheus Prometheus – Monitoring system for collecting performance metrics.
  • Grafana Grafana – Dashboarding tool for real-time visualization of metrics.
  • Metabase Metabase – Querying and analyzing collected test results.

Methodology & Best Practices

  • 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.

Getting Started

Prerequisites

Ensure you have Docker and Docker Compose installed before proceeding.

Clone the Repository

git clone https://github.com/AlexandrosKyriakakis/apistresstesting.git
cd apistresstesting

Launch Infrastructure

docker compose -f deployment/docker-compose-front.yml -f deployment/docker-compose-workers.yml up -d

Run a Test Scenario

To execute a performance test for a specific architecture, use:

make orchestrator
# or
make async_orchestrator
# or
make serialised_rmq

Monitor Performance

Stop Services

docker compose down

License

This project is licensed under the MIT License. See the LICENSE file for details.

About

Thesis πŸ“: Performance Investigation of Various Microservice Architectures

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages