From 5c81d3972cea43fb24716f1d6b06c6e6551b313e Mon Sep 17 00:00:00 2001 From: Austin Parker Date: Mon, 11 Mar 2024 11:11:01 -0400 Subject: [PATCH] [demo] Replace references to feature flag service with flagd (#4058) --- content/en/docs/demo/_index.md | 26 ++-- content/en/docs/demo/architecture.md | 15 --- content/en/docs/demo/development.md | 6 - content/en/docs/demo/docker-deployment.md | 1 - content/en/docs/demo/feature-flags.md | 18 ++- content/en/docs/demo/kubernetes-deployment.md | 1 - .../en/docs/demo/requirements/architecture.md | 12 +- content/en/docs/demo/services/_index.md | 33 +++-- content/en/docs/demo/services/feature-flag.md | 113 ------------------ .../en/docs/demo/telemetry-features/_index.md | 5 + .../demo/telemetry-features/log-coverage.md | 31 +++-- .../manual-span-attributes.md | 8 -- .../telemetry-features/metric-coverage.md | 31 +++-- .../demo/telemetry-features/trace-coverage.md | 31 +++-- .../docs/languages/erlang/getting-started.md | 4 - .../en/docs/languages/go/getting-started.md | 2 +- data/registry/instrumentation-elixir-ecto.yml | 1 - static/refcache.json | 12 ++ 18 files changed, 106 insertions(+), 244 deletions(-) delete mode 100644 content/en/docs/demo/services/feature-flag.md diff --git a/content/en/docs/demo/_index.md b/content/en/docs/demo/_index.md index c8ae6b40ccfe..cb35886fbb6d 100644 --- a/content/en/docs/demo/_index.md +++ b/content/en/docs/demo/_index.md @@ -23,19 +23,18 @@ Want to deploy the demo and see it in action? Start here. Want to understand how a particular language's instrumentation works? Start here. -| Language | Automatic Instrumentation | Instrumentation Libraries | Manual Instrumentation | -| ------------- | -------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| .NET | | [Cart Service](services/cart/) | [Cart Service](services/cart/) | -| C++ | | | [Currency Service](services/currency/) | -| Erlang/Elixir | | [Feature Flag Service](services/feature-flag/) | [Feature Flag Service](services/feature-flag/) | -| Go | | [Accounting Service](services/accounting/), [Checkout Service](services/checkout/), [Product Catalog Service](services/product-catalog/) | [Checkout Service](services/checkout/), [Product Catalog Service](services/product-catalog/) | -| Java | [Ad Service](services/ad/) | | [Ad Service](services/ad/) | -| JavaScript | | [Frontend](services/frontend/) | [Frontend](services/frontend/), [Payment Service](services/payment/) | -| Kotlin | | [Fraud Detection Service](services/fraud-detection/) | | -| PHP | | [Quote Service](services/quote/) | [Quote Service](services/quote/) | -| Python | [Recommendation Service](services/recommendation/) | | [Recommendation Service](services/recommendation/) | -| Ruby | | [Email Service](services/email/) | [Email Service](services/email/) | -| Rust | | [Shipping Service](services/shipping/) | [Shipping Service](services/shipping/) | +| Language | Automatic Instrumentation | Instrumentation Libraries | Manual Instrumentation | +| ---------- | -------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| .NET | | [Cart Service](services/cart/) | [Cart Service](services/cart/) | +| C++ | | | [Currency Service](services/currency/) | +| Go | | [Accounting Service](services/accounting/), [Checkout Service](services/checkout/), [Product Catalog Service](services/product-catalog/) | [Checkout Service](services/checkout/), [Product Catalog Service](services/product-catalog/) | +| Java | [Ad Service](services/ad/) | | [Ad Service](services/ad/) | +| JavaScript | | [Frontend](services/frontend/) | [Frontend](services/frontend/), [Payment Service](services/payment/) | +| Kotlin | | [Fraud Detection Service](services/fraud-detection/) | | +| PHP | | [Quote Service](services/quote/) | [Quote Service](services/quote/) | +| Python | [Recommendation Service](services/recommendation/) | | [Recommendation Service](services/recommendation/) | +| Ruby | | [Email Service](services/email/) | [Email Service](services/email/) | +| Rust | | [Shipping Service](services/shipping/) | [Shipping Service](services/shipping/) | ## Service Documentation @@ -46,7 +45,6 @@ found here: - [Cart Service](services/cart/) - [Checkout Service](services/checkout/) - [Email Service](services/email/) -- [Feature Flag Service](services/feature-flag/) - [Frontend](services/frontend/) - [Load Generator](services/load-generator/) - [Payment Service](services/payment/) diff --git a/content/en/docs/demo/architecture.md b/content/en/docs/demo/architecture.md index d97b4892ef14..2f679cbd48dc 100644 --- a/content/en/docs/demo/architecture.md +++ b/content/en/docs/demo/architecture.md @@ -28,19 +28,14 @@ productcatalogservice(Product Catalog Service):::golang quoteservice(Quote Service):::php recommendationservice(Recommendation Service):::python shippingservice(Shipping Service):::rust -featureflagservice(Feature Flag Service):::erlang -featureflagstore[(Feature Flag Store
(PostgreSQL DB))] queue[(queue
(Kafka))] Internet -->|HTTP| frontendproxy frontendproxy -->|HTTP| frontend -frontendproxy -->|HTTP| featureflagservice loadgenerator -->|HTTP| frontendproxy accountingservice -->|TCP| queue -cartservice --->|gRPC| featureflagservice - checkoutservice --->|gRPC| cartservice --> cache checkoutservice --->|gRPC| productcatalogservice checkoutservice --->|gRPC| currencyservice @@ -59,16 +54,6 @@ frontend -->|gRPC| shippingservice -->|HTTP| quoteservice frauddetectionservice -->|TCP| queue -adservice --->|gRPC| featureflagservice - -productcatalogservice -->|gRPC| featureflagservice - -recommendationservice -->|gRPC| featureflagservice - -shippingservice -->|gRPC| featureflagservice - -featureflagservice --> featureflagstore - end classDef dotnet fill:#178600,color:white; diff --git a/content/en/docs/demo/development.md b/content/en/docs/demo/development.md index a9e1524e25cb..34a3045eeb0c 100644 --- a/content/en/docs/demo/development.md +++ b/content/en/docs/demo/development.md @@ -33,12 +33,6 @@ receive hints from IDEs such as IntelliJ or VS Code. It may be necessary to run - pkg-config - protobuf-compiler -### Elixir - -- Erlang/OTP 23+ -- Elixir 1.13+ -- Rebar3 3.20+ - ### Go - Go 1.19+ diff --git a/content/en/docs/demo/docker-deployment.md b/content/en/docs/demo/docker-deployment.md index dcd51ee95f33..e551a2f1ae03 100644 --- a/content/en/docs/demo/docker-deployment.md +++ b/content/en/docs/demo/docker-deployment.md @@ -67,7 +67,6 @@ Once the images are built and containers are started you can access: - Web store: - Grafana: -- Feature Flags UI: - Load Generator UI: - Jaeger UI: - Tracetest UI: , only when using `make start-odd` diff --git a/content/en/docs/demo/feature-flags.md b/content/en/docs/demo/feature-flags.md index eeca0b01bc74..bc2202648117 100644 --- a/content/en/docs/demo/feature-flags.md +++ b/content/en/docs/demo/feature-flags.md @@ -1,13 +1,14 @@ --- title: Feature Flags aliases: [feature_flags] -cSpell:ignore: OLJCESPC7Z +cSpell:ignore: flagd OLJCESPC7Z --- -This demo comes with several feature flags which can control failure conditions -in specific services. By default the flags are disabled. Using the Feature Flags -UI you will be able to control the status of -these feature flags. +The demo provides several feature flags that you can use to simulate different +scenarios. These flags are managed by [`flagd`](https://flagd.dev), a simple +feature flag service that supports [OpenFeature](https://openfeature.dev). Flag +values are stored in the `demo.flagd.json` file. To enable a flag, change the +`defaultVariant` value in the config file for a given flag to "on". | Feature Flag | Service(s) | Description | | ----------------------- | --------------- | -------------------------------------------------------------------------------------------------------- | @@ -15,3 +16,10 @@ these feature flags. | `cartServiceFailure` | Cart Service | Generate an error for `EmptyCart` 1/10th of the time | | `productCatalogFailure` | Product Catalog | Generate an error for `GetProduct` requests with product id: `OLJCESPC7Z` | | `recommendationCache` | Recommendation | Create a memory leak due to an exponentially growing cache. 1.4x growth, 50% of requests trigger growth. | + +## Feature Flag Architecture + +Please see the [flagd documentation](https://flagd.dev) for more information on +how flagd works, and the [OpenFeature](https://openfeature.dev) website for more +information on how OpenFeature works, along with documentation for the +OpenFeature API. diff --git a/content/en/docs/demo/kubernetes-deployment.md b/content/en/docs/demo/kubernetes-deployment.md index c6064f18c4c7..79207c5fc2d5 100644 --- a/content/en/docs/demo/kubernetes-deployment.md +++ b/content/en/docs/demo/kubernetes-deployment.md @@ -73,7 +73,6 @@ With the frontendproxy port-forward set up, you can access: - Web store: - Grafana: -- Feature Flags UI: - Load Generator UI: - Jaeger UI: diff --git a/content/en/docs/demo/requirements/architecture.md b/content/en/docs/demo/requirements/architecture.md index ea13ba700e8d..e2b8400d6e4e 100644 --- a/content/en/docs/demo/requirements/architecture.md +++ b/content/en/docs/demo/requirements/architecture.md @@ -68,16 +68,8 @@ application written in Swift. ## Feature Flag Component -This component should consist of one (or more) services that provides a simple -feature flag configuration utility for the main application. It is made up of a -browser-based client/admin interface and a backend service or services. The role -of the client is to allow an operator to visualize the available feature flags -and toggle their state. The server should provide a catalog of feature flags -that main application services can register with and interrogate for their -current status and targeting rules. - -The feature flag component should be implemented as an Erlang+Elixir/Phoenix -service. The catalog of feature flags should be stored in a Database. +Feature flagging is a crucial part of cloud native application development. The +demo uses OpenFeature, a CNCF incubating project, to manage feature flags. ## Orchestration and Deployment diff --git a/content/en/docs/demo/services/_index.md b/content/en/docs/demo/services/_index.md index a5fb164022c7..ce9f0392d942 100644 --- a/content/en/docs/demo/services/_index.md +++ b/content/en/docs/demo/services/_index.md @@ -6,20 +6,19 @@ cSpell:ignore: loadgenerator To visualize request flows, see the [Service Diagram](../architecture/). -| Service | Language | Description | -| ----------------------------------------- | ------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -| [accountingservice](accounting/) | Go | Processes incoming orders and count the sum of all orders (mock/). | -| [adservice](ad/) | Java | Provides text ads based on given context words. | -| [cartservice](cart/) | .NET | Stores the items in the user's shopping cart in Redis and retrieves it. | -| [checkoutservice](checkout/) | Go | Retrieves user cart, prepares order and orchestrates the payment, shipping and the email notification. | -| [currencyservice](currency/) | C++ | Converts one money amount to another currency. Uses real values fetched from European Central Bank. It's the highest QPS service. | -| [emailservice](email/) | Ruby | Sends users an order confirmation email (mock/). | -| [frauddetectionservice](fraud-detection/) | Kotlin | Analyzes incoming orders and detects fraud attempts (mock/). | -| [featureflagservice](feature-flag/) | Erlang/Elixir | CRUD feature flag service to demonstrate various scenarios like fault injection & how to emit telemetry from a feature flag reliant service. | -| [frontend](frontend/) | JavaScript | Exposes an HTTP server to serve the website. Does not require sign up / login and generates session IDs for all users automatically. | -| [loadgenerator](load-generator/) | Python/Locust | Continuously sends requests imitating realistic user shopping flows to the frontend. | -| [paymentservice](payment/) | JavaScript | Charges the given credit card info (mock/) with the given amount and returns a transaction ID. | -| [productcatalogservice](product-catalog/) | Go | Provides the list of products from a JSON file and ability to search products and get individual products. | -| [quoteservice](quote/) | PHP | Calculates the shipping costs, based on the number of items to be shipped. | -| [recommendationservice](recommendation/) | Python | Recommends other products based on what's given in the cart. | -| [shippingservice](shipping/) | Rust | Gives shipping cost estimates based on the shopping cart. Ships items to the given address (mock/). | +| Service | Language | Description | +| ----------------------------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| [accountingservice](accounting/) | Go | Processes incoming orders and count the sum of all orders (mock/). | +| [adservice](ad/) | Java | Provides text ads based on given context words. | +| [cartservice](cart/) | .NET | Stores the items in the user's shopping cart in Redis and retrieves it. | +| [checkoutservice](checkout/) | Go | Retrieves user cart, prepares order and orchestrates the payment, shipping and the email notification. | +| [currencyservice](currency/) | C++ | Converts one money amount to another currency. Uses real values fetched from European Central Bank. It's the highest QPS service. | +| [emailservice](email/) | Ruby | Sends users an order confirmation email (mock/). | +| [frauddetectionservice](fraud-detection/) | Kotlin | Analyzes incoming orders and detects fraud attempts (mock/). | +| [frontend](frontend/) | JavaScript | Exposes an HTTP server to serve the website. Does not require sign up / login and generates session IDs for all users automatically. | +| [loadgenerator](load-generator/) | Python/Locust | Continuously sends requests imitating realistic user shopping flows to the frontend. | +| [paymentservice](payment/) | JavaScript | Charges the given credit card info (mock/) with the given amount and returns a transaction ID. | +| [productcatalogservice](product-catalog/) | Go | Provides the list of products from a JSON file and ability to search products and get individual products. | +| [quoteservice](quote/) | PHP | Calculates the shipping costs, based on the number of items to be shipped. | +| [recommendationservice](recommendation/) | Python | Recommends other products based on what's given in the cart. | +| [shippingservice](shipping/) | Rust | Gives shipping cost estimates based on the shopping cart. Ships items to the given address (mock/). | diff --git a/content/en/docs/demo/services/feature-flag.md b/content/en/docs/demo/services/feature-flag.md deleted file mode 100644 index b39bbd900b53..000000000000 --- a/content/en/docs/demo/services/feature-flag.md +++ /dev/null @@ -1,113 +0,0 @@ ---- -title: Feature Flag Service -linkTitle: Feature Flag -aliases: [featureflagservice] -cSpell:ignore: ecto featureflag grpcbox nanos oteldemo protos struct ---- - -This service is written in Erlang/Elixir and it is responsible for creating, -reading, updating and deleting feature flags in a PostgreSQL DB. It is called by -Product Catalog and Shipping services. - -[Feature Flag Service Source](https://github.com/open-telemetry/opentelemetry-demo/blob/main/src/featureflagservice/) - -## Traces - -### Initializing Tracing - -In order to set up OpenTelemetry instrumentation for -[Phoenix](https://github.com/open-telemetry/opentelemetry-erlang-contrib/tree/main/instrumentation/opentelemetry_phoenix/), -and -[Ecto](https://github.com/open-telemetry/opentelemetry-erlang-contrib/tree/main/instrumentation/opentelemetry_ecto/), -we need to call the setup methods of their instrumentation packages before -starting the Supervisor. - -This is done in the `application.ex` as follows: - -```elixir -@impl true - def start(_type, _args) do - OpentelemetryEcto.setup([:featureflagservice, :repo]) - OpentelemetryPhoenix.setup() - - children = [ - # Start the Ecto repository - Featureflagservice.Repo, - # Start the PubSub system - {Phoenix.PubSub, name: Featureflagservice.PubSub}, - # Start the Endpoint (http/https) - FeatureflagserviceWeb.Endpoint - # Start a worker by calling: Featureflagservice.Worker.start_link(arg) - # {Featureflagservice.Worker, arg} - ] - - # See https://hexdocs.pm/elixir/Supervisor.html - # for other strategies and supported options - opts = [strategy: :one_for_one, name: Featureflagservice.Supervisor] - Supervisor.start_link(children, opts) - end -``` - -To add tracing to [grpcbox](https://github.com/tsloughter/grpcbox), we need to -add the appropriate -[interceptor](https://github.com/open-telemetry/opentelemetry-erlang-contrib/tree/main/instrumentation/opentelemetry_grpcbox). - -This is configured in the `runtime.exs` file, as follows: - -```elixir -config :grpcbox, - servers: [ - %{ - :grpc_opts => %{ - :service_protos => [:ffs_demo_pb], - :unary_interceptor => {:otel_grpcbox_interceptor, :unary}, - :services => %{:"oteldemo.FeatureFlagService" => :ffs_service} - }, - :listen_opts => %{:port => grpc_port} - } - ] -``` - -### Add attributes to auto-instrumented spans - -Adding attributes to a span is accomplished by using `?set_attribute` on the -span object. In the `get_flag` function two attributes are added to the span. - -```elixir --include_lib("grpcbox/include/grpcbox.hrl"). - --include_lib("opentelemetry_api/include/otel_tracer.hrl"). - --spec get_flag(ctx:t(), ffs_demo_pb:get_flag_request()) -> - {ok, ffs_demo_pb:get_flag_response(), ctx:t()} | grpcbox_stream:grpc_error_response(). -get_flag(Ctx, #{name := Name}) -> - case 'Elixir.Featureflagservice.FeatureFlags':get_feature_flag_by_name(Name) of - nil -> - {grpc_error, {?GRPC_STATUS_NOT_FOUND, <<"the requested feature flag does not exist">>}}; - #{'__struct__' := 'Elixir.Featureflagservice.FeatureFlags.FeatureFlag', - description := Description, - enabled := Enabled, - inserted_at := CreatedAt, - updated_at := UpdatedAt - } -> - ?set_attribute('app.featureflag.name', Name), - ?set_attribute('app.featureflag.enabled', Enabled), - {ok, Epoch} = 'Elixir.NaiveDateTime':from_erl({{1970, 1, 1}, {0, 0, 0}}), - CreatedAtSeconds = 'Elixir.NaiveDateTime':diff(CreatedAt, Epoch), - UpdatedAtSeconds = 'Elixir.NaiveDateTime':diff(UpdatedAt, Epoch), - Flag = #{name => Name, - description => Description, - enabled => Enabled, - created_at => #{seconds => CreatedAtSeconds, nanos => 0}, - updated_at => #{seconds => UpdatedAtSeconds, nanos => 0}}, - {ok, #{flag => Flag}, Ctx} - end. -``` - -## Metrics - -TBD - -## Logs - -TBD diff --git a/content/en/docs/demo/telemetry-features/_index.md b/content/en/docs/demo/telemetry-features/_index.md index ef1571fc9b6a..6f95e568645c 100644 --- a/content/en/docs/demo/telemetry-features/_index.md +++ b/content/en/docs/demo/telemetry-features/_index.md @@ -2,6 +2,7 @@ title: Telemetry Features linkTitle: Telemetry Features aliases: [demo_features, features] +cSpell:ignore: flagd --- ## OpenTelemetry @@ -51,3 +52,7 @@ aliases: [demo_features, features] flag service. - **[Locust](https://locust.io)**: a background job that creates realistic usage patterns on the website using a synthetic load generator. +- **[OpenFeature](https://openfeature.dev)**: a feature flagging API and SDK + that allows for the enabling and disabling of features in the application. +- **[flagd](https://flagd.dev)**: a feature flagging daemon that is used to + manage feature flags in the demo application. diff --git a/content/en/docs/demo/telemetry-features/log-coverage.md b/content/en/docs/demo/telemetry-features/log-coverage.md index 4d31bd2a12d1..986dc4bdcc54 100644 --- a/content/en/docs/demo/telemetry-features/log-coverage.md +++ b/content/en/docs/demo/telemetry-features/log-coverage.md @@ -4,22 +4,21 @@ linkTitle: Log Coverage aliases: [log_service_features, logging-features, ../logging-features] --- -| Service | Language | OTLP Logs | -| --------------- | --------------- | --------- | -| Accounting | Go | 🚧 | -| Ad | Java | ✅ | -| Cart | .NET | ✅ | -| Checkout | Go | 🚧 | -| Currency | C++ | 🚧 | -| Email | Ruby | 🚧 | -| Feature Flag | Erlang / Elixir | 🚧 | -| Fraud Detection | Kotlin | ✅ | -| Frontend | TypeScript | 🚧 | -| Payment | JavaScript | 🚧 | -| Product Catalog | Go | 🚧 | -| Quote | PHP | ✅ | -| Recommendation | Python | ✅ | -| Shipping | Rust | 🚧 | +| Service | Language | OTLP Logs | +| --------------- | ---------- | --------- | +| Accounting | Go | 🚧 | +| Ad | Java | ✅ | +| Cart | .NET | ✅ | +| Checkout | Go | 🚧 | +| Currency | C++ | 🚧 | +| Email | Ruby | 🚧 | +| Fraud Detection | Kotlin | ✅ | +| Frontend | TypeScript | 🚧 | +| Payment | JavaScript | 🚧 | +| Product Catalog | Go | 🚧 | +| Quote | PHP | ✅ | +| Recommendation | Python | ✅ | +| Shipping | Rust | 🚧 | Emoji Legend: diff --git a/content/en/docs/demo/telemetry-features/manual-span-attributes.md b/content/en/docs/demo/telemetry-features/manual-span-attributes.md index 170d28257158..a8a37eaa616e 100644 --- a/content/en/docs/demo/telemetry-features/manual-span-attributes.md +++ b/content/en/docs/demo/telemetry-features/manual-span-attributes.md @@ -54,14 +54,6 @@ This page lists the manual Span Attributes used throughout the demo: | `app.email.recipient` | string | Email used for order confirmation | | `app.order.id` | string | Order ID | -## FeatureFlagService - -| Name | Type | Description | -| ----------------------------- | ------- | ------------------------ | -| `app.featureflag.name` | string | Name of the feature flag | -| `app.featureflag.description` | string | Admin description | -| `app.featureflag.enabled` | boolean | The feature flag status | - ## Frontend | Name | Type | Description | diff --git a/content/en/docs/demo/telemetry-features/metric-coverage.md b/content/en/docs/demo/telemetry-features/metric-coverage.md index 67d6d1d662b6..539c2c371786 100644 --- a/content/en/docs/demo/telemetry-features/metric-coverage.md +++ b/content/en/docs/demo/telemetry-features/metric-coverage.md @@ -4,22 +4,21 @@ linkTitle: Metric Coverage aliases: [metric_service_features, metric-features, ../metric-features] --- -| Service | Language | Instrumentation Libraries | Manual Instrumentation | Multiple Instruments | Views | Custom Attributes | Resource Detection | Exemplars | -| --------------- | --------------- | ------------------------- | ---------------------- | -------------------- | ----- | ----------------- | ------------------ | --------- | -| Accounting | Go | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | -| Ad | Java | ✅ | ✅ | 🚧 | 🚧 | ✅ | ✅ | ✅ | -| Cart | .NET | ✅ | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | -| Checkout | Go | ✅ | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | -| Currency | C++ | 🔕 | ✅ | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | -| Email | Ruby | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | -| Feature Flag | Erlang / Elixir | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | -| Fraud Detection | Kotlin | ✅ | 🚧 | 🚧 | 🚧 | 🚧 | ✅ | 🚧 | -| Frontend | TypeScript | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | -| Payment | JavaScript | 🚧 | ✅ | 🚧 | 🚧 | 🚧 | ✅ | 🚧 | -| Product Catalog | Go | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | -| Quote | PHP | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | -| Recommendation | Python | ✅ | ✅ | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | -| Shipping | Rust | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | +| Service | Language | Instrumentation Libraries | Manual Instrumentation | Multiple Instruments | Views | Custom Attributes | Resource Detection | Exemplars | +| --------------- | ---------- | ------------------------- | ---------------------- | -------------------- | ----- | ----------------- | ------------------ | --------- | +| Accounting | Go | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | +| Ad | Java | ✅ | ✅ | 🚧 | 🚧 | ✅ | ✅ | ✅ | +| Cart | .NET | ✅ | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | +| Checkout | Go | ✅ | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | +| Currency | C++ | 🔕 | ✅ | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | +| Email | Ruby | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | +| Fraud Detection | Kotlin | ✅ | 🚧 | 🚧 | 🚧 | 🚧 | ✅ | 🚧 | +| Frontend | TypeScript | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | +| Payment | JavaScript | 🚧 | ✅ | 🚧 | 🚧 | 🚧 | ✅ | 🚧 | +| Product Catalog | Go | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | +| Quote | PHP | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | +| Recommendation | Python | ✅ | ✅ | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | +| Shipping | Rust | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | Emoji Legend: diff --git a/content/en/docs/demo/telemetry-features/trace-coverage.md b/content/en/docs/demo/telemetry-features/trace-coverage.md index 2b3dcc6a6151..4fcf56e1b1eb 100644 --- a/content/en/docs/demo/telemetry-features/trace-coverage.md +++ b/content/en/docs/demo/telemetry-features/trace-coverage.md @@ -4,22 +4,21 @@ linkTitle: Trace Coverage aliases: [trace_service_features, trace-features, ../trace-features] --- -| Service | Language | Instrumentation Libraries | Manual Span Creation | Span Data Enrichment | RPC Context Propagation | Span Links | Baggage | Resource Detection | -| ------------------ | --------------- | ------------------------- | -------------------- | -------------------- | ----------------------- | ---------- | ------- | ------------------ | -| Accounting Service | Go | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | ✅ | -| Ad | Java | ✅ | ✅ | ✅ | 🔕 | 🔕 | 🔕 | 🚧 | -| Cart | .NET | ✅ | ✅ | ✅ | 🔕 | 🔕 | 🔕 | ✅ | -| Checkout | Go | ✅ | ✅ | ✅ | 🔕 | 🔕 | 🔕 | ✅ | -| Currency | C++ | 🔕 | ✅ | ✅ | ✅ | 🔕 | 🔕 | 🚧 | -| Email | Ruby | ✅ | ✅ | ✅ | 🔕 | 🔕 | 🔕 | 🚧 | -| Feature Flag | Erlang / Elixir | ✅ | ✅ | ✅ | 🔕 | 🔕 | 🔕 | 🚧 | -| Fraud Detection | Kotlin | ✅ | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | -| Frontend | JavaScript | ✅ | ✅ | ✅ | 🔕 | ✅ | ✅ | ✅ | -| Payment | JavaScript | ✅ | ✅ | ✅ | 🔕 | 🔕 | ✅ | ✅ | -| Product Catalog | Go | ✅ | 🔕 | ✅ | 🔕 | 🔕 | 🔕 | 🚧 | -| Quote Service | PHP | ✅ | ✅ | ✅ | 🔕 | 🔕 | 🔕 | 🚧 | -| Recommendation | Python | ✅ | ✅ | ✅ | 🔕 | 🔕 | 🔕 | 🚧 | -| Shipping | Rust | 🔕 | ✅ | ✅ | ✅ | 🔕 | 🔕 | 🚧 | +| Service | Language | Instrumentation Libraries | Manual Span Creation | Span Data Enrichment | RPC Context Propagation | Span Links | Baggage | Resource Detection | +| ------------------ | ---------- | ------------------------- | -------------------- | -------------------- | ----------------------- | ---------- | ------- | ------------------ | +| Accounting Service | Go | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | ✅ | +| Ad | Java | ✅ | ✅ | ✅ | 🔕 | 🔕 | 🔕 | 🚧 | +| Cart | .NET | ✅ | ✅ | ✅ | 🔕 | 🔕 | 🔕 | ✅ | +| Checkout | Go | ✅ | ✅ | ✅ | 🔕 | 🔕 | 🔕 | ✅ | +| Currency | C++ | 🔕 | ✅ | ✅ | ✅ | 🔕 | 🔕 | 🚧 | +| Email | Ruby | ✅ | ✅ | ✅ | 🔕 | 🔕 | 🔕 | 🚧 | +| Fraud Detection | Kotlin | ✅ | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | +| Frontend | JavaScript | ✅ | ✅ | ✅ | 🔕 | ✅ | ✅ | ✅ | +| Payment | JavaScript | ✅ | ✅ | ✅ | 🔕 | 🔕 | ✅ | ✅ | +| Product Catalog | Go | ✅ | 🔕 | ✅ | 🔕 | 🔕 | 🔕 | 🚧 | +| Quote Service | PHP | ✅ | ✅ | ✅ | 🔕 | 🔕 | 🔕 | 🚧 | +| Recommendation | Python | ✅ | ✅ | ✅ | 🔕 | 🔕 | 🔕 | 🚧 | +| Shipping | Rust | 🔕 | ✅ | ✅ | ✅ | 🔕 | 🔕 | 🚧 | Emoji Legend: diff --git a/content/en/docs/languages/erlang/getting-started.md b/content/en/docs/languages/erlang/getting-started.md index a74a0e355b41..85b40f720b6a 100644 --- a/content/en/docs/languages/erlang/getting-started.md +++ b/content/en/docs/languages/erlang/getting-started.md @@ -574,7 +574,3 @@ Enrich your instrumentation with more You'll also want to configure an appropriate exporter to [export your telemetry data](/docs/languages/erlang/exporters) to one or more telemetry backends. - -If you'd like to explore a more complex example, take a look at the -[OpenTelemetry Demo](/docs/demo/), which includes the Erlang/Elixir based -[Feature Flag Service](/docs/demo/services/feature-flag/). diff --git a/content/en/docs/languages/go/getting-started.md b/content/en/docs/languages/go/getting-started.md index 592fc0cb0893..768eb94403ad 100644 --- a/content/en/docs/languages/go/getting-started.md +++ b/content/en/docs/languages/go/getting-started.md @@ -1035,7 +1035,7 @@ telemetry backends. If you'd like to explore a more complex example, take a look at the [OpenTelemetry Demo](/docs/demo/), which includes the Go based -[Checkout Service](/docs/demo/services/feature-flag/), +[Checkout Service](/docs/demo/services/checkout/), [Product Catalog Service](/docs/demo/services/product-catalog/), and [Accounting Service](/docs/demo/services/accounting/) diff --git a/data/registry/instrumentation-elixir-ecto.yml b/data/registry/instrumentation-elixir-ecto.yml index caa059f576bc..05fcf7d8bcbb 100644 --- a/data/registry/instrumentation-elixir-ecto.yml +++ b/data/registry/instrumentation-elixir-ecto.yml @@ -13,7 +13,6 @@ authors: - name: OpenTelemetry Authors urls: repo: https://github.com/open-telemetry/opentelemetry-erlang-contrib/tree/main/instrumentation/opentelemetry_ecto - demo: /docs/demo/services/feature-flag/ createdAt: 2022-03-23 package: registry: hex diff --git a/static/refcache.json b/static/refcache.json index 28ee56952be7..c6643b36e81e 100644 --- a/static/refcache.json +++ b/static/refcache.json @@ -1915,6 +1915,10 @@ "StatusCode": 200, "LastSeen": "2024-01-30T05:18:24.637098-05:00" }, + "https://flagd.dev": { + "StatusCode": 206, + "LastSeen": "2024-03-07T10:30:35.468496-05:00" + }, "https://flagd.dev/reference/monitoring/#opentelemetry": { "StatusCode": 206, "LastSeen": "2024-01-30T16:06:38.046811-05:00" @@ -2727,6 +2731,10 @@ "StatusCode": 200, "LastSeen": "2024-01-18T20:06:18.89171-05:00" }, + "https://github.com/open-feature/flagd": { + "StatusCode": 200, + "LastSeen": "2024-02-27T10:05:21.050757-05:00" + }, "https://github.com/open-telemetry": { "StatusCode": 200, "LastSeen": "2024-01-18T19:10:19.568632-05:00" @@ -5351,6 +5359,10 @@ "StatusCode": 206, "LastSeen": "2024-01-30T16:03:38.301664-05:00" }, + "https://openfeature.dev": { + "StatusCode": 206, + "LastSeen": "2024-02-27T10:05:20.149319-05:00" + }, "https://openfeature.dev/": { "StatusCode": 206, "LastSeen": "2024-01-30T16:06:32.46557-05:00"