All Projects → instana → Robot Shop

instana / Robot Shop

Licence: apache-2.0
Sample microservices application for playing with

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Robot Shop

Apm Agent Rum Js
Elastic APM Real User Monitoring JavaScript agent
Stars: ✭ 166 (-47.47%)
Mutual labels:  distributed-tracing, performance-monitoring
Apm Agent Php
Elastic APM PHP Agent
Stars: ✭ 129 (-59.18%)
Mutual labels:  distributed-tracing, performance-monitoring
Apm Agent Nodejs
Elastic APM Node.js Agent
Stars: ✭ 467 (+47.78%)
Mutual labels:  distributed-tracing, performance-monitoring
uptrace
Open source APM: OpenTelemetry traces, metrics, and logs
Stars: ✭ 1,187 (+275.63%)
Mutual labels:  performance-monitoring, distributed-tracing
Spring Cloud Sleuth
Distributed tracing for spring cloud
Stars: ✭ 1,531 (+384.49%)
Mutual labels:  microservices, distributed-tracing
Jaeger Client Go
Jaeger Bindings for Go OpenTracing API.
Stars: ✭ 1,035 (+227.53%)
Mutual labels:  microservices, distributed-tracing
Apm Server
APM Server
Stars: ✭ 878 (+177.85%)
Mutual labels:  distributed-tracing, performance-monitoring
Skywalking Tutorials
Video tutorials for Skywalking( A distributed tracing system, and APM. )
Stars: ✭ 77 (-75.63%)
Mutual labels:  microservices, distributed-tracing
Myperf4j
High performance Java APM. Powered by ASM. Try it. Test it. If you feel its better, use it.
Stars: ✭ 2,281 (+621.84%)
Mutual labels:  microservices, performance-monitoring
go-sensor
🚀 Go Distributed Tracing & Metrics Sensor for Instana
Stars: ✭ 90 (-71.52%)
Mutual labels:  performance-monitoring, distributed-tracing
Surging
Surging is a micro-service engine that provides a lightweight, high-performance, modular RPC request pipeline. The service engine supports http, TCP, WS,Grpc, Thrift,Mqtt, UDP, and DNS protocols. It uses ZooKeeper and Consul as a registry, and integrates it. Hash, random, polling, Fair Polling as a load balancing algorithm, built-in service gove…
Stars: ✭ 3,088 (+877.22%)
Mutual labels:  microservices
Aofe.code
《前端架构:从入门到微前端》源码,code for Architecture of Frontend
Stars: ✭ 292 (-7.59%)
Mutual labels:  microservices
Cqrs
A lightweight enterprise Function as a Service (FaaS) framework to write function based serverless and micro-service applications in hybrid multi-datacentre, on-premise and Azure environments.
Stars: ✭ 310 (-1.9%)
Mutual labels:  microservices
Spidey
A Microservices and GraphQL based online store
Stars: ✭ 314 (-0.63%)
Mutual labels:  microservices
Eureka Js Client
JS implementation of a client for Eureka (https://github.com/Netflix/eureka), the Netflix OSS service registry.
Stars: ✭ 293 (-7.28%)
Mutual labels:  microservices
Spring Cloud Task
Short lived microservices with Spring Batch
Stars: ✭ 310 (-1.9%)
Mutual labels:  microservices
Obvs
An observable microservice bus library for .NET, that wraps the underlying message transports in simple Rx based interfaces.
Stars: ✭ 290 (-8.23%)
Mutual labels:  microservices
Solution Architecture
Solution Architecture links, articles, books, video lessons, etc.
Stars: ✭ 289 (-8.54%)
Mutual labels:  microservices
Armeria
Your go-to microservice framework for any situation, from the creator of Netty et al. You can build any type of microservice leveraging your favorite technologies, including gRPC, Thrift, Kotlin, Retrofit, Reactive Streams, Spring Boot and Dropwizard.
Stars: ✭ 3,392 (+973.42%)
Mutual labels:  microservices
Jwtauth
JWT authentication middleware for Go HTTP services
Stars: ✭ 316 (+0%)
Mutual labels:  microservices

Sample Microservice Application

Stan's Robot Shop is a sample microservice application you can use as a sandbox to test and learn containerised application orchestration and monitoring techniques. It is not intended to be a comprehensive reference example of how to write a microservices application, although you will better understand some of those concepts by playing with Stan's Robot Shop. To be clear, the error handling is patchy and there is not any security built into the application.

You can get more detailed information from my blog post about this sample microservice application.

This sample microservice application has been built using these technologies:

The various services in the sample application already include all required Instana components installed and configured. The Instana components provide automatic instrumentation for complete end to end tracing, as well as complete visibility into time series metrics for all the technologies.

To see the application performance results in the Instana dashboard, you will first need an Instana account. Don't worry a trial account is free.

Build from Source

To optionally build from source (you will need a newish version of Docker to do this) use Docker Compose. Optionally edit the .env file to specify an alternative image registry and version tag; see the official documentation for more information.

$ docker-compose build

If you modified the .env file and changed the image registry, you need to push the images to that registry

$ docker-compose push

Run Locally

You can run it locally for testing.

If you did not build from source, don't worry all the images are on Docker Hub. Just pull down those images first using:

$ docker-compose pull

Fire up Stan's Robot Shop with:

$ docker-compose up

If you want to fire up some load as well:

$ docker-compose -f docker-compose.yaml -f docker-compose-load.yaml up

If you are running it locally on a Linux host you can also run the Instana agent locally, unfortunately the agent is currently not supported on Mac.

There is also only limited support on ARM architectures at the moment.

Marathon / DCOS

The manifests for robotshop are in the DCOS/ directory. These manifests were built using a fresh install of DCOS 1.11.0. They should work on a vanilla HA or single instance install.

You may install Instana via the DCOS package manager, instructions are here: https://github.com/dcos/examples/tree/master/instana-agent/1.9

Kubernetes

You can run Kubernetes locally using minikube or on one of the many cloud providers.

The Docker container images are all available on Docker Hub.

Install Stan's Robot Shop to your Kubernetes cluster using the Helm chart.

To deploy the Instana agent to Kubernetes, just use the helm chart.

Accessing the Store

If you are running the store locally via docker-compose up then, the store front is available on localhost port 8080 http://localhost:8080

If you are running the store on Kubernetes via minikube then, find the IP address of Minikube and the Node Port of the web service.

$ minikube ip
$ kubectl get svc web

If you are using a cloud Kubernetes / Openshift / Mesosphere then it will be available on the load balancer of that system.

Load Generation

A separate load generation utility is provided in the load-gen directory. This is not automatically run when the application is started. The load generator is built with Python and Locust. The build.sh script builds the Docker image, optionally taking push as the first argument to also push the image to the registry. The registry and tag settings are loaded from the .env file in the parent directory. The script load-gen.sh runs the image, it takes a number of command line arguments. You could run the container inside an orchestration system (K8s) as well if you want to, an example descriptor is provided in K8s directory. For more details see the README in the load-gen directory.

Website Monitoring / End-User Monitoring

Docker Compose

To enable Website Monioring / End-User Monitoring (EUM) see the official documentation for how to create a configuration. There is no need to inject the JavaScript fragment into the page, this will be handled automatically. Just make a note of the unique key and set the environment variable INSTANA_EUM_KEY and INSTANA_EUM_REPORTING_URL for the web image within docker-compose.yaml.

Kubernetes

The Helm chart for installing Stan's Robot Shop supports setting the key and endpoint url required for website monitoring, see the README.

Prometheus

The cart and payment services both have Prometheus metric endpoints. These are accessible on /metrics. The cart service provides:

  • Counter of the number of items added to the cart

The payment services provides:

  • Counter of the number of items perchased
  • Histogram of the total number of items in each cart
  • Histogram of the total value of each cart

To test the metrics use:

$ curl http://<host>:8080/api/cart/metrics
$ curl http://<host>:8080/api/payment/metrics
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].