Microservices Reference and Benchmark Applications
Collection of open source projects based on Microservices
Sock Shop
Website: https://microservices-demo.github.io/
Source code: https://github.com/microservices-demo/microservices-demo
Description:
The application is the user-facing part of an online shop that sells socks. It is intended to aid the demonstration and testing of microservice and cloud native technologies.
It is built using Spring Boot, Go kit and Node.js and is packaged in Docker containers.
DeathStarBench
Source code: https://github.com/delimitrou/DeathStarBench/
Paper:
Gan, Y., Zhang, Y., Cheng, D., Shetty, A., Rathi, P., Katarki, N., Bruno, A., Hu, J., Ritchken, B., Jackson, B., Hu, K., Pancholi, M., He, Y., Clancy, B., Colen, C., Wen, F., Leung, C., Wang, S., Zaruvinsky, L., … Delimitrou, C. (2019). An Open-Source Benchmark Suite for Microservices and Their Hardware-Software Implications for Cloud & Edge Systems. Proceedings of the Twenty-Fourth International Conference on Architectural Support for Programming Languages and Operating Systems, 3–18. https://doi.org/10.1145/3297858.3304013
Description:
Open-source benchmark suite for cloud microservices. DeathStarBench includes five end-to-end services, four for cloud systems, and one for cloud-edge systems running on drone swarms.
End-to-end Services:
- Social Network (released)
- Media Service (released)
- Hotel Reservation (released)
- E-commerce site (in progress)
- Banking System (in progress)
- Drone coordination system (in progress)
Each service includes tens of microservices in different languages and programming models, including node.js, Python, C/C++, Java, Javascript, Scala, and Go, and leverages opensource applications, such as NGINX, memcached, MongoDB, Cylon, and Xapian.
TeaStore
Source code: https://github.com/DescartesResearch/TeaStore
Paper:
@VonKistowski.etal.2018.TeaStore
Von Kistowski, J., Eismann, S., Schmitt, N., Bauer, A., Grohmann, J., & Kounev, S. (2018). TeaStore: A Micro-Service Reference Application for Benchmarking, Modeling and Resource Management Research. 2018 IEEE 26th International Symposium on Modeling, Analysis, and Simulation of Computer and Telecommunication Systems (MASCOTS), 223–236. https://doi.org/10.1109/MASCOTS.2018.00030
Description:
The TeaStore is a micro-service reference and test application to be used in benchmarks and tests. The TeaStore emulates a basic web store for automatically generated, tea and tea supplies. As it is primarily a test application, it features UI elements for database generation and service resetting in addition to the store itself.
The TeaStore is a distributed micro-service application featuring five distinct services plus a registry. Each service may be replicated without limit and deployed on separate devices as desired. Services communicate using REST and using the Netflix Ribbon client side load balancer. Each service also comes in a pre-instrumented variant that uses Kieker to provide detailed information about the TeaStore's actions and behavior.
T2-Project
Source code: https://github.com/t2-project/t2-project
Description:
The T2-Project is a micro-service reference application that implements the Saga pattern. It is loosely based on the TeaStore Application.
The T2-Project consists of seven services that realise the store’s business logic plus two additional services, one to simulate an external payment provider, as an example some credit institute and the other to test the store at runtime.
All services are Spring Boot Applications. They are instrumented with Prometheus for metrics and with Jaeger for tracing.
Online Boutique (GCP)
Demo: https://onlineboutique.dev/
Source code: https://github.com/GoogleCloudPlatform/microservices-demo
Description:
Online Boutique is a cloud-first microservices demo application. Online Boutique consists of an 11-tier microservices application. The application is a web-based e-commerce app where users can browse items, add them to the cart, and purchase them.
Google uses this application to demonstrate the use of technologies like Kubernetes, GKE, Istio, Stackdriver, and gRPC. This application works on any Kubernetes cluster, like Google Kubernetes Engine (GKE). It’s easy to deploy with little to no configuration.
11 microservices implemented in 5 different languages: Go, Node.js, Python, Java, C#
The Online Boutique is used as a demo application for many purposes.
For example, it is used in the tutorials Interservice communication in a microservices setup and Distributed tracing in a microservices application.
Interesting note regarding data consistency: In the tutorial it is stated that there is "an order workflow that helps ensure distributed transactions". However, it is not implemented.
The checkout service is responsible for orchestrating the payment, shipping and email notification services. However, no Saga is implemented: If something fails, no compensation is done (main.go, see also issue 180).
See also @Google.2023.InterserviceCommunicationMicroservices.
µSuite
µSuite is a suite of OLDI services that are each composed of front-end, mid-tier, and leaf microservice tiers.
µSuite was originally written to evaluate OS and network overheads faced by microservices
Source code: https://github.com/wenischlab/MicroSuite
Paper: https://ieeexplore.ieee.org/document/8573515
TrainTicket
Source code: https://github.com/FudanSELab/train-ticket
This project is a train ticket booking system based on microservice architecture which contains 41 microservices. The programming languages and frameworks it used are as below.
Paper: Xiang Zhou, Xin Peng, Tao Xie, Jun Sun, Chao Ji, Wenhai Li, and Dan Ding. 2021. Fault Analysis and Debugging of Microservice Systems: Industrial Survey, Benchmark System, and Empirical Study. IEEE Transactions on Software Engineering 22, 4 (2021), 243–260. https://doi.org/10.1109/TSE.2018.2887384
Pitstop
The primary goal of this sample is to demonstrate several software-architecture concepts like: Microservices, CQRS, Event driven Architecture, Event sourcing, Domain Driven Design (DDD), Eventual Consistency and how to use container-technologies like: Docker, Kubernetes, Istio (service-mesh), Linkerd (service-mesh)
Source code: https://github.com/EdwinVW/pitstop