-
Notifications
You must be signed in to change notification settings - Fork 241
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Proposal: New Getting Started Documentation And Reference Application #2427
Proposal: New Getting Started Documentation And Reference Application #2427
Conversation
Signed-off-by: svrnm <neumanns@cisco.com>
Signed-off-by: svrnm <neumanns@cisco.com>
Thanks for putting this together, @svrnm! I think that this captures things really well and will address a lot of the feedback that we've been getting from the community. 😁 |
@svrnm we were chatting at the End User SIG meeting today, and were wondering if it also makes sense to have a focus on infrastructure examples, and also mobile app examples? |
Eventually, yes, but at the beginning I think we need to focus to get the core right (how to add otel to an application and then get traces, metrics, logs, etc out of it). Setting up a collector should be part of that, so having a part on how infra (resources, entities, etc.) plays a roll in that, is definitely something that would come naturally. For the mobile app I see the issue that this is still very experimental, so yes we should have that (adding a "frontend" to the sample app?), but also later. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's promote this in the next maintainer's SIG
Hello all 👋🏽 Wouldn't make more sense to use the OTel Demo for that? We have almost all OTel supported programming languages covered, missing Erlang/Elixir that will be added back (hopefully soon). The Demo can be run with Docker and would make life easier. I also know that @avillela has some work on Having the SIG members to update the demo would be ideal, as of today we are mostly the Demo maintainers taking care of it. (except @pellared that keeps .NET always up-to-date 🌟 ). |
Adding another "reference application" would just be a re-work, no? |
It maybe too complex for a helloworld/getting started doc. The main goal (I think) here is - to have the exact same app for all languages. OTel Demo app has all languages, but they all do diff. component... |
Got it, so that would replace the |
Yes, that was my underlying assumption. I tried to express this in the proposal as well, but I am happy to discuss this, since we should either turn the "maybe too complex" into a "too complex" or an alternative option that can reduce the potential work. If we go down the road to use the Demo application for the getting started guide we indeed de-duplicate some work, that's a win, but here are some of my concerns, that maybe can be removed:
|
yes, exactly. |
The demo would be an overkill for this. From the Demo, the Either way, if we want to explain more than the basic concepts, we need at least a 2 services app, ideally 3. And if we add the Collector, that would be 4. Sorry for not bringing a solution, but I wanted to shed some light into the challenges. |
At Honeycomb, we deliver OpenTelemetry instrumentation workshops in several languages. These workshops use a relatively simple app but cover all (nearly all?) aspects of OpenTelemetry tracing. Everything runs in a dev container, and so far, we have covered the following languages: Go, Java, JS, and Python. The workshop also has a set of public Google slides describing tracing concepts as we go through each workshop module. The slides are linked in the workshop's readme, with workshop content starting at slide 19. Could this be used as a starting point? |
Agreed, they want to start in the language that is close to them and explore concepts from there.
I think that 2 services are just fine for the basic concepts, and depending on the application that we choose, we can have 1 service that can either call itself or a copied instance, think about a fibonacci service, that either does the compute itself or distributes it to peer nodes. We need a collector for sure, but jaeger,prometheus,etc are optional/something that we will only provide via "here is how you run them in docker" in the prose, the will not be part of the reference application.
No worries, challenges is what we need to discuss!
I am more than happy to build open things that we have already, that's why I'd like to have the discussion first which reference application we choose, one point is that we should see what exists already and can be used to start from. We have the existing getting started, the new relic examples and now one more. I'll update the proposal accordingly. |
Co-authored-by: jack-berg <34418638+jack-berg@users.noreply.github.com>
Signed-off-by: svrnm <severin.neumann@altmuehlnet.de>
should these 2 services also be the foundation to demonstrate later maybe more advanced concepts such as custom context propagation or baggage? This might add complexity to the service (and maybe even confuse people just starting). However might help people on the journey to continue their learning and exposure with OTel |
If possible yes, but not necessarily. We should start with the basic concepts and then evolve towards more advanced topics and see how the reference application fits into that. An option I see is that there are alternate versions of the (uninstrumented) base service, e.g. if you'd like to show the concept of custom context propagation there is a variant where the 2 services communicate using a different protocol that is not easy to instrument with what is available. Same can be done for the async/message passing case. |
I did some prototyping on a few ideas that I had with building that out, PTAL: https://github.com/svrnm/otel-getting-started-prototype
|
Co-authored-by: Kayla Reopelle <87386821+kaylareopelle@users.noreply.github.com>
Comment from today's GC triage session: the reference application will likely include features that are not supported by all languages. In which case, it should be clear to the user what's going on: instead of omitting the steps, it should clearly state that the language doesn't support that use-case. |
The demo app is great but I agree it is an overkill for that. In fact, I think trying to have a multi-language app may also frighten people. People who are starting to learn OTel concepts just want a small boilerplate app that they can play with and learn. Why don't we try something like having a path for each language. I can help with the java app part. |
Just throwing this here, since I didn't see it mentioned. I tried to get something similar to a very minimal, to the point but still "real world ish" with OTel recipes. For example a API with an endpoint that returns hello world. The API is auto-instrumented and records a custom span. The same is done for multiple languages, using their most common web frameworks:
Wouldn't something like this be enough? I like the fact that it is small, easy to clone and run. The spans are exported to a collector which can then be configured to be sent anywhere or just to a local "backend" like Aspire for example. The only thing is I split by signal, to keep it really small. But in OTel we could have an app that have all signals together. Not to oversell (:D) but I put a lot of effort and making sure the apps are fully end-to-end tested. The test starts the app, execute a request to it, then assert if the spans are there. The same can be done for metrics and logs. Also renovate keeps the dependencies updated and the tests make sure no breaking change is left behind = frustration free for users. |
There will be one path for each language, but it will be the same sample app and the same flow (add the SDK, add OTLP exporter, etc.)
That would be great, let me add you to the document. |
Depends on what you mean with "enough", I think a "hello world" is for the getting started guide not enough, since we want to explain a lot of concepts throughout it as well, so we need something which we can use for all signals, but also for showing propagation, exemplars, using the collector and some other things people might be interested to learn about. If you mean an "as simple as possible app", then this is what this proposal is about: a simple app at the level of a fibonacci application, or a "roll the dice application" with a most basic business logic you can come up with to guide folks through the journey of instrumenting an application
You are not overselling, otel recipes is great, not only the simplicity of it, but also the "end-to-end tested" part. This is what we should be aiming for as well. That's also why I think we need a reference application specification, it makes testing much easier ("make sure a webserver is running at port 8080", "make sure there is an /whatever endpoint that returns X", ...) See my prototype above (https://github.com/svrnm/otel-getting-started-prototype/), I played around with some "end to end testing" as well, and also tried to keep the example as simple as possible, but it is driven by a specification, as suggested by @jack-berg Revisiting it and thinking about it, I think what otel recipes does is much closer to what I would like to see for the registry eventually, because it does not only look at the language, but also to a specific framework, so instead of having what we have today I would love to see it being presented in the way otel recipes is doing it. So, in my head it goes like that:
|
I say, let's not make it more complicated, merge it here and then have a blog post (maybe early next year): open-telemetry/opentelemetry.io#5783 |
merging, there are enough GC approvals (5 including the PR author) for a new project proposal |
@svrnm can you fix the cspell failure? thanks |
Signed-off-by: svrnm <neumanns@cisco.com>
🎉 -- we will get started after the break :-) |
This project aims to deliver a new learning experience on opentelemetry.io for OpenTelemetry end users, combined with
a "reference application" that serves as both the foundation of this experience and a demonstration tool for SIGs to showcase feature implementations.
While members of SIG Comms can create the guide, the reference application will require collaboration across SIGs. This need for cross-SIG collaboration is a key reason behind this project proposal.
This proposal is a continuation of the following existing discussions and documents:
this issue.