Skip to content

Commit ae41734

Browse files
puckpuckchalin
andauthored
[demo] rename demo services (open-telemetry#6438)
Co-authored-by: Patrice Chalin <[email protected]>
1 parent b798818 commit ae41734

File tree

15 files changed

+134
-150
lines changed

15 files changed

+134
-150
lines changed

content/en/docs/demo/architecture.md

+46-46
Original file line numberDiff line numberDiff line change
@@ -12,70 +12,70 @@ generator which uses [Locust](https://locust.io/) to fake user traffic.
1212
```mermaid
1313
graph TD
1414
subgraph Service Diagram
15-
accountingservice(Accounting Service):::dotnet
16-
adservice(Ad Service):::java
15+
accounting(Accounting):::dotnet
16+
ad(Ad):::java
1717
cache[(Cache<br/>&#40Valkey&#41)]
18-
cartservice(Cart Service):::dotnet
19-
checkoutservice(Checkout Service):::golang
20-
currencyservice(Currency Service):::cpp
21-
emailservice(Email Service):::ruby
18+
cart(Cart):::dotnet
19+
checkout(Checkout):::golang
20+
currency(Currency):::cpp
21+
email(Email):::ruby
2222
flagd(Flagd):::golang
23-
flagdui(Flagd-ui):::typescript
24-
frauddetectionservice(Fraud Detection Service):::kotlin
23+
flagd-ui(Flagd-ui):::typescript
24+
fraud-detection(Fraud Detection):::kotlin
2525
frontend(Frontend):::typescript
26-
frontendproxy(Frontend Proxy <br/>&#40Envoy&#41):::cpp
27-
imageprovider(Image Provider <br/>&#40nginx&#41):::cpp
28-
loadgenerator([Load Generator]):::python
29-
paymentservice(Payment Service):::javascript
30-
productcatalogservice(Product Catalog Service):::golang
31-
quoteservice(Quote Service):::php
32-
recommendationservice(Recommendation Service):::python
33-
shippingservice(Shipping Service):::rust
26+
frontend-proxy(Frontend Proxy <br/>&#40Envoy&#41):::cpp
27+
image-provider(Image Provider <br/>&#40nginx&#41):::cpp
28+
load-generator([Load Generator]):::python
29+
payment(Payment):::javascript
30+
product-catalog(Product Catalog):::golang
31+
quote(Quote):::php
32+
recommendation(Recommendation):::python
33+
shipping(Shipping):::rust
3434
queue[(queue<br/>&#40Kafka&#41)]:::java
3535
react-native-app(React Native App):::typescript
3636
37-
adservice ---->|gRPC| flagd
37+
ad ---->|gRPC| flagd
3838
39-
checkoutservice -->|gRPC| cartservice
40-
checkoutservice --->|TCP| queue
41-
cartservice --> cache
42-
cartservice -->|gRPC| flagd
39+
checkout -->|gRPC| cart
40+
checkout --->|TCP| queue
41+
cart --> cache
42+
cart -->|gRPC| flagd
4343
44-
checkoutservice -->|gRPC| shippingservice
45-
checkoutservice -->|gRPC| paymentservice
46-
checkoutservice --->|HTTP| emailservice
47-
checkoutservice -->|gRPC| currencyservice
48-
checkoutservice -->|gRPC| productcatalogservice
44+
checkout -->|gRPC| shipping
45+
checkout -->|gRPC| payment
46+
checkout --->|HTTP| email
47+
checkout -->|gRPC| currency
48+
checkout -->|gRPC| product-catalog
4949
50-
frauddetectionservice -->|gRPC| flagd
50+
fraud-detection -->|gRPC| flagd
5151
52-
frontend -->|gRPC| adservice
53-
frontend -->|gRPC| cartservice
54-
frontend -->|gRPC| checkoutservice
55-
frontend ---->|gRPC| currencyservice
56-
frontend ---->|gRPC| recommendationservice
57-
frontend -->|gRPC| productcatalogservice
52+
frontend -->|gRPC| ad
53+
frontend -->|gRPC| cart
54+
frontend -->|gRPC| checkout
55+
frontend ---->|gRPC| currency
56+
frontend ---->|gRPC| recommendation
57+
frontend -->|gRPC| product-catalog
5858
59-
frontendproxy -->|gRPC| flagd
60-
frontendproxy -->|HTTP| frontend
61-
frontendproxy -->|HTTP| flagdui
62-
frontendproxy -->|HTTP| imageprovider
59+
frontend-proxy -->|gRPC| flagd
60+
frontend-proxy -->|HTTP| frontend
61+
frontend-proxy -->|HTTP| flagd-ui
62+
frontend-proxy -->|HTTP| image-provider
6363
64-
Internet -->|HTTP| frontendproxy
64+
Internet -->|HTTP| frontend-proxy
6565
66-
loadgenerator -->|HTTP| frontendproxy
66+
load-generator -->|HTTP| frontend-proxy
6767
68-
paymentservice -->|gRPC| flagd
68+
payment -->|gRPC| flagd
6969
70-
queue -->|TCP| accountingservice
71-
queue -->|TCP| frauddetectionservice
70+
queue -->|TCP| accounting
71+
queue -->|TCP| fraud-detection
7272
73-
recommendationservice -->|gRPC| productcatalogservice
74-
recommendationservice -->|gRPC| flagd
73+
recommendation -->|gRPC| product-catalog
74+
recommendation -->|gRPC| flagd
7575
76-
shippingservice -->|HTTP| quoteservice
76+
shipping -->|HTTP| quote
7777
78-
react-native-app -->|HTTP| frontendproxy
78+
react-native-app -->|HTTP| frontend-proxy
7979
end
8080
8181
classDef dotnet fill:#178600,color:white;

content/en/docs/demo/feature-flags.md

+14-14
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ aliases:
44
- feature_flags
55
- services/feature-flag
66
- services/featureflagservice
7-
cSpell:ignore: loadgenerator OLJCESPC7Z
7+
cSpell:ignore: OLJCESPC7Z
88
---
99

1010
The demo provides several feature flags that you can use to simulate different
@@ -31,19 +31,19 @@ user interface:
3131

3232
## Implemented feature flags
3333

34-
| Feature Flag | Service(s) | Description |
35-
| ----------------------------------- | ---------------- | --------------------------------------------------------------------------------------------------------- |
36-
| `adServiceFailure` | Ad Service | Generate an error for `GetAds` 1/10th of the time |
37-
| `adServiceManualGc` | Ad Service | Trigger full manual garbage collections in the ad service |
38-
| `adServiceHighCpu` | Ad Service | Trigger high cpu load in the ad service. If you want to demo cpu throttling, set cpu resource limits |
39-
| `cartServiceFailure` | Cart Service | Generate an error whenever `EmptyCart` is called |
40-
| `productCatalogFailure` | Product Catalog | Generate an error for `GetProduct` requests with product ID: `OLJCESPC7Z` |
41-
| `recommendationServiceCacheFailure` | Recommendation | Create a memory leak due to an exponentially growing cache. 1.4x growth, 50% of requests trigger growth. |
42-
| `paymentServiceFailure` | Payment Service | Generate an error when calling the `charge` method. |
43-
| `paymentServiceUnreachable` | Checkout Service | Use a bad address when calling the PaymentService to make it seem like the PaymentService is unavailable. |
44-
| `loadgeneratorFloodHomepage` | Loadgenerator | Start flooding the homepage with a huge amount of requests, configurable by changing flagd JSON on state. |
45-
| `kafkaQueueProblems` | Kafka | Overloads Kafka queue while simultaneously introducing a consumer side delay leading to a lag spike. |
46-
| `imageSlowLoad` | Frontend | Utilizes envoy fault injection, produces a delay in loading of product images in the frontend. |
34+
| Feature Flag | Service(s) | Description |
35+
| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------------------- |
36+
| `adServiceFailure` | Ad | Generate an error for `GetAds` 1/10th of the time |
37+
| `adServiceManualGc` | Ad | Trigger full manual garbage collections in the ad service |
38+
| `adServiceHighCpu` | Ad | Trigger high cpu load in the ad service. If you want to demo cpu throttling, set cpu resource limits |
39+
| `cartServiceFailure` | Cart | Generate an error whenever `EmptyCart` is called |
40+
| `productCatalogFailure` | Product Catalog | Generate an error for `GetProduct` requests with product ID: `OLJCESPC7Z` |
41+
| `recommendationServiceCacheFailure` | Recommendation | Create a memory leak due to an exponentially growing cache. 1.4x growth, 50% of requests trigger growth. |
42+
| `paymentServiceFailure` | Payment | Generate an error when calling the `charge` method. |
43+
| `paymentServiceUnreachable` | Checkout | Use a bad address when calling the PaymentService to make it seem like the PaymentService is unavailable. |
44+
| `loadgeneratorFloodHomepage` | Load Generator | Start flooding the homepage with a huge amount of requests, configurable by changing flagd JSON on state. |
45+
| `kafkaQueueProblems` | Kafka | Overloads Kafka queue while simultaneously introducing a consumer side delay leading to a lag spike. |
46+
| `imageSlowLoad` | Frontend | Utilizes envoy fault injection, produces a delay in loading of product images in the frontend. |
4747

4848
## Feature Flag Architecture
4949

content/en/docs/demo/kubernetes-deployment.md

+10-10
Original file line numberDiff line numberDiff line change
@@ -81,11 +81,11 @@ LoadBalancer) with optionally deployed ingress resources.
8181

8282
### Expose services using kubectl port-forward
8383

84-
To expose the frontendproxy service use the following command (replace
84+
To expose the frontend-proxy service use the following command (replace
8585
`my-otel-demo` with your Helm chart release name accordingly):
8686

8787
```shell
88-
kubectl port-forward svc/my-otel-demo-frontendproxy 8080:8080
88+
kubectl port-forward svc/my-otel-demo-frontend-proxy 8080:8080
8989
```
9090

9191
{{% alert title="Note" color="info" %}}
@@ -97,7 +97,7 @@ done.
9797

9898
{{% /alert %}}
9999

100-
With the frontendproxy port-forward set up, you can access:
100+
With the frontend-proxy port-forward set up, you can access:
101101

102102
- Web store: <http://localhost:8080/>
103103
- Grafana: <http://localhost:8080/grafana/>
@@ -121,16 +121,16 @@ the proper support before using these configuration options.
121121

122122
{{% /alert %}}
123123

124-
Each demo component (ie: frontendproxy) offers a way to have its Kubernetes
124+
Each demo component (ie: frontend-proxy) offers a way to have its Kubernetes
125125
service type configured. By default, these will not be created, but you can
126126
enable and configure them through the `ingress` property of each component.
127127

128-
To configure the frontendproxy component to use an ingress resource you would
128+
To configure the frontend-proxy component to use an ingress resource you would
129129
specify the following in your values file:
130130

131131
```yaml
132132
components:
133-
frontendProxy:
133+
frontend-proxy:
134134
ingress:
135135
enabled: true
136136
annotations: {}
@@ -147,16 +147,16 @@ the documentation from your ingress controller for more information.
147147
148148
#### Configure service types
149149
150-
Each demo component (ie: frontendproxy) offers a way to have its Kubernetes
150+
Each demo component (ie: frontend-proxy) offers a way to have its Kubernetes
151151
service type configured. By default, these will be `ClusterIP` but you can
152152
change each one using the `service.type` property of each component.
153153

154-
To configure the frontendproxy component to use a LoadBalancer service type you
154+
To configure the frontend-proxy component to use a LoadBalancer service type you
155155
would specify the following in your values file:
156156

157157
```yaml
158158
components:
159-
frontendProxy:
159+
frontend-proxy:
160160
service:
161161
type: LoadBalancer
162162
```
@@ -165,7 +165,7 @@ components:
165165

166166
In order for spans from the browser to be properly collected, you will also need
167167
to specify the location where the OpenTelemetry Collector is exposed. The
168-
frontendproxy defines a route for the collector with a path prefix of
168+
frontend-proxy defines a route for the collector with a path prefix of
169169
`/otlp-http`. You can configure the collector endpoint by setting the following
170170
environment variable on the frontend component:
171171

content/en/docs/demo/requirements/architecture.md

+8-24
Original file line numberDiff line numberDiff line change
@@ -45,26 +45,11 @@ logs (as applicable/available).
4545

4646
Each service should be interchangeable with a service that performs the same
4747
business logic, implementing the same gRPC endpoints, but written in a different
48-
language/implementation. For the initial implementation of the demo, we should
49-
focus on adding as many missing languages as possible by swapping out existing
50-
services with implementations in un-represented languages. For future versions
51-
we will look to add more distinct language options per service.
48+
language/implementation.
5249

53-
Each service should communicate with a feature flag service in order to
54-
enable/disable 'faults' that can be used to illustrate how telemetry helps solve
55-
problems in distributed applications.
56-
57-
A PHP service should be added to the main application as an 'admin service'. A
58-
Database should be added to enable CRUD functionality on the Product Catalog.
59-
60-
The 'shippingservice' should be reimplemented in Rust.
61-
62-
The 'currencyservice' should be reimplemented in C++.
63-
64-
The 'emailservice' should be reimplemented in Ruby.
65-
66-
For future iterations, the 'frontend' service can be extended with a mobile
67-
application written in Swift.
50+
Each service should be able to communicate with a feature flag service in order
51+
to enable/disable faults that can be used to illustrate how telemetry helps
52+
solve problems in distributed applications.
6853

6954
## Feature Flag Component
7055

@@ -75,11 +60,10 @@ Feature flags can be set through the flagd configurator user interface.
7560

7661
## Orchestration and Deployment
7762

78-
All services should run on Kubernetes. The OpenTelemetry Collector should be
79-
deployed via the OpenTelemetry Operator, and run in a sidecar + gateway mode.
80-
Telemetry from each pod should be routed from agents to a gateway, and the
81-
gateway should export telemetry by default to an open source trace + metrics
82-
visualizer.
63+
All services run on Kubernetes. The OpenTelemetry Collector should be deployed
64+
via the OpenTelemetry Operator, and run in a sidecar + gateway mode. Telemetry
65+
from each pod should be routed from agents to a gateway, and the gateway should
66+
export telemetry by default to an open source trace + metrics visualizer.
8367

8468
For local/non-Kubernetes deployment, the Collector should be deployed via
8569
compose file and monitor not only traces/metrics from applications, but also the

content/en/docs/demo/scenarios/recommendation-cache/index.md

+6-6
Original file line numberDiff line numberDiff line change
@@ -68,13 +68,13 @@ work, and viewing the details allows us to get a better idea of what's going on.
6868
## Confirming the Diagnosis
6969

7070
We can see in our waterfall view that the `app.cache_hit` attribute is set to
71-
`false`, and that the `app.products.count` value is extremely high.
71+
false, and that the `app.products.count` value is extremely high.
7272

73-
Returning to the search UI, filter to `recommendationservice` in the Service
74-
dropdown, and search for `app.cache_hit=true` in the Tags box. Notice that
75-
requests tend to be faster when the cache is hit. Now search for
76-
`app.cache_hit=false` and compare the latency. You should notice some changes in
77-
the visualization at the top of the trace list.
73+
Returning to the search UI, select `recommendation` in the Service dropdown, and
74+
search for `app.cache_hit=true` in the Tags box. Notice that requests tend to be
75+
faster when the cache is hit. Now search for `app.cache_hit=false` and compare
76+
the latency. You should notice some changes in the visualization at the top of
77+
the trace list.
7878

7979
Now, since this is a contrived scenario, we know where to find the underlying
8080
bug in our code. However, in a real-world scenario, we may need to perform

0 commit comments

Comments
 (0)