Hi All,
I agree that we should move towards the needs of the SRE world... This comment is also valid for open-telemetry instead of open-tracing.
If we decide to move on, we need a deprecation plan:
If we do this I don't see it as a failure of MP, on the contrary.
I learned a lot with MP Metrics.
Also, we can use this case to settle the policy on how to
deprecate APIs. What users should expect of a deprecation plan.
Cheers.
--
You received this message because you are subscribed to the Google Groups "MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CAKeeVe704JVjY4rWArS7CJ9%2BDwypSiMro34ibCC6jkHmquKvSw%40mail.gmail.com.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile+unsubscribe@googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile...@googlegroups.com.
--
You received this message because you are subscribed to the Google Groups "MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/314740ec-c5d2-4c41-8a6d-f792ebb7fd72n%40googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to microp...@googlegroups.com.
I'll respond to various comments and then provide some additional thoughts.Bruno, thanks for chiming in with your thoughts, appreciate external contributors providing their views. With respect to your preferred option of supporting both annotations from MP Metrics and Micrometer at the same time, I don't know if that fits as Micrometer has a few annotations, but I don't think it has them for everything as it takes a more Java API approach instead of annotations.I also agree with your statements around this not being seen as a failure. We can't learn what is right or wrong if we do nothing, and at the time MP Metrics was created there really wasn't anything akin to Micrometer for us to see as an alternative.Kevin, I'm not sure I understand your comments around not having a defined roadmap?The roadmap is to remove MP Metrics and say "use Micrometer". There would be no MP Micrometer, it would just be Micrometer. MicroProfile needs to move away from the thinking that for us to include or use something it needs to have wrappers or an abstraction that MP provides.Erin, I agree that your suggestion is the clearest and straight forward approach to moving MP forward in relation to Metrics. I would prefer MP Metrics to be completely removed for MP 4.0 but appreciate the APIs are still used in other MP platform specs.Don, is your "deprecation statement" actually deprecating MP Metrics, or only stating there's an intention to in the future?I'm also not sure how users can begin using Micrometer APIs in their new apps without it being part of MP 4.0? If they can, would they? If MP only says "we're investigating", I don't think many people would jump to start using it.I don't agree there isn't a clear alternative. Why can't "use Micrometer" be a clear alternative? Do we need to define everything in detail? If all runtimes use Micrometer, isn't the output identical? I would also caution against defining specific Micrometer versions that are "compatible" with MP platforms, as it ties MP into specific versions.From my perspective, all your comments on what we might want to do are accurate but don't stop us from deprecating MP Metrics and switching to Micrometer today. Adding some or all of those other pieces can happen over time.Jan, we're not really preparing something new. I'm saying "use Micrometer", which is not new. With regards to your "bake time" comment, Micrometer has been around for 3 years or so now, so I'm not sure what kind of bake time you're referring to.
You received this message because you are subscribed to a topic in the Google Groups "MicroProfile" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/microprofile/mMvGzLq0Zkc/unsubscribe.
To unsubscribe from this group and all its topics, send an email to microprofile...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/79437ae5-626f-46a5-a655-f88c7608b352o%40googlegroups.com.
On Tuesday, August 4, 2020 at 12:51:31 PM UTC+2 Ken Finnigan wrote:I'll respond to various comments and then provide some additional thoughts.Bruno, thanks for chiming in with your thoughts, appreciate external contributors providing their views. With respect to your preferred option of supporting both annotations from MP Metrics and Micrometer at the same time, I don't know if that fits as Micrometer has a few annotations, but I don't think it has them for everything as it takes a more Java API approach instead of annotations.I also agree with your statements around this not being seen as a failure. We can't learn what is right or wrong if we do nothing, and at the time MP Metrics was created there really wasn't anything akin to Micrometer for us to see as an alternative.Kevin, I'm not sure I understand your comments around not having a defined roadmap?The roadmap is to remove MP Metrics and say "use Micrometer". There would be no MP Micrometer, it would just be Micrometer. MicroProfile needs to move away from the thinking that for us to include or use something it needs to have wrappers or an abstraction that MP provides.Erin, I agree that your suggestion is the clearest and straight forward approach to moving MP forward in relation to Metrics. I would prefer MP Metrics to be completely removed for MP 4.0 but appreciate the APIs are still used in other MP platform specs.Don, is your "deprecation statement" actually deprecating MP Metrics, or only stating there's an intention to in the future?I'm also not sure how users can begin using Micrometer APIs in their new apps without it being part of MP 4.0? If they can, would they? If MP only says "we're investigating", I don't think many people would jump to start using it.I don't agree there isn't a clear alternative. Why can't "use Micrometer" be a clear alternative? Do we need to define everything in detail? If all runtimes use Micrometer, isn't the output identical? I would also caution against defining specific Micrometer versions that are "compatible" with MP platforms, as it ties MP into specific versions.From my perspective, all your comments on what we might want to do are accurate but don't stop us from deprecating MP Metrics and switching to Micrometer today. Adding some or all of those other pieces can happen over time.Jan, we're not really preparing something new. I'm saying "use Micrometer", which is not new. With regards to your "bake time" comment, Micrometer has been around for 3 years or so now, so I'm not sure what kind of bake time you're referring to.In the past weeks you have been mentioning working on a "stripped-down MP Metrics spec and API" that would focus on the nomenclature of metrics exposed from various frameworks - that's basically what I was referring to by the "something new". Is that effort still ongoing?
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/4645316e-8d84-44b8-a518-9807d8679e2an%40googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CADJ_gaTqjG2CX_dkUQVJb92if_6QFY5ROn1J%2BWZ11VDyn5zTHw%40mail.gmail.com.
Many in the MP community say it needs to innovate, move fast, fail-fast, and break things when needed. Most of the comments so far are leaning in the other direction of, take it slow, let's wait, we need everything lined up before taking a step.
We can't have it both ways. Either we need to innovate fast and accept that there are times where we need to adjust course quickly, or we may as well fold into Jakarta.
--
You received this message because you are subscribed to the Google Groups "MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CALbocOkbRzih4VD3vH9xLzrAZoQPEvMx2HVA0fXbG_TO1kriNQ%40mail.gmail.com.
You mention not wanting to be too radical, but isn't that the point with MP? Be radical, try something out, and if it doesn't work change direction.In my view, MP Metrics has "lost" the metrics battle, we're on our own in continuing to use it. If we continue to push it as "the way" for another year, it further harms MP and makes it even harder to change direction in the future.As I said before, if we accept MP is about innovation, we need to equally accept that doing so means breaking things when we've innovated in a direction that needs to change.
+1 LT!
You mention not wanting to be too radical, but isn't that the point with MP? Be radical, try something out, and if it doesn't work change direction.In my view, MP Metrics has "lost" the metrics battle, we're on our own in continuing to use it. If we continue to push it as "the way" for another year, it further harms MP and makes it even harder to change direction in the future.As I said before, if we accept MP is about innovation, we need to equally accept that doing so means breaking things when we've innovated in a direction that needs to change.Ken, I am not objecting trying something out and change direction. However, we need time to figure out how to join the dots and tell a straight story to our end users. At the moment, I don't think we have worked out what MP can offer about Metrics if we get rid of MP Metrics. As LT pointed out, what do we do for the specs that integrates with MP Metrics. We need to work this things out for our end users. Once we worked out the path, we then do it. I don't think we should destroy the current house without a shelter is provided.As for OpenTelemetry, even though it has some way to go, we should not ignore it because it defines a consistent view across programming languages. It is also strange we take Tracing part not Metrics part. I think we should not limit ourselves but keep open minded so that we could potentially work with either OpenTelemetry and Micrometer.
ThanksEmilyOn Tuesday, August 4, 2020 at 2:22:01 PM UTC+1, Ladislav Thon wrote:út 4. 8. 2020 v 12:51 odesílatel Ken Finnigan <k...@kenfinnigan.me> napsal:Many in the MP community say it needs to innovate, move fast, fail-fast, and break things when needed. Most of the comments so far are leaning in the other direction of, take it slow, let's wait, we need everything lined up before taking a step.That's probably because there are two vocal minorities, and the usual silent majority.We can't have it both ways. Either we need to innovate fast and accept that there are times where we need to adjust course quickly, or we may as well fold into Jakarta.And this is just a false dilemma. Let's not do this. Let's figure our own way, but let's not throw the baby out with the bathwater.My perspective, as someone who is merely a user of MP Metrics:Saying "MP Metrics are gone, use Micrometer" is simply not how API evolution should work. Deprecation periods are a standard thing and we should use them. No, the period doesn't have to be multiple years. It doesn't have to be even one year. 4 to 6 months sounds perfectly reasonable to me. If I remember correctly, the possibility of multiple major MP releases per year has not been strictly ruled out, and if the whole community agrees that removing a spec needs to happen, then that's a good reason to do potentially more than one major release in a given year, in my book.Also, the proposal doesn't address the situation of other MP specifications that integrate with MP Metrics. What are they supposed to do in MP 4.0? Keep MP Metrics integration, probably as an optional part of the spec, even though MP Metrics are no longer in the platform? (Would MP Metrics even release their 3.0?) Remove MP Metrics integration as well, leaving metrics implementation-defined? Replace the MP Metrics integration with Micrometer integration in a few weeks? (I don't think so.)The deprecation period I suggested above would give the necessary time not to just users, but also other MP specifications.LTP.S.: could someone expand on "SRE requirements"? I've heard this argument mentioned several times in this discussion, but it's very opaque to me. What is it that Micrometer does and MP Metrics doesn't? The only real difference I've been able to figure out is collecting metrics. MP Metrics specify a pull model biased towards Prometheus, while other metric aggregation platforms may want a push model and/or different data granularity. But surely there's more?
BTW as much as I don't like the MP Metrics annotations (why is there so much attributes I need to fill?), I'd certainly prefer them over the Micrometer plain Java API.
--
You received this message because you are subscribed to a topic in the Google Groups "MicroProfile" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/microprofile/mMvGzLq0Zkc/unsubscribe.
To unsubscribe from this group and all its topics, send an email to microprofile...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/5a76bceb-5c8f-4fff-8931-a99fe96b5ce5o%40googlegroups.com.
As mentioned in one of my follow up responses, I'm good with marking MP Metrics 3.0 deprecated in MP 4.0, if we also say "use Micrometer" for metrics with MP 4.0 platform.
As such, for MP 4.0 any specification that uses MP Metrics would continue to do so, but future versions would change to use Micrometer instead.With respect to "SRE Requirements", there are several aspects to it:
- Metric names containing package and class name, in addition to the metric scope prefix, cause metrics to be brittle to name changes, in terms of what's in a dashboard, but more critically they prevent an SRE from aggregating metrics across many metrics of the same type. For example, instead of each JAX-RS endpoint having a custom metric name prefix for each one, there would be a metric prefix of "http_server_requests" with tags to identify the URL, etc. This offers the ability to drill down to a specific endpoint or provide an aggregated view across all JAX-RS endpoints in an application, or even across applications.
- Not all environments use Prometheus. Only offering Prometheus as an output format means MP Metrics is only useful when Prometheus is also present. While it is certainly popular, it's not the only monitoring solution available.
These are just some of the SRE needs that MP Metrics doesn't meet, but Micrometer does. I'm sure there are others as well.
--KenOn Tue, Aug 4, 2020 at 9:22 AM Ladislav Thon <lad...@gmail.com> wrote:--út 4. 8. 2020 v 12:51 odesílatel Ken Finnigan <k...@kenfinnigan.me> napsal:Many in the MP community say it needs to innovate, move fast, fail-fast, and break things when needed. Most of the comments so far are leaning in the other direction of, take it slow, let's wait, we need everything lined up before taking a step.That's probably because there are two vocal minorities, and the usual silent majority.We can't have it both ways. Either we need to innovate fast and accept that there are times where we need to adjust course quickly, or we may as well fold into Jakarta.And this is just a false dilemma. Let's not do this. Let's figure our own way, but let's not throw the baby out with the bathwater.My perspective, as someone who is merely a user of MP Metrics:Saying "MP Metrics are gone, use Micrometer" is simply not how API evolution should work. Deprecation periods are a standard thing and we should use them. No, the period doesn't have to be multiple years. It doesn't have to be even one year. 4 to 6 months sounds perfectly reasonable to me. If I remember correctly, the possibility of multiple major MP releases per year has not been strictly ruled out, and if the whole community agrees that removing a spec needs to happen, then that's a good reason to do potentially more than one major release in a given year, in my book.Also, the proposal doesn't address the situation of other MP specifications that integrate with MP Metrics. What are they supposed to do in MP 4.0? Keep MP Metrics integration, probably as an optional part of the spec, even though MP Metrics are no longer in the platform? (Would MP Metrics even release their 3.0?) Remove MP Metrics integration as well, leaving metrics implementation-defined? Replace the MP Metrics integration with Micrometer integration in a few weeks? (I don't think so.)The deprecation period I suggested above would give the necessary time not to just users, but also other MP specifications.LTP.S.: could someone expand on "SRE requirements"? I've heard this argument mentioned several times in this discussion, but it's very opaque to me. What is it that Micrometer does and MP Metrics doesn't? The only real difference I've been able to figure out is collecting metrics. MP Metrics specify a pull model biased towards Prometheus, while other metric aggregation platforms may want a push model and/or different data granularity. But surely there's more?BTW as much as I don't like the MP Metrics annotations (why is there so much attributes I need to fill?), I'd certainly prefer them over the Micrometer plain Java API.
You received this message because you are subscribed to the Google Groups "MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CALbocOkbRzih4VD3vH9xLzrAZoQPEvMx2HVA0fXbG_TO1kriNQ%40mail.gmail.com.
You received this message because you are subscribed to the Google Groups "MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CAKeeVe6K57xyxjOquZ_wKS9js6xA%2Bm7QkxNJbx2qw9MTuWS0_A%40mail.gmail.com.
You received this message because you are subscribed to a topic in the Google Groups "MicroProfile" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/microprofile/mMvGzLq0Zkc/unsubscribe.
To unsubscribe from this group and all its topics, send an email to microprofile...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CALbocOnNEZ2dwiBMTbKR0BOge%2BbrQMNz%2BymdENQZwSGDiTpM0w%40mail.gmail.com.
On Aug 5, 2020, at 5:28 AM, Erin Schnabel <erin.s...@gmail.com> wrote:Committers for Micrometer are already beyond Pivotal, and yes, I am in talks with them to take it to a foundation (eclipse and apache both mandate package renames, so CNCF is most likely)
Against my best judgment, I will chime into this seemingly somewhat overheated thread.
To me this entire subject matter basically proves the point of why you will need certain things in MicroProfile and not in Jakarta EE. In order to meet the needs of a domain that is inherently faster moving and more volatile than enterprise Java in the past decades, you need something that blurs the lines between what the broader set of people would consider an open standard vs. something that provides some level of vendor-neutrality through a set of collaborative lightweight specification artifacts.
More to the core point of what to do with MicroProfile Metrics, continuing status quo is clearly not a good idea. While it is clear to me the Kubernetes ecosystem is betting on Open Telemetry at the moment, that effort still has quite a ways to go before it is anything near a sure thing. I think adopting Micrometer for now is OK provided there is sufficient resourcing and the technology is sufficiently vendor neutral and has enough of a shelf life (rather big questions that probably no one can in good faith provide definitive answers to). The nice thing to do is to be able to reuse as much as of the API design work as possible already done in MicroProfile Metrics to easily evolve to Micrometer, Open Telemetry or whatever else is next. Some reasonable measure of being a "future proof abstraction" could possibly be a core value proposition for MicroProfile - although I think trying to maintain 100% backwards compatibility probably isn't too pragmatic for the domain.
Hope this helps. I will admit I am very far from a subject matter
on this particular topic (indeed I suspect few people probably are
owing to the aforementioned velocity and volatility).
Reza Rahman
Jakarta EE Ambassador, Author, Speaker, Blogger
Please note views expressed here are my own as an individual
community member and do not reflect the views of my employer.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CADJ_gaQ72S192K0O0Q3POP_OCd-m8eSf7kqmw55miC88vSXmhQ%40mail.gmail.com.
On Aug 5, 2020, at 5:28 AM, Erin Schnabel <erin.s...@gmail.com> wrote:Committers for Micrometer are already beyond Pivotal, and yes, I am in talks with them to take it to a foundation (eclipse and apache both mandate package renames, so CNCF is most likely)Apache does require a package rename, yes. On the Eclipse side of things there are projects, such as Vertx, that do not use "org.eclips
We discussed using "io.microprofile" as our package name, but chose to use "org.eclipse.microprofile." On the Jakarta side we went with "jakarta.*"I think there's a preference, but not a hard rule.-David
--
You received this message because you are subscribed to a topic in the Google Groups "MicroProfile" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/microprofile/mMvGzLq0Zkc/unsubscribe.
To unsubscribe from this group and all its topics, send an email to microprofile...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/FAC1817F-EDF1-40A0-9B30-09EC7C5041DF%40tomitribe.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/6c34db1b-ec23-ee39-fd81-3f72d3e8bdc2%40gmail.com.
Thanks for chiming in Reza. You bring up a point I have heard a few times that I have tried to address, but it seems to not be clicking, so I will try again.Micrometer is a metrics library. It is dependency-injection-system neutral, and it is vendor neutral, and it has its own tck. The tck is for the vendors, and the vendors are registry implementations (where a registry in micrometer parlance is an exporter). So vendor neutrality is between stackdriver, datadog , prometheus, etc. DI-independence means it works as well with CDI as it does with Spring DI.Our traditional view of what an API needs to be, and who needs to implement it is not helping us here.Your comment about currency and investment is 💯.. and I will suggest that we’ll get better mileage if we all work together on micrometer (and get that working with OTel metrics) than if we keep trying to carry our own.As a technologist, the abstractions in micrometer make sense. It supports separation of concerns between dev and ops, and allows specialization of aggregation to happen where needed (in the registry).I am happy to sit down with anyone and walk them through how this works. I am confident that if you give it more than a cursory glance, you will come away with the same conclusion Ken and I have. Power outages aside, I am not hard to find. Just ask.
Ken
To unsubscribe from this group and stop receiving emails from it, send an email to microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CALbocOkbRzih4VD3vH9xLzrAZoQPEvMx2HVA0fXbG_TO1kriNQ%40mail.gmail.com.
--
You received this message because you are subscribed to the Google Groups "MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CAKeeVe6K57xyxjOquZ_wKS9js6xA%2Bm7QkxNJbx2qw9MTuWS0_A%40mail.gmail.com.
--
You received this message because you are subscribed to a topic in the Google Groups "MicroProfile" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/microprofile/mMvGzLq0Zkc/unsubscribe.
To unsubscribe from this group and all its topics, send an email to microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CALbocOnNEZ2dwiBMTbKR0BOge%2BbrQMNz%2BymdENQZwSGDiTpM0w%40mail.gmail.com.
--
Sent from Gmail Mobile
--
Sent from Gmail Mobile--
You received this message because you are subscribed to the Google Groups "MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microp...@googlegroups.com.
--To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CADJ_gaQ72S192K0O0Q3POP_OCd-m8eSf7kqmw55miC88vSXmhQ%40mail.gmail.com.
You received this message because you are subscribed to a topic in the Google Groups "MicroProfile" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/microprofile/mMvGzLq0Zkc/unsubscribe.
To unsubscribe from this group and all its topics, send an email to microp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/6c34db1b-ec23-ee39-fd81-3f72d3e8bdc2%40gmail.com.
Hi Erin,We talked a lot on this subject in various calls and 121s :o. To move this conversation forward, I think if you map the MP Metrics directly towards Micrometer APIs, it will help the community and our end users to understand, migration their apps towards Micrometer direction. I think in some situations as you told me, the end users don't need to use Micrometer APIs in their app and they will get the metrics for free.
On Thursday, August 6, 2020 at 1:38:01 PM UTC+2 Emily Jiang wrote:Hi Erin,We talked a lot on this subject in various calls and 121s :o. To move this conversation forward, I think if you map the MP Metrics directly towards Micrometer APIs, it will help the community and our end users to understand, migration their apps towards Micrometer direction. I think in some situations as you told me, the end users don't need to use Micrometer APIs in their app and they will get the metrics for free.I feel I need to comment on this common argument. This "for free" here probably means that Micrometer *itself* (in its codebase) provides metric bindings for several frameworks (Hibernate, Kafka, MongoDB...) whereas with current MP Metrics, metric bindings for these frameworks are generally provided by the MP Metrics implementation, or the runtime that wraps it (Quarkus provides metrics for quite a few frameworks).
So I disagree with the statement that end users get something "for free" compared to MP Metrics. The only difference here is purely technical - in one case, the metrics are provided by Micrometer itself, in the other case, by the MP Metrics implementation or runtime. In neither case does the user have to do anything other than provide the relevant configuration values. There is no need to use any program APIs to get any of these metrics.
And I personally believe that our approach in this case is better, because the code providing metrics for a framework is closer to the framework itself and therefore can be much more flexible. Micrometer's approach also means that there is an artifact with a large amount of 3rd party dependencies - see https://github.com/micrometer-metrics/micrometer/blob/v1.5.3/micrometer-core/build.gradle#L13 - I believe this should be split to several modules, one for each framework, to be manageable, especially if this is to be imported to projects that require full dependency convergence.
Only under some scenarios you will need to call the Micrometer APIs directly in your app, which might be your argument on not creating an abstract layer over and above Micrometer. I am interested in seeing this kind of mapping and when you need to use Micrometer APIs directly.
To unsubscribe from this group and all its topics, send an email to microprofile...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/cb5848b0-37be-497f-af31-8bc675e9c062n%40googlegroups.com.
CNCF for what, Micrometer?
I guess it might give it a more vendor-neutral foundation than right now where VMWare is the only sponsor and it could meet the fate of several Netflix cloud libraries that are now more or less abandoned and inactive.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/f6d1371f-81ef-4052-b241-1bde0eefb2aan%40googlegroups.com.
You received this message because you are subscribed to the Google Groups "MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/6109cde0-c172-469e-b5c7-9955516af08cn%40googlegroups.com.
You received this message because you are subscribed to the Google Groups "MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/604674a5-380e-4a41-8b9d-b26342db6e67n%40googlegroups.com.
I agree. I don't particularly have any objections to looking at Micrometer, and understand that MicroProfile wants to evolve rapidly. However, consumers who have adopted MP metrics who now find it dropped from the platform in favor of something else could well be frustrated. Perhaps there's some way the platform can ease the transition (maybe include both, or allow Metrics to optionally continue to be included. I haven't dug in to the specifics, so this may be a daft suggestion, but maybe some sort of compatibility layer is an option?).
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CAJaBFGYiAAzowY125-k1nqFUN%3DPDnBayAVOa7KoWqY5Y0tpwSQ%40mail.gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CAJaBFGYiAAzowY125-k1nqFUN%3DPDnBayAVOa7KoWqY5Y0tpwSQ%40mail.gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CAG1ZpUb_CCpqa%3DLdiV-BJ4izKJ6gXuOdpBJ5EvQ5zyaxiCX00w%40mail.gmail.com.
Jonathan Gallimore
I think the real issue here is that MP metrics basically adopted an API (from DropWizard) that is no longer favored by a large part of the community. I agree that we need to be careful about compatibility for existing usage of MP, but the larger issue is the fact that many new users aren’t best served by MP metrics as it stands.
As a developer, the big issue I see with MP overall is that the API doesn't cover all the parts of a platform that I might use. MP compatible platforms inevitably have to include non-standard features to remain competitive in the marketplace, and this dilutes the value of MP as a portability guarantee. Indeed, I’ve been watching the MP community struggle with this issue since its inception and I think it’s done a great job overall, but I also think we’re reaching an inflection point as Jakarta EE gets back on track.I think we need to focus more on how MP can normalize the API landscape between competing implementations and less on trying to develop novel APIs that provide abstractions for common functionality. As technologies mature, de facto standards tend to emerge and can eventually be made into formal Jakarta EE pieces. In the meantime, MP should focus on how existing Jakarta EE standards (e.g. CDI, JAX-RS) can coexist with emerging trends (e.g - GraphQL, Micrometer).The biggest benefit of the MP community that I see right now is not a set of APIs that provide perfect portability, it’s a community of implementors that are collaborating on common problems. Industry trends are leading us as application developers to build lighter solutions on shorter, more iterative timelines. I am no longer worried about being able to drop my existing catalog of WAR files (that took years to develop) into a compliant runtime (that the company just licensed). I’m much more interested in being able to easily fork my codebase and target a new runtime or multiple runtimes with a common build system. Having some assurance that current popular libraries and frameworks are well supported by more than one implementation is more important to me than breaking compatibility with last year’s favorites.
--
You received this message because you are subscribed to the Google Groups "MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/42CADB0C-C22B-4B59-B41A-B42673208093%40gmail.com.
El vie., 14 ago. 2020 18:01, Erik Mattheis <erikma...@gmail.com> escribió:I think the real issue here is that MP metrics basically adopted an API (from DropWizard) that is no longer favored by a large part of the community. I agree that we need to be careful about compatibility for existing usage of MP, but the larger issue is the fact that many new users aren’t best served by MP metrics as it stands.The problem lies in the fact that Metrics was based on a de facto standard that has now faded away, OpenTracing is also out of scene... There even was a time when Istio was about to supersede MP FT.
MP Metrics was a good idea at the moment and has served us well to date. If it needs to be completely redone, I just hope we don't end with a MP MicroMeter specific spec that's thrown away again in a few years.
And I hope the same for the OpenTracing replacement, that we can get something that works OOTB with wathever is fancy at the moment, without caring much about upgrades.As a developer, the big issue I see with MP overall is that the API doesn't cover all the parts of a platform that I might use. MP compatible platforms inevitably have to include non-standard features to remain competitive in the marketplace, and this dilutes the value of MP as a portability guarantee. Indeed, I’ve been watching the MP community struggle with this issue since its inception and I think it’s done a great job overall, but I also think we’re reaching an inflection point as Jakarta EE gets back on track.I think we need to focus more on how MP can normalize the API landscape between competing implementations and less on trying to develop novel APIs that provide abstractions for common functionality. As technologies mature, de facto standards tend to emerge and can eventually be made into formal Jakarta EE pieces. In the meantime, MP should focus on how existing Jakarta EE standards (e.g. CDI, JAX-RS) can coexist with emerging trends (e.g - GraphQL, Micrometer).The biggest benefit of the MP community that I see right now is not a set of APIs that provide perfect portability, it’s a community of implementors that are collaborating on common problems. Industry trends are leading us as application developers to build lighter solutions on shorter, more iterative timelines. I am no longer worried about being able to drop my existing catalog of WAR files (that took years to develop) into a compliant runtime (that the company just licensed). I’m much more interested in being able to easily fork my codebase and target a new runtime or multiple runtimes with a common build system. Having some assurance that current popular libraries and frameworks are well supported by more than one implementation is more important to me than breaking compatibility with last year’s favorites.I'm also not concerned about changing runtimes. I'm worried that I can't upgrade to a new version of the runtime because some API is now out of fashion.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CAG1ZpUara5g6_bOvG%2BT4spPoMs8nP693Zh4QHDNpuVQ-M%2B97Jw%40mail.gmail.com.
You received this message because you are subscribed to a topic in the Google Groups "MicroProfile" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/microprofile/mMvGzLq0Zkc/unsubscribe.
To unsubscribe from this group and all its topics, send an email to microprofile...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/2a286151-09b8-440a-b5fe-5042dcb7b295n%40googlegroups.com.
You received this message because you are subscribed to a topic in the Google Groups "MicroProfile" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/microprofile/mMvGzLq0Zkc/unsubscribe.
To unsubscribe from this group and all its topics, send an email to microprofile...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/6ef07a49-936a-483a-8e24-a508063febcbn%40googlegroups.com.
I agree with Emily here the whole purpose of MicroProfile is to define apis, specifications and TCKs. Personally I don't see any point in adopting a 3rd party api as is as part of the platform. If people feel that the concepts of Micrometer are more robust shouldn't we be evolving MP metrics towards those concepts while enabling some vendors to ease that migration for their users.
--
You received this message because you are subscribed to a topic in the Google Groups "MicroProfile" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/microprofile/mMvGzLq0Zkc/unsubscribe.
To unsubscribe from this group and all its topics, send an email to microprofile...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/c72c4075-1bc2-470d-85d8-17ecd84013a2o%40googlegroups.com.
Ken
--
You received this message because you are subscribed to the Google Groups "MicroProfile" group.
--To unsubscribe from this group and stop receiving emails from it, send an email to microprofile...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CALbocOkbRzih4VD3vH9xLzrAZoQPEvMx2HVA0fXbG_TO1kriNQ%40mail.gmail.com.
You received this message because you are subscribed to the Google Groups "MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CAKeeVe6K57xyxjOquZ_wKS9js6xA%2Bm7QkxNJbx2qw9MTuWS0_A%40mail.gmail.com.
--
You received this message because you are subscribed to a topic in the Google Groups "MicroProfile" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/microprofile/mMvGzLq0Zkc/unsubscribe.
To unsubscribe from this group and all its topics, send an email to microprofile...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CALbocOnNEZ2dwiBMTbKR0BOge%2BbrQMNz%2BymdENQZwSGDiTpM0w%40mail.gmail.com.
--Sent from Gmail Mobile
--
You received this message because you are subscribed to the Google Groups "MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CADJ_gaR%3D7otYhV_DEnCS-xU0TGO4q%2B0d8gW0a7Sp74PXWMozmw%40mail.gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/598e23dd-bd21-43c3-b5a8-408197ad1849n%40googlegroups.com.
--
You received this message because you are subscribed to the Google Groups "MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/47349732-9940-4679-A364-E40D0C0F02A7%40gmail.com.
This is where I see observability pieces like metrics and tracing as being different to the APIs for CDI, JAX-RS, Fault Tolerance, etc. Ideally, observability for 80-90% of what is needed for a microservice can, and should, be done without the developer needing to worry about any API or adding any code. It's just a dependency and some configuration. In these situations maybe no API is needed from an MP perspective because we feel the 80-90% use case coverage is sufficient initially, and adding an API only causes confusion with developers feeling that they should be using it.
In terms of what I think it means for metrics beyond Metrics 3.0, there are several things:
- Utilize Micrometer for metrics
- Define a specification that focuses on the metrics expected to be output without developer intervention, such as JAX-RS endpoint metrics. In particular how it plays into expected metrics from other MP specifications
- For Metrics 4.0 we can retain the annotations but mark them as deprecated to indicate that their use will not be promoted anymore and will be removed at some point. Vendors can provide the necessary shim to convert these annotations into metrics in Micrometer
Investigating possible API/spec pieces related to CDI could be started during this phase, but I would prefer any CDI specific pieces being added to not block the release of the spec with Micrometer.Given the above, while we certainly have some time before a breaking change release in June 2021 that time will pass very quickly so I would like to progress these discussions within the Metrics group over the coming months to reach a proposal of what it could look like.And again, I appreciate the tremendous amount of feedback that was provided by the community, it's been invaluable in shaping the discussion.ThanksKen--On Wed, Aug 19, 2020 at 6:03 PM Erik Mattheis <erikma...@gmail.com> wrote:
> On Aug 18, 2020, at 2:20 PM, Steve Millidge <l33t...@gmail.com> wrote:
>
> I agree with Emily here the whole purpose of MicroProfile is to define apis, specifications and TCKs.
I believe the greater value of MicroProfile is to define a platform comprised of specific APIs and guidance around how they interoperate. Indeed, the backbone of MP for me (and really all MP users) is the suite of Jakarta EE APIs that are not defined by MicroProfile (e.g. CDI, JAX-RS, JSON-P, etc.) and a big challenge of MP right now is how to define and validate the usage of these APIs in compliant platforms. Where there is a void, or lack of consensus, MP can play a useful role by stepping in and defining new APIs, but I would personally like to see those initiatives serve as incubators for Jakarta EE. As such, any API defined solely by MicroProfile should be seen as having a limited lifespan and will eventually be subsumed by Jakarta EE or abandoned.
> Personally I don't see any point in adopting a 3rd party api as is as part of the platform. If people feel that the concepts of Micrometer are more robust shouldn't we be evolving MP metrics towards those concepts while enabling some vendors to ease that migration for their users.
Assuming it finds it’s way to an open consortium and finds broader vendor support, how Is Micrometer any more a 3rd party than CDI or JAX-RS at this point? I certainly support aligning with Jakarta EE, but I see MP as a great way to glue emerging de facto standards in the broader Jakarta EE ecosystem. This was a big missing piece of Java EE in the past because as developers we could not count on non-standard APIs being present across otherwise compatible platforms, so we ended up with “portable” apps that barely used any of the core Java EE and packaged hundreds of libs into each portable artifact.
It was exciting for me to see MicroProfile emerge at a time when Java EE was faltering and it seemed like vendors might all just go their separate ways. To the extent that MP encouraged us to take a look at what parts of Java EE were worth keeping around an not reinventing, while embracing new technologies that Java EE simply couldn’t move fast enough to address, it was great. We’re at a point now where there are several solid offerings around MicroProfile, but it feels like they are innovating around it rather than with it. I know a lot of that has to do with the organizational challenges that are ongoing and I have great respect for those of you who are fighting hard to bring that to fruition, but we need to make sure that we’re not just trying to create Jakarta EE lite. As a developer, I care much more about APIs being consistently available across platforms than whether or not they were specified by a specific standards body.
—
Erik
--
You received this message because you are subscribed to the Google Groups "MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/47349732-9940-4679-A364-E40D0C0F02A7%40gmail.com.
You received this message because you are subscribed to the Google Groups "MicroProfile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to microprofile...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CAKeeVe4T%3DoMWX_%3DhqNu7Gb9VckNwbU_avtc0T9nJB0Wx8HWyjA%40mail.gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CALbocOm8UwU9emkc0Ee2GrN_WbkD71Lu5qYF-gq3gBgE6tAgSQ%40mail.gmail.com.
You received this message because you are subscribed to a topic in the Google Groups "MicroProfile" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/microprofile/mMvGzLq0Zkc/unsubscribe.
To unsubscribe from this group and all its topics, send an email to microprofile...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CAKeeVe4svDiuGE7owqUyNBmj%3DwsSCE%2B534Q3L87ayU%3DL2ysPAQ%40mail.gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/4d668788-02e1-463f-a4a2-48871757628en%40googlegroups.com.
(And further, per Werner’s observations, a vast number of applications and libraries are already using the Micrometer APIs where that is necessary).
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CADJ_gaRqF3pWJgLWrNGx5racVg5EkJgC%3DiCBEdb2RduQ%3DMgE_A%40mail.gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/CALbocOmYMoVMDcXpY6reNs7a6TUcnXjqzG6QVxovScvH1SfBkQ%40mail.gmail.com.
> Those observations were download statistics from one particular Maven repositoryThat's not correct, the 25 M downloads of Spring or Spring Boot per month are clearly not just Bintray or JCenter. It is a mirror of the Sonatype repositories anyway and those numbers are pretty certain to be cummulative across all mirrors. The Sonatype equivalent isn't as good with stats or only offers them to paying customers while JCenter also shares them (for 30 days but for most packages except the most busy ones you also see a lifetime download sum in the package details) with the public community.
As for business metrics I know of a few cases where general purpose metrics or log analytics like Elastic are used for business metrics. E.g. a large pharmacy chain (like what Boots is in the UK) that analyses how many articles or product types are sold in a particular store.However, this doesn't work for all cases and most other clients or use cases I saw either in my own projects or shared at MeetUps do this in separate ways.So I would also focus mainly on the "technical" metrics.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/36a129f3-0740-4707-b694-a4a4c49910fan%40googlegroups.com.
A couple of more comments:> Those observations were download statistics from one particular Maven repository> That's not correct, the 25 M downloads of Spring or Spring Boot per month are clearly not just Bintray or JCenter. It is a mirror of the Sonatype repositories anyway and those numbers are pretty certain to be cummulative across all mirrors. The Sonatype equivalent isn't as good with stats or only offers them to paying customers while JCenter also shares them (for 30 days but for most packages except the most busy ones you also see a lifetime download sum in the package details) with the public community.Since MP APIs are packaged by around dozen runtimes, like Open Liberty, Payara, TomEE, Quarkus etc, there are multiple hosted repo for developers to get. Therefore the download statistics from JCenter might not the true figure for MP API usages.> This is where I see observability pieces like metrics and tracing as being different to the APIs for CDI, JAX-RS, Fault Tolerance, etc. Ideally, observability for 80-90% of what is needed for a microservice can, and should, be done without the developer needing to worry about any API or adding any code. It's just a dependency and some configuration. In these situations maybe no API is needed from an MP perspective because we feel the 80-90% use case coverage is sufficient initially, and adding an API only causes confusion with developers feeling that they should be using it.
It seems the argument for directly using Micrometer api is based on the assumption of 80-90% of what is needed can be done without developers' involvement. How can we be so sure? Are there any proof based on Micrometer usage? What metrics Micrometer can provide out of box already where MP Metrics have to require developers to invoke APIs or use annotations?
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/792005f9-32a3-46a1-927e-21cffddc98acn%40googlegroups.com.
A couple of more comments:> Those observations were download statistics from one particular Maven repository> That's not correct, the 25 M downloads of Spring or Spring Boot per month are clearly not just Bintray or JCenter. It is a mirror of the Sonatype repositories anyway and those numbers are pretty certain to be cummulative across all mirrors. The Sonatype equivalent isn't as good with stats or only offers them to paying customers while JCenter also shares them (for 30 days but for most packages except the most busy ones you also see a lifetime download sum in the package details) with the public community.Since MP APIs are packaged by around dozen runtimes, like Open Liberty, Payara, TomEE, Quarkus etc, there are multiple hosted repo for developers to get. Therefore the download statistics from JCenter might not the true figure for MP API usages.> This is where I see observability pieces like metrics and tracing as being different to the APIs for CDI, JAX-RS, Fault Tolerance, etc. Ideally, observability for 80-90% of what is needed for a microservice can, and should, be done without the developer needing to worry about any API or adding any code. It's just a dependency and some configuration. In these situations maybe no API is needed from an MP perspective because we feel the 80-90% use case coverage is sufficient initially, and adding an API only causes confusion with developers feeling that they should be using it.
It seems the argument for directly using Micrometer api is based on the assumption of 80-90% of what is needed can be done without developers' involvement. How can we be so sure? Are there any proof based on Micrometer usage? What metrics Micrometer can provide out of box already where MP Metrics have to require developers to invoke APIs or use annotations?
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/f2cb322f-1087-4404-a345-12f4c578f2b1n%40googlegroups.com.
I heard LT’s question, and I think we still have too few people who have tried to use micrometer.It *is* an API. It wraps exporter-specific counter/gauge/histogram implementations. It has a TCK for exporters. We are coming at this thing sideways.First, we assume the MP annotations as-is are useful. I am not sure enough people have (again) used Micrometer to understand the metrics being produced without user involvement.
Once you know what you are getting out-of-the-box, your domain-specific metrics can be more focused.
On Wednesday, August 26, 2020 at 1:12:50 AM UTC+2 erinsc...@gmail.com wrote:I heard LT’s question, and I think we still have too few people who have tried to use micrometer.It *is* an API. It wraps exporter-specific counter/gauge/histogram implementations. It has a TCK for exporters. We are coming at this thing sideways.First, we assume the MP annotations as-is are useful. I am not sure enough people have (again) used Micrometer to understand the metrics being produced without user involvement.I get the feeling you're selling this (meter binders in Micrometer) as something that will save the application developer from writing code, but I disagree with that, as I've unsuccessfully tried to explain several times. If a MP Metrics implementation provides auto-generated metrics for a specific framework, the user gets the same thing already (without involvement of the app developer).
With Micrometer, the metrics wiring responsibility would just generally be moved from the MP implementation to Micrometer, so, potentially it may only save some coding on part of the IMPLEMENTATION developer (by implementation here I mean the MP runtime that uses Micrometer under the hood), and it comes at potentially severe costs:
1) The MP implementation (that uses Micrometer under the hood) loses some flexibility because it does not have the fine grained control over what metrics Micrometer will produce and how, as opposed to the case where the implementation provides the wiring code by itself, where the code would be closer to the underlying framework
2) Potential version compatibility problem. The runtime will be forced to use metric binders that are designed for a particular version of a framework. A hypothetical example:
Suppose a MP implementation is using a Micrometer version that provides metric binders compatible with Hibernate 8.0 and Vert.x 6.0. Now the runtime wants to upgrade to Hibernate 9.0, which is incompatible with 8.0 and needs a whole new metric binder. There is no Micrometer version available that supports Vert.x 6.0 and Hibernate 9.0. What will the MP implementation do?
I think this could lead to serious stymies where implementations are unable to upgrade their components to new major versions, because Micrometer hasn't caught up, therefore they will have to either align their component versions to those supported by a particular Micrometer version, or they could provide their own metric binders, which means this whole advantage (of binders being provided by Micrometer) is lost.
So to sum up, it feels like we would potentially save a few lines of code in the MP implementation codebase (and zero lines in the applications' codebases), with serious potential issues arising from it. That doesn't sound like a good deal to me.
Once you know what you are getting out-of-the-box, your domain-specific metrics can be more focused.That's another facet to the problem - I say that with Micrometer, we would actually *lose* some control over what users will be getting out-of-the-box, because (most of) it would be provided by Micrometer itself (a 3rd party library that MP vendors don't directly control) as opposed to being provided by the MP vendor.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/a9e1780c-73a8-426f-a74d-928864ad65f1n%40googlegroups.com.
On Aug 26, 2020, at 7:41 AM, Erin Schnabel <erin.s...@gmail.com> wrote:I have been trying to challenge our notion of who the “vendor” needs to be for metrics. In the case of micrometer, micrometer-core is a library, the vendor is the exporter in MP terms (datadog, newrelic, stackdriver, prometheus, we can make a registry for the MP JSON format, too). Using micrometer gets all of the MP vendors out of the business of writing exporters and dealing with their configuration requirements, etc. (while still allowing the runtime vendor to read/manage configuration according to what it needs).
That's another facet to the problem - I say that with Micrometer, we would actually *lose* some control over what users will be getting out-of-the-box, because (most of) it would be provided by Micrometer itself (a 3rd party library that MP vendors don't directly control) as opposed to being provided by the MP vendor.Ok, this is the real crux of the problem, and it isn’t technical at all. It is political.
InlineOn Wed, Aug 26, 2020 at 3:43 AM Jan Martiška <wray...@gmail.com> wrote:On Wednesday, August 26, 2020 at 1:12:50 AM UTC+2 erinsc...@gmail.com wrote:I heard LT’s question, and I think we still have too few people who have tried to use micrometer.It *is* an API. It wraps exporter-specific counter/gauge/histogram implementations. It has a TCK for exporters. We are coming at this thing sideways.First, we assume the MP annotations as-is are useful. I am not sure enough people have (again) used Micrometer to understand the metrics being produced without user involvement.I get the feeling you're selling this (meter binders in Micrometer) as something that will save the application developer from writing code, but I disagree with that, as I've unsuccessfully tried to explain several times. If a MP Metrics implementation provides auto-generated metrics for a specific framework, the user gets the same thing already (without involvement of the app developer).No. I’m not. I am trying to get everyone to understand that using the Micrometer classes programmatically using an API with a TCK that works across multiple vendors (all of the things MP purports to do). The definition of a vendor is different, and I’m suggesting that difference is significant, and that we’re focusing on the wrong part of the problem. Vendor independence (in this case) should focus on the exporter.
With Micrometer, the metrics wiring responsibility would just generally be moved from the MP implementation to Micrometer, so, potentially it may only save some coding on part of the IMPLEMENTATION developer (by implementation here I mean the MP runtime that uses Micrometer under the hood), and it comes at potentially severe costs:
1) The MP implementation (that uses Micrometer under the hood) loses some flexibility because it does not have the fine grained control over what metrics Micrometer will produce and how, as opposed to the case where the implementation provides the wiring code by itself, where the code would be closer to the underlying frameworkYou don’t need to use a binder because it exists. There are a lot of pre-existing binders, and using them can help for consistency for how metrics are emitted across a system (where that system includes a variety of Spring and not-Spring Java applications), but none of them are required, nor are they discovered/enabled automatically unless you (the runtime vendor) write it that way.
2) Potential version compatibility problem. The runtime will be forced to use metric binders that are designed for a particular version of a framework. A hypothetical example:
Suppose a MP implementation is using a Micrometer version that provides metric binders compatible with Hibernate 8.0 and Vert.x 6.0. Now the runtime wants to upgrade to Hibernate 9.0, which is incompatible with 8.0 and needs a whole new metric binder. There is no Micrometer version available that supports Vert.x 6.0 and Hibernate 9.0. What will the MP implementation do?The Hibernate Binder (if you choose to use that) is written to a Hibernate API.If you are the first MP vendor to get there, sure, you might need to write a revised binder that works with v9 (which in theory you would contribute back, of course, to save the next vendor some work). Micrometer uses compile optional dependencies, there is no dependency drag. If a binder doesn’t work, you don’t use it. If you write a new one, you write a new one. Binders are self-contained (an advantage for the programmatic approach), replacing them is easy.
I think this could lead to serious stymies where implementations are unable to upgrade their components to new major versions, because Micrometer hasn't caught up, therefore they will have to either align their component versions to those supported by a particular Micrometer version, or they could provide their own metric binders, which means this whole advantage (of binders being provided by Micrometer) is lost.I think this is making mountains that don’t exist. Common Micrometer binder implementations are nice to have, but they are not a trap.
So to sum up, it feels like we would potentially save a few lines of code in the MP implementation codebase (and zero lines in the applications' codebases), with serious potential issues arising from it. That doesn't sound like a good deal to me.I have been trying to challenge our notion of who the “vendor” needs to be for metrics. In the case of micrometer, micrometer-core is a library, the vendor is the exporter in MP terms (datadog, newrelic, stackdriver, prometheus, we can make a registry for the MP JSON format, too). Using micrometer gets all of the MP vendors out of the business of writing exporters and dealing with their configuration requirements, etc. (while still allowing the runtime vendor to read/manage configuration according to what it needs).Once you know what you are getting out-of-the-box, your domain-specific metrics can be more focused.That's another facet to the problem - I say that with Micrometer, we would actually *lose* some control over what users will be getting out-of-the-box, because (most of) it would be provided by Micrometer itself (a 3rd party library that MP vendors don't directly control) as opposed to being provided by the MP vendor.Ok, this is the real crux of the problem, and it isn’t technical at all. It is political.I’ve asked people to play with the library and the implementation so you can get a hands-on feeling for what is different about the approach (most of the roadblocks fall down as soon as you start doing), but I think all of the technical arguments are moot if the real issue is that this community doesn’t trust (or is not interested in engaging with) the Micrometer community.
On Wednesday, August 26, 2020 at 1:42:05 PM UTC+2 erinsc...@gmail.com wrote:InlineOn Wed, Aug 26, 2020 at 3:43 AM Jan Martiška <wray...@gmail.com> wrote:On Wednesday, August 26, 2020 at 1:12:50 AM UTC+2 erinsc...@gmail.com wrote:No. I’m not. I am trying to get everyone to understand that using the Micrometer classes programmatically using an API with a TCK that works across multiple vendors (all of the things MP purports to do). The definition of a vendor is different, and I’m suggesting that difference is significant, and that we’re focusing on the wrong part of the problem. Vendor independence (in this case) should focus on the exporter.Then I'm not sure what you exactly mean by the benefits of "metrics being produced without user involvement" that you've mentioned several times in this discussion. Is there anything in it for the application developer? Or who exactly benefits from this thing in particular? This has nothing to do with TCKs and the definition of a vendor.
Sorry I might just be missing your point. This discussion is somewhat lengthy and exhausting, so it's getting easy to misunderstand arguments :)
With Micrometer, the metrics wiring responsibility would just generally be moved from the MP implementation to Micrometer, so, potentially it may only save some coding on part of the IMPLEMENTATION developer (by implementation here I mean the MP runtime that uses Micrometer under the hood), and it comes at potentially severe costs:
1) The MP implementation (that uses Micrometer under the hood) loses some flexibility because it does not have the fine grained control over what metrics Micrometer will produce and how, as opposed to the case where the implementation provides the wiring code by itself, where the code would be closer to the underlying frameworkYou don’t need to use a binder because it exists. There are a lot of pre-existing binders, and using them can help for consistency for how metrics are emitted across a system (where that system includes a variety of Spring and not-Spring Java applications), but none of them are required, nor are they discovered/enabled automatically unless you (the runtime vendor) write it that way.Sure, you don't have to use it if it does not fit the needs of your runtime. I just felt like it's worth pointing out that this will probably happen, and MP vendors will have to maintain their own binders even when a similar binder happens to exist in Micrometer, so the consistency advantage might be lost.
2) Potential version compatibility problem. The runtime will be forced to use metric binders that are designed for a particular version of a framework. A hypothetical example:
Suppose a MP implementation is using a Micrometer version that provides metric binders compatible with Hibernate 8.0 and Vert.x 6.0. Now the runtime wants to upgrade to Hibernate 9.0, which is incompatible with 8.0 and needs a whole new metric binder. There is no Micrometer version available that supports Vert.x 6.0 and Hibernate 9.0. What will the MP implementation do?The Hibernate Binder (if you choose to use that) is written to a Hibernate API.If you are the first MP vendor to get there, sure, you might need to write a revised binder that works with v9 (which in theory you would contribute back, of course, to save the next vendor some work). Micrometer uses compile optional dependencies, there is no dependency drag. If a binder doesn’t work, you don’t use it. If you write a new one, you write a new one. Binders are self-contained (an advantage for the programmatic approach), replacing them is easy.If you decide to contribute it to Micrometer and update its v8 binder to v9, then you break all other Micrometer users who are still on Hibernate 8. That's the dependency alignment problem. With potentially tens of different frameworks for which you need to keep their versions aligned, this problem grows exponentially.
If you don't contribute it yet, you have to maintain your own implementation of v9 binder until the time is "right" for Micrometer to include it, so that's quite a bit of extra overhead and mess. So, not an insurmountable problem, but a potential major nuisance.
That's another facet to the problem - I say that with Micrometer, we would actually *lose* some control over what users will be getting out-of-the-box, because (most of) it would be provided by Micrometer itself (a 3rd party library that MP vendors don't directly control) as opposed to being provided by the MP vendor.Ok, this is the real crux of the problem, and it isn’t technical at all. It is political.I’ve asked people to play with the library and the implementation so you can get a hands-on feeling for what is different about the approach (most of the roadblocks fall down as soon as you start doing), but I think all of the technical arguments are moot if the real issue is that this community doesn’t trust (or is not interested in engaging with) the Micrometer community.Sure, this probably can be remedied by proper engagement with the Micrometer community. There is just the extra overhead and a possible risk of not always getting it the way we need, because the MP community might have an incompatible view to the one at Micrometer. But you're right, it's probably not that much of a problem.
Inline + trimOn Wed, Aug 26, 2020 at 9:23 AM Jan Martiška <wray...@gmail.com> wrote:On Wednesday, August 26, 2020 at 1:42:05 PM UTC+2 erinsc...@gmail.com wrote:InlineOn Wed, Aug 26, 2020 at 3:43 AM Jan Martiška <wray...@gmail.com> wrote:On Wednesday, August 26, 2020 at 1:12:50 AM UTC+2 erinsc...@gmail.com wrote:No. I’m not. I am trying to get everyone to understand that using the Micrometer classes programmatically using an API with a TCK that works across multiple vendors (all of the things MP purports to do). The definition of a vendor is different, and I’m suggesting that difference is significant, and that we’re focusing on the wrong part of the problem. Vendor independence (in this case) should focus on the exporter.Then I'm not sure what you exactly mean by the benefits of "metrics being produced without user involvement" that you've mentioned several times in this discussion. Is there anything in it for the application developer? Or who exactly benefits from this thing in particular? This has nothing to do with TCKs and the definition of a vendor.
Sorry I might just be missing your point. This discussion is somewhat lengthy and exhausting, so it's getting easy to misunderstand arguments :)There are more metrics available for a user to enable right now w/ micrometer w/o any direct user involvement (http metrics, JDBC metrics, kafka metrics, pick-your-poison-metrics). That is a benefit to users and operators that doesn’t require direct use of the API in applications (they can be isolated in optionally enabled binders). This is a very capable extension model.The specific point is really trying to get people to understand what is important for “vendor neutrality”. Micrometer is a stable API with long term service releases that is “vendor neutral” with respect to metrics vendors.With Micrometer, the metrics wiring responsibility would just generally be moved from the MP implementation to Micrometer, so, potentially it may only save some coding on part of the IMPLEMENTATION developer (by implementation here I mean the MP runtime that uses Micrometer under the hood), and it comes at potentially severe costs:
1) The MP implementation (that uses Micrometer under the hood) loses some flexibility because it does not have the fine grained control over what metrics Micrometer will produce and how, as opposed to the case where the implementation provides the wiring code by itself, where the code would be closer to the underlying frameworkYou don’t need to use a binder because it exists. There are a lot of pre-existing binders, and using them can help for consistency for how metrics are emitted across a system (where that system includes a variety of Spring and not-Spring Java applications), but none of them are required, nor are they discovered/enabled automatically unless you (the runtime vendor) write it that way.Sure, you don't have to use it if it does not fit the needs of your runtime. I just felt like it's worth pointing out that this will probably happen, and MP vendors will have to maintain their own binders even when a similar binder happens to exist in Micrometer, so the consistency advantage might be lost.The Quarkus Micrometer maintains its own Binder for Vert.x. This is absolutely true.
erinsc...@gmail.com schrieb am Mittwoch, 26. August 2020 um 16:02:14 UTC+2:
The Quarkus Micrometer maintains its own Binder for Vert.x. This is absolutely true.Does Quarkus really have its own Vert.x module, or is it using https://github.com/vert-x3/vertx-micrometer-metrics?
Odd, that keeps failing the build for about a week now btw, but it also provides interfaces in:which are implemented directly in the same component:
--
You received this message because you are subscribed to a topic in the Google Groups "MicroProfile" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/microprofile/mMvGzLq0Zkc/unsubscribe.
To unsubscribe from this group and all its topics, send an email to microprofile...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/8dce964f-2515-40b9-ae54-9ac217ef2865n%40googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/microprofile/a27c6cee-0bd1-4ce4-a56a-24b1e68e99a9n%40googlegroups.com.