Microservices Reference and Benchmark Applications

Collection of open source projects based on Microservices

GitHub - davidetaibi/Microservices_Project_List: A curated List of project that migrated to 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:

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

ferreiraloff.etal.2023.antipodeenforcingcrossservice (pg. 11)

Developed as a testbed for replicating industrial faults, the TrainTicket benchmark [66] is a microservice-based application that provides typical ticket booking functionalities, such as ticket reservation and payment. It is implemented in Java and it consists of more than 40 services including web servers, datastores and queues.

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