Giter VIP home page Giter VIP logo

descartesresearch / teastore Goto Github PK

View Code? Open in Web Editor NEW
118.0 118.0 137.0 107.02 MB

A micro-service reference test application for model extraction, cloud management, energy efficiency, power prediction, single- and multi-tier auto-scaling

Home Page: https://se.informatik.uni-wuerzburg.de

License: Apache License 2.0

Java 95.25% CSS 0.70% JavaScript 1.47% Shell 1.81% Dockerfile 0.76%
benchmark microservice model-extraction performance

teastore's Introduction

TeaStore

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.

Check out our Getting Started Guide for information on how to use the TeaStore:

  1. Deploying the TeaStore
    1. Run as Multiple Single Service Containers
    2. Run the TeaStore using Docker Compose
    3. Run the TeaStore on a Kubernetes Cluster
    4. Run the TeaStore with helm templates
  2. Using the TeaStore for Testing and Benchmarking
    1. Generating Load
      1. LIMBO HTTP Load Generator
      2. JMeter™
    2. Instrumenting the TeaStore
      1. Docker containers with Kieker
      2. OpenTracing with Kubernetes and Istio
  3. Building and Customizing the TeaStore

Cite Us

The TeaStore was first published in Proceedings of the 26th IEEE International Symposium on the Modelling, Analysis, and Simulation of Computer and Telecommunication Systems (MASCOTS2018). If you use the TeaStore please cite the following publication:

@inproceedings{KiEiScBaGrKo2018-MASCOTS-TeaStore,
  author = {J{\'o}akim von Kistowski and Simon Eismann and Norbert Schmitt and Andr{\'e} Bauer and Johannes Grohmann and Samuel Kounev},
  title = {{TeaStore: A Micro-Service Reference Application for Benchmarking, Modeling and Resource Management Research}},
  booktitle = {Proceedings of the 26th IEEE International Symposium on the Modelling, Analysis, and Simulation of Computer and Telecommunication Systems},
  series = {MASCOTS '18},
  year = {2018},
  month = {September},
  location = {Milwaukee, WI, USA},
}

For an example of a large-scale TeaStore setup we refer to Microservices: A Performance Tester’s Dream or Nightmare? and the corresponding replication package.

@inproceedings{10.1145/3358960.3379124,
  author = {Eismann, Simon and Bezemer, Cor-Paul and Shang, Weiyi and Okanovi\'{c}, Du\v{s}an and van Hoorn, Andr\'{e}},
  title = {Microservices: A Performance Tester's Dream or Nightmare?},
  year = {2020},
  booktitle = {Proceedings of the ACM/SPEC International Conference on Performance Engineering},
  pages = {138–149},
  series = {ICPE '20},
}

The TeaStore in Action

The TeaStore is used as the demo application in the Cisco Full Stack Observability Workshop and as a case study in a number of scientific publications:

  • A. Horn, H.M. Fard, F. Wolf. Multi-objective Hybrid Autoscaling of Microservices in Kubernetes Clusters. In Euro-Par 2022: Parallel Processing, pp 233–250. 2022. https://doi.org/10.1007/978-3-031-12597-3_15
  • M. Elsaadawy, A. Lohner, R. Wang, J. Wang, and B. Kemme. DyMonD: dynamic application monitoring and service detection framework. In Proceedings of the 22nd International Middleware Conference: Demos and Posters, pp- 8-9. 2021. https://doi.org/10.1145/3491086.3492471
  • D. Sokolowski, P. Weisenburger, and G. Salvaneschi. Automating serverless deployments for DevOps organizations. In ESEC/FSE 2021: Proceedings of the 29th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering, pp. 57-69. 2021. https://doi.org/10.1145/3468264.3468575
  • L. Liao, J. Chen, H. Li, Y. Zeng, W. Shang, C. Sporea, A. Toma, and S. Sajedi. Locating Performance Regression Root Causes in the Field Operations of Web-based Systems: An Experience Report. In IEEE Transactions on Software Engineering. 2021. https://doi.org/10.1109/TSE.2021.3131529
  • J. Flora, P. Gonçalves, M. Teixeira, and N. Antunes. My Services Got Old! Can Kubernetes Handle the Aging of Microservices? In IEEE International Symposium on Software Reliability Engineering Workshops. 2021. https://doi.org/10.1109/ISSREW53611.2021.00042
  • M. Torquato, P. Maciel, and M. Vieira. PyMTDEvaluator: A Tool for Time-Based Moving Target Defense Evaluation: Tool description paper. In IEEE 32nd International Symposium on Software Reliability Engineering. 2021. https://doi.org/10.1109/ISSRE52982.2021.00045
  • J. Keim, S. Schulz, D. Fuchß, C. Kocher, J. Speit, and A. Koziolek. Trace Link Recovery for Software Architecture Documentation. In European Conference on Software Architecture, pp. 101-116. 2021. https://doi.org/10.1007/978-3-030-86044-8_7
  • J. Grohmann, M. Straesser, A. Chalbani, S. Eismann, Y. Arian, N. Herbst, N Peretz, and S. Kounev. 2021. SuanMing: Explainable Prediction of Performance Degradations in Microservice Applications. In Proceedings of the ACM/SPEC International Conference on Performance Engineering, pp. 165-176. 2021. https://doi.org/10.1145/3427921.3450248
  • V. Rao, V. Singh, K. S. Goutham, B. U. Kempaiah, R. J. Mampilli, S. Kalambur, and D. Sitaram. 2021. *Scheduling Microservice Containers on Large Core Machines through Placement and Coalescing.*https://jsspp.org/papers21/vishal-rao.pdf
  • D. Monschein, M. Mazkatli, R. Heinrich, and A. Koziolek. 2021. *nabling Consistency between Software Artefacts for Software Adaption and Evolution.*In 2021 IEEE 18th International Conference on Software Architecture (ICSA) (pp. 1-12). https://sdqweb.ipd.kit.edu/publications/pdfs/monschein2021a.pdf
  • S. Eismann, C. Bezemer, W. Shang, D. Okanović, and A. van Hoorn. 2020. *icroservices: A Performance Tester's Dream or Nightmare?*In Proceedings of the ACM/SPEC International Conference on Performance Engineering (ICPE '20). Association for Computing Machinery, New York, NY, USA, 138–149. https://doi.org/10.1145/3358960.3379124
  • J. Grohmann, P. Nicholson, J. Iglesias, S. Kounev, and D. Lugones. 2019. *onitorless: Predicting Performance Degradation in Cloud Applications with Machine Learning.*In Proceedings of the 20th International Middleware Conference (Middleware '19). Association for Computing Machinery, New York, NY, USA, 149–162. https://doi.org/10.1145/3361525.3361543
  • M. Mazkatli, D. Monschein, J. Grohmann and A. Koziolek, Incremental Calibration of Architectural Performance Models with Parametric Dependencies 020 IEEE International Conference on Software Architecture (ICSA '2020), Salvador, Brazil, 2020, pp. 23-34, https://doi.org/10.1109/ICSA47634.2020.00011.
  • J. Grohmann, S. Eismann, S. Elflein, J. V. Kistowski, S. Kounev and M. Mazkatli, Detecting Parametric Dependencies for Performance Models Using Feature Selection Techniques 2019 IEEE 27th International Symposium on Modeling, Analysis, and Simulation of Computer and Telecommunication Systems (MASCOTS '19), Rennes, France, 2019, pp. 309-322, https://doi.org/10.1109/MASCOTS.2019.00042
  • S. Gholami, A. Goli, C. Bezemer, and H. Khazaei. 2020. A Framework for Satisfying the Performance Requirements of Containerized Software Systems Through Multi-Versioning. In Proceedings of the ACM/SPEC International Conference on Performance Engineering (ICPE '20). Association for Computing Machinery, New York, NY, USA, 150–160. https://doi.org/10.1145/3358960.3379125
  • N. Schmitt, L. Iffländer, A. Bauer and S. Kounev, Online Power Consumption Estimation for Functions in Cloud Applications. 2019 IEEE International Conference on Autonomic Computing (ICAC '19), Umea, Sweden, 2019, pp. 63-72, https://10.1109/ICAC.2019.00018
  • S. Athlur, N. Sondhi, S. Batra, S. Kalambur and D. Sitaram, Cache Characterization of Workloads in a Microservice Environment 2019 IEEE International Conference on Cloud Computing in Emerging Markets (CCEM '19), Bengaluru, India, 2019, pp. 45-50, https://10.1109/CCEM48484.2019.00010
  • S. Caculo, K. Lahiri and S. Kalambur, Characterizing the Scale-Up Performance of Microservices using TeaStore. 2020 IEEE International Symposium on Workload Characterization (IISWC '2020), Beijing, China, 2020, pp. 48-59, https://10.1109/IISWC50251.2020.00014
  • A. Goli, N. Mahmoudi, H. Khazaei, and O. Ardakanian. A Holistic Machine Learning-Based Autoscaling Approach for Microservice Applications. preprint
  • W. Viktorsson, C. Klein and J. Tordsson, Security-Performance Trade-offs of Kubernetes Container Runtimes. 2020 28th International Symposium on Modeling, Analysis, and Simulation of Computer and Telecommunication Systems (MASCOTS '2020), Nice, France, 2020, pp. 1-4, doi: https://10.1109/10.1109/MASCOTS50786.2020.9285946
  • J. Martin, A. Kandasamy, and K. Chandrasekaran. CREW: Cost and Reliability aware Eagle‐Whale optimiser for service placement in Fog. Software: Practice and Experience 50.12 (2020): 2337-2360. https://doi.org/10.1002/spe.2896
  • M. Tamiru, J. Tordsson, E. Elmroth, and G. Pierre. An Experimental Evaluation of the Kubernetes Cluster Autoscaler in the Cloud. In CloudCom 2020-12th IEEE International Conference on Cloud Computing Technology and Science. 2020. https://hal.inria.fr/hal-02958916
  • E. Boza, C. Abad, S. Narayanan, B. Balasubramanian, and M. Jang. 2019. A Case for Performance-Aware Deployment of Containers. In Proceedings of the 5th International Workshop on Container Technologies and Container Clouds (WOC '19). Association for Computing Machinery, New York, NY, USA, 25–30. https://doi.org/10.1145/3366615.3368355

If your paper is missing from this list, open up an issue and we'll add it :)

teastore's People

Contributors

actions-user avatar angi2412 avatar arunans23 avatar bmsousa avatar dagere avatar daskus1 avatar dependabot[bot] avatar drandrebauer avatar dsoko2 avatar galdorino avatar hkayabilisim avatar jo102tz avatar ngehrsitz avatar nschmittuniwue avatar odidev avatar simoneismann avatar simontrapp avatar temanisparsh avatar tim0dd avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

teastore's Issues

Robustness vs NULL cookie

Currently, if the user manages to somehow get a corrupted session cookie i.e. a cookie containing null, the user gets permanently locked out. We should be a little more robust here.

Login with wrong password/username

If a user logs in using a wrong username or password he should get some kind of visual feedback on what happened. Maybe a red message bar?

Use Loggers instead of Sysout

  • Configure SLF4J to a reasonable setting.
  • Initialize logger in registry client
  • Replace all Sysout/syserr with Logger calls (with useful log levels)

Recommender always recommends the same items

Specifically what it seems to do is the following:

  • Sort products by number of orders in descending order
  • For each number of orders (in descending order): select the first product with this order count and add to recommender output

If attached a small CSV sheet that shows the behavior and order counts for the default DB
recommenderanalysis.txt

Image provide fails ungracefully if no persistence is found

If an image provider is started and no persistence is available it currently fails with the exception below. This is probably due to the recent changes, where a connection throws an exception if it takes too long instead of returning null.

tools.descartes.petsupplystore.registryclient.loadbalancers.LoadBalancerTimeoutException: Timout at endpoint: generatedb, with target service: tools.descartes.petsupplystore.persistence
        at tools.descartes.petsupplystore.registryclient.loadbalancers.ServiceLoadBalancer.loadBalanceRESTOperation(ServiceLoadBalancer.java:204)
        at tools.descartes.petsupplystore.registryclient.loadbalancers.ServiceLoadBalancer.loadBalanceRESTOperation(ServiceLoadBalancer.java:177)
        at tools.descartes.petsupplystore.image.setup.SetupController.waitForPersistence(SetupController.java:120)
        at tools.descartes.petsupplystore.image.setup.SetupController.fetchCategories(SetupController.java:172)
        at tools.descartes.petsupplystore.image.setup.SetupController.generateImages(SetupController.java:218)
        at tools.descartes.petsupplystore.image.setup.SetupController.startup(SetupController.java:542)
        at tools.descartes.petsupplystore.image.setup.ImageProviderStartup$1.callback(ImageProviderStartup.java:57)
        at tools.descartes.petsupplystore.registryclient.RegistryClient$1.run(RegistryClient.java:168)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)

Refactor Image Provider Setup

The image provider's startup could be refactored to be more easily testable. It would also help in finding errors and understanding the code base. Maybe some sort of state-machine?

Move namespace to petsupplystore

tools.descartes.petstore -> tools.descartes.petsupplystore

don't forget to change poms, Service, web.xml, Eclipse context paths, etc.

Warnings and Todos in the image provider

I was able to clean up the warnings across all projects, except for three warnings in the image provider.

The warnings concern some unused code in the TestRandomReplacement.java, i would rather not delete the code, in case it is still needed.

Additionally the SetupController.java contains two TODOs, either fix the TODOs or convert them to gitlab issues :-)

Recommender Tests fail

Recommender is the last to include Persistence and Registry imports during testing. The imports are configured wrong, though. Migrating to Wiremock should fix the issue.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.