{"id":11951,"date":"2022-11-09T17:35:23","date_gmt":"2022-11-09T16:35:23","guid":{"rendered":"https:\/\/vived.io\/?p=11951"},"modified":"2022-11-09T17:35:26","modified_gmt":"2022-11-09T16:35:26","slug":"wiele-halasu-o-observability-jep-ulatwiajacy-profilowanie-i-quarkus-porzucajacy-jeden-%f0%9f%98%89-standard-microprofile-jvm-weekly-112","status":"publish","type":"post","link":"https:\/\/vived.io\/pl\/wiele-halasu-o-observability-jep-ulatwiajacy-profilowanie-i-quarkus-porzucajacy-jeden-%f0%9f%98%89-standard-microprofile-jvm-weekly-112\/","title":{"rendered":"Wiele Ha\u0142asu o Observability &#8211; JEP u\u0142atwiaj\u0105cy profilowanie i Quarkus porzucaj\u0105cy (jeden \ud83d\ude09) standard MicroProfile &#8211; JVM Weekly 112"},"content":{"rendered":"\n<h2 id=\"1-nowy-jep-wprowadza-stabilizacji-api-sluzacego-do-profilowania-jvm\" data-num=1>1. Nowy JEP wprowadza stabilizacji API s\u0142u\u017c\u0105cego do profilowania JVM<\/h2>\n\n\n\n<p>Sprawny profiling aplikacji to trudne wyzwanie nawet z perspektywy u\u017cytkownika, a wyobra\u017acie sobie, ile wyzwa\u0144 niesie za sob\u0105 tworzenie takich narz\u0119dzi. \u0179le zaimplementowany profiling mo\u017ce wprowadzi\u0107 du\u017cy narzut wydajno\u015bciowy na aplikacje, a w szczeg\u00f3lnych sytuacjach po prostu j\u0105 &#8222;wysypa\u0107&#8221;. <\/p>\n\n\n\n<p>Do tej pory popularne by\u0142y dwa r\u00f3wnoleg\u0142e podej\u015bcia. Jedne z nich to u\u017cywanie Agent\u00f3w, czyli podprogram\u00f3w uruchamianych jako proces w maszynie wirtualnej. Alternatyw\u0105 by\u0142o za\u015b u\u017cycie wewn\u0119trznego wywo\u0142ania API <code>AsyncGetCallTrace<\/code>. API to umo\u017cliwia unikni\u0119cie problemu zbytniego bazowania na zak\u0142amuj\u0105cych wyniki SafePointach &#8211; miejscach w JVMie, w kt\u00f3rych stan aplikacji jest jasno zdefiniowany, poniewa\u017c aktualne zosta\u0142y wszystkie w\u0105tki. Mo\u017ce prowadzi\u0107 to do znacznego biasu i zak\u0142amania wynik\u00f3w pomiar\u00f3w. <code>AsyncGetCallTrace<\/code> daje dost\u0119p do danych wewn\u0119trznych, przez to ten problem nie wyst\u0119puje &#8211; daje ono bowiem mapowanie pomi\u0119dzy instrukcj\u0105\/ramk\u0105\/wska\u017anikiem stosu a konkretnym fragmentem StackTrace. Je\u015bli chcecie dowiedzie\u0107 si\u0119 wi\u0119cej szczeg\u00f3\u0142\u00f3w, zapraszam do tekstu <strong><a href=\"http:\/\/psy-lob-saw.blogspot.com\/2016\/02\/why-most-sampling-java-profilers-are.html\">Why (Most) Sampling Java Profilers Are Fucking Terrible<\/a><\/strong> autorstwa <a href=\"https:\/\/twitter.com\/nitsanw\">Nissana Wakarta<\/a>,<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/11\/alien-god-looks-down-at-lower-beings.png\" alt=\"\" class=\"wp-image-11973\" width=\"340\" height=\"430\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/11\/alien-god-looks-down-at-lower-beings.png 680w, https:\/\/vived.io\/wp-content\/uploads\/2022\/11\/alien-god-looks-down-at-lower-beings-237x300.png 237w\" sizes=\"auto, (max-width: 340px) 100vw, 340px\" \/><figcaption>O samych SafePointach rozpisywa\u0142 si\u0119 kiedy\u015b <a href=\"https:\/\/shipilev.net\/jvm\/anatomy-quarks\/22-safepoint-polls\/\">Aleksey Shipil\u00ebv<\/a>.<\/figcaption><\/figure><\/div>\n\n\n<p>Z <code>AsyncGetCallTrace<\/code> jest jednak jeden problem &#8211; nie jest ono bowiem oficjaln\u0105 cz\u0119\u015b\u0107 standardu JDK. Spora cz\u0119\u015b\u0107 implementacji JDK go posiada, ale zale\u017cy to raczej od dobrej woli implementuj\u0105cych. Co r\u00f3wnie wa\u017cne: jako, \u017ce nie jest oficjalnie zdefiniowane, jego rozwijanie jest trudne bez psucia ekosystemu narz\u0119dzi. Dlatego te\u017c tw\u00f3rcy Javy postanowili i\u015b\u0107 za ciosem i wpisa\u0107 go w standard j\u0119zyka. Dodatkowo, skoro ju\u017c i tak w tym grzebiemy, postanowiono r\u00f3wnie\u017c uzupe\u0142ni\u0107 przekazywane przez metod\u0119 informacje, takie jak np. poziom kompilacji danego fragmentu kodu, jak np. czy kod by\u0142 skompilowany za pomoc\u0105 C1\/C2 czy te\u017c np. by\u0142 inlinowany. W ten spos\u00f3b powsta\u0142 <a href=\"https:\/\/openjdk.org\/jeps\/435\"><strong>JEP 435: Asynchronous Stack Trace VM API<\/strong><\/a>, maj\u0105cy na celu zaproponowanie <code>AsyncGetStackTrace API<\/code>. Ma ono by\u0107 wpisane w standard Javy, tak samo wydajne jak wcze\u015bniejsze rozwi\u0105zanie, a r\u00f3wnocze\u015bnie uzupe\u0142nione o wspomniane wy\u017cej detale.<\/p>\n\n\n\n<p>A, i \u017ceby wszyscy dobrze zrozumieli &#8211; wspomniane API to cz\u0119\u015b\u0107 HotSpot VM &#8211; a wi\u0119c u\u017cywa si\u0119 go z poziomu C. W zwi\u0105zku z tym w <a href=\"https:\/\/openjdk.org\/jeps\/435\">JEP-ie<\/a> znajdziecie takie brzydkie s\u0142owa jak wska\u017aniki czy pliki nag\u0142\u00f3wkowe.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"744\" height=\"638\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/11\/image-9.png\" alt=\"\" class=\"wp-image-11967\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/11\/image-9.png 744w, https:\/\/vived.io\/wp-content\/uploads\/2022\/11\/image-9-300x257.png 300w\" sizes=\"auto, (max-width: 744px) 100vw, 744px\" \/><figcaption>Klasyczny poradnik dla programist\u00f3w Javy, kt\u00f3rzy chcieli by u\u017cy\u0107 nowego JEPa przed premier\u0105 JDK 20, w kt\u00f3rym jest spora szansa \u017ce go zobaczymy.<\/figcaption><\/figure><\/div>\n\n\n<p>Dobra, to jeszcze a po co to komu, a komu to potrzebne? Tutaj wykorzystam okazj\u0119, \u017ceby podrzuci\u0107 Wam narz\u0119dzie, kt\u00f3rym jest <strong>async-profiler<\/strong>. Ten bowiem jest jednym z najpopularniejszych konsument\u00f3w wspomnianego <code>AsyncGetCallTrace API<\/code>, dzi\u0119ki czemu sta\u0142 si\u0119 jednym z kluczowych narz\u0119dzi je\u015bli chodzi o profilowanie aplikacji na JVM. To w\u0142a\u015bnie pod k\u0105tem tego typu rozwi\u0105za\u0144 stworzony zosta\u0142 opisywany tu JEP i pozwoli\u0107 ma na stworzenie odpowiedniej wydajnej abstrakcji na ich potrzeby.<\/p>\n\n\n\n<p>Je\u015bli szukacie szybkiego wprowadzenia do tematu, <a href=\"https:\/\/krzysztofslusarski.github.io\/2021\/08\/17\/cont-async.html\">post Krzysztofa \u015alusarskiego z Hazelcast<\/a> jest w sam raz dla Was. Nieco wi\u0119cej detali znajdziecie w <a href=\"https:\/\/www.baeldung.com\/java-async-profiler\"><strong>A Guide to async-profiler<\/strong> opublikowanym na Baeldung<\/a>. Je\u015bli za\u015b b\u0119dziecie chcieli podje\u015b\u0107 do tematu profilingu na powa\u017cnie, polecam <a href=\"https:\/\/www.youtube.com\/playlist?list=PLNCLTEx3B8h4Yo_WvKWdLvI9mj1XpTKBr\">trzy godzinny kurs wideo prezentuj\u0105cy narz\u0119dzie<\/a>.<\/p>\n\n\n\n<p>I ja wiem, masa czasu, ale dla &#8222;produktywnych i szanuj\u0105cych czas&#8221;:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"500\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/11\/image-8.png\" alt=\"\" class=\"wp-image-11964\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/11\/image-8.png 500w, https:\/\/vived.io\/wp-content\/uploads\/2022\/11\/image-8-300x300.png 300w, https:\/\/vived.io\/wp-content\/uploads\/2022\/11\/image-8-150x150.png 150w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/figure><\/div>\n\n\n<h3 class=\"wp-block-heading\">\u0179r\u00f3d\u0142a<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"http:\/\/psy-lob-saw.blogspot.com\/2016\/02\/why-most-sampling-java-profilers-are.html\">Why (Most) Sampling Java Profilers Are Fucking Terrible<\/a><\/li><li><a href=\"https:\/\/shipilev.net\/jvm\/anatomy-quarks\/22-safepoint-polls\/\">JVM Anatomy Quark #22: Safepoint Polls<\/a><\/li><li><a href=\"https:\/\/www.baeldung.com\/java-async-profiler\">A Guide to async-profiler<\/a><\/li><li><a href=\"https:\/\/krzysztofslusarski.github.io\/2021\/08\/17\/cont-async.html\">Continuous profiling with async-profiler<\/a><\/li><li><a href=\"https:\/\/www.youtube.com\/playlist?list=PLNCLTEx3B8h4Yo_WvKWdLvI9mj1XpTKBr\">Async-profiler with Andrei Pangin. Webinar by Luxoft<\/a><\/li><\/ul>\n\n\n\n<h2 id=\"2-dlaczego-quarkus-wycofuje-sie-ze-standardow-microprofile-dotyczacych-observability\" data-num=2>2. Dlaczego Quarkus wycofuje si\u0119 ze standard\u00f3w MicroProfile dotycz\u0105cych observability?<\/h2>\n\n\n\n<p>By\u0142o ju\u017c o profilowaniu, kontynuuj\u0105c wi\u0119c temat &#8222;obserwowalno\u015bci&#8221;, przygl\u0105dniemy si\u0119 tematowi JVM-owych metryk. Okazje ku temu daje nam og\u0142oszenie ze strony Quarkusa &#8211; framework bowiem postanowi\u0142 podzieli\u0107 si\u0119 ze spo\u0142eczno\u015bci\u0105 <a href=\"https:\/\/quarkus.io\/blog\/quarkus-observability-roadmap-2023\/\">swoimi planami, je\u015bli chodzi o wsparcie najbardziej znanych narz\u0119dzi do telemetrii<\/a>. Kilka decyzji jest za\u015b interesuj\u0105ce dla ka\u017cdego \u015bledz\u0105cego ekosystem bibliotek i standard\u00f3w, nawet je\u015bli nie u\u017cywaj\u0105 samego Quarkusa.<\/p>\n\n\n\n<p>Zacznijmy troch\u0119 od nakre\u015blenia horyzontu organizacyjno-spo\u0142eczno\u015bciowego. Je\u015bli chodzi o Tracing &#8211; czyli \u015bledzenia poszczeg\u00f3lnych zdarze\u0144 w ramach aplikacji &#8211; organizacj\u0105 zajmuj\u0105c\u0105 si\u0119 tworzeniem standard\u00f3w jest <strong>Cloud Native Computing Foundation<\/strong> (w skr\u00f3cie <strong>CNCF<\/strong>). Przez lata rozwijane by\u0142o kilka konkurencyjnych projekt\u00f3w, takich jak <a href=\"https:\/\/opencensus.io\/\">OpenCensus<\/a> czy <a href=\"https:\/\/opentracing.io\/\">OpenTracing<\/a>. Ten ostatni trafi\u0142 do MicroProfile jako <a href=\"https:\/\/github.com\/eclipse\/microprofile-opentracing\">MicroProfile OpenTracing API<\/a>, referencyjnej implementacji tego\u017c &#8211; <a href=\"https:\/\/github.com\/smallrye\/smallrye-opentracing\">SmallRye OpenTracing<\/a> &#8211; u\u017cywa Quarkus.<\/p>\n\n\n\n<p>CNCF pocz\u0105tkiem roku zdecydowa\u0142 si\u0119 na <a href=\"https:\/\/www.cncf.io\/blog\/2022\/01\/31\/cncf-archives-the-opentracing-project\/\">porzucenie rozwoju OpenTracingu na rzecz OpenTelemetry<\/a>, b\u0119d\u0105cego nieco szerszym projektem, przez co <strong>MicroProfile OpenTracing API<\/strong> oberwa\u0142o rykoszetem i r\u00f3wnie\u017c przestanie by\u0107 wspierane. Na jego miejsce powsta\u0142o <strong><a href=\"https:\/\/github.com\/eclipse\/microprofile-telemetry\">MicroProfile Telemetry Tracing<\/a><\/strong>, implementuj\u0105ce standard Tracingu pochodz\u0105cy OpenTelemetry. Trafi ono do nadchodz\u0105cego MicroProfile 6.0 i to w\u0142a\u015bnie ono b\u0119dzie w przysz\u0142o\u015bci u\u017cywane przez Quarkusa. Oznacza to, \u017ce wszystkich u\u017cytkownik\u00f3w MP OpenTracing czeka migracja, oba standardy nie s\u0105 bowiem ze sob\u0105 w pe\u0142ni kompatybilne. <\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"480\" height=\"270\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/11\/bill-nye-party-horn.gif\" alt=\"\" class=\"wp-image-11958\"\/><figcaption>Yeah! Rozw\u00f3j!<\/figcaption><\/figure><\/div>\n\n\n<p>To jednak nie koniec je\u015bli chodzi o poszerzenie zakresu wsp\u00f3\u0142pracy mi\u0119dzy Quarkusem, a OpenTelemetry. Okazuje si\u0119 bowiem, \u017ce framework postanowi\u0142 porzuci\u0107 wsparcie dla <a href=\"https:\/\/github.com\/eclipse\/microprofile-metrics\">MicroProfile Metrics API<\/a>, standardu metryk rozwijanego w ramach sam MicroProfile. Zamiast tego przysz\u0142e wersje Quarkusa u\u017cywa\u0107 b\u0119d\u0105 <a href=\"https:\/\/micrometer.io\/\">Micrometer<\/a>, podobnej w swojej naturze do SLF4J fasady umo\u017cliwiaj\u0105cej prac\u0119 z wieloma systemami metryk. Kluczowym dla podj\u0119cia takiej decyzji jest rych\u0142a stabilizacja <a href=\"https:\/\/opentelemetry.io\/docs\/reference\/specification\/metrics\/\">OpenTelemetry Metrics<\/a> &#8211; czyli komplementarnego dla OpenTelemetry Tracing standardu metryk &#8211; kt\u00f3ry przez Micrometer jest wspierany. W zwi\u0105zku z tym przerwane zostan\u0105 prace nad rozwojem quarkusowym rozszerzeniem dla SmallRye Metrics, referencyjnej implementacji standardu pochodz\u0105cego z MicroProfile.<\/p>\n\n\n\n<p>Ca\u0142o\u015b\u0107 sytuacji ka\u017ce nam przemy\u015ble\u0107, jak rozumiemy standardy w dzisiejszym ekosystemie programistycznym. Stajemy bowiem przed interesuj\u0105cym problemem &#8211; co je\u015bli standard Javowy (a za taki ju\u017c chyba mo\u017cna uzna\u0107 MicroProfile) nie implementuje og\u00f3lnego standardu rynkowego, takiego jak OpenTelemetry Metrics? Jak w takiej sytuacji powinny zachowa\u0107 si\u0119 frameworki? Ja z mojej perspektywy popieram decyzje tego Quarkusa &#8211; OpenTelemetry w tej chwili ma wsparcie w wi\u0119kszej ilo\u015bci ekosystem\u00f3w, przez co zar\u00f3wno dostawcy chmurowi, jak i tw\u00f3rcy narz\u0119dzi maj\u0105 wi\u0119ksz\u0105 motywacj\u0119 do wspierania go out-of-the-box. W praktyce oznacza to wi\u0119c mniejsze obci\u0105\u017cenie programist\u00f3w powtarzalnym, infrastrukturalnym plumbingiem. Z drugiej jednak strony, troch\u0119 staje to w kontrze do obietnic takich projekt\u00f3w jak MicroProfile z ich wsp\u00f3lnym API standardem implementowanym w r\u00f3\u017cny spos\u00f3b przez poszczeg\u00f3lnych vendor\u00f3w.<\/p>\n\n\n\n<p>Tak naprawd\u0119 najlepszym rozwi\u0105zaniem by\u0142oby, \u017ce je\u015bli ju\u017c powiedzia\u0142o si\u0119 A, tworz\u0105c MP Telemetry Tracing, to powinno powsta\u0107 MP Telemetry Metrics. Rozumiem jednak, \u017ce zbytnie rozdmuchanie ilo\u015b\u0107 konkurencyjnych API w pojedynczym standardzie te\u017c nikomu nie s\u0142u\u017cy. Udowadnia to, \u017ce standaryzacja jest \u017cmudnym i wyboistym procesem.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/11\/image-6.png\" alt=\"\" class=\"wp-image-11956\" width=\"500\" height=\"284\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/11\/image-6.png 1000w, https:\/\/vived.io\/wp-content\/uploads\/2022\/11\/image-6-300x170.png 300w, https:\/\/vived.io\/wp-content\/uploads\/2022\/11\/image-6-768x435.png 768w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><figcaption>Obowi\u0105zkowy klasyk XKCD na koniec, bo przecie\u017c nie mog\u0142o by\u0107 inaczej.<\/figcaption><\/figure><\/div>\n\n\n<h3 class=\"wp-block-heading\">\u0179r\u00f3d\u0142a<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/quarkus.io\/blog\/quarkus-observability-roadmap-2023\">Quarkus Observability Roadmap 2023<\/a><\/li><li><a href=\"https:\/\/www.cncf.io\/blog\/2022\/01\/31\/cncf-archives-the-opentracing-project\/\">CNCF Archives the OpenTracing Project<\/a><\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Kiedy zaczyna\u0142em tworzy\u0107 obecn\u0105 edycj\u0119 my\u015bla\u0142em, \u017ce totalnie nie b\u0119dzie o czym pisa\u0107. Okaza\u0142o si\u0119 jednak, \u017ce temat Observability w JVM-ie jest naprawd\u0119 ciekawy, a ostatnie og\u0142oszenia pozwoli\u0142y mi nieco lepiej si\u0119 mu przygl\u0105dn\u0105\u0107. Mam nadzieje, \u017ce Wam r\u00f3wnie\u017c spodoba si\u0119 taka nieco tematyczna edycja<\/p>\n","protected":false},"author":10,"featured_media":11983,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[23],"tags":[],"class_list":["post-11951","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-jvm"],"acf":{"estimated_reading_time":"5","feature_image_blog":{"ID":11986,"id":11986,"title":"ArturSkowronski_shakespeare_using_binoculars_cyberpunk_ebeaed83-969f-48a0-9bf3-bcc2ef92e95e","filename":"ArturSkowronski_shakespeare_using_binoculars_cyberpunk_ebeaed83-969f-48a0-9bf3-bcc2ef92e95e.png","filesize":1356507,"url":"https:\/\/vived.io\/wp-content\/uploads\/2022\/11\/ArturSkowronski_shakespeare_using_binoculars_cyberpunk_ebeaed83-969f-48a0-9bf3-bcc2ef92e95e.png","link":"https:\/\/vived.io\/pl\/arturskowronski_shakespeare_using_binoculars_cyberpunk_ebeaed83-969f-48a0-9bf3-bcc2ef92e95e-2\/","alt":"","author":"10","description":"","caption":"","name":"arturskowronski_shakespeare_using_binoculars_cyberpunk_ebeaed83-969f-48a0-9bf3-bcc2ef92e95e-2","status":"inherit","uploaded_to":0,"date":"2022-11-09 16:30:37","modified":"2022-11-09 16:30:37","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/vived.io\/wp-includes\/images\/media\/default.png","width":1024,"height":1024,"sizes":{"thumbnail":"https:\/\/vived.io\/wp-content\/uploads\/2022\/11\/ArturSkowronski_shakespeare_using_binoculars_cyberpunk_ebeaed83-969f-48a0-9bf3-bcc2ef92e95e-150x150.png","thumbnail-width":150,"thumbnail-height":150,"medium":"https:\/\/vived.io\/wp-content\/uploads\/2022\/11\/ArturSkowronski_shakespeare_using_binoculars_cyberpunk_ebeaed83-969f-48a0-9bf3-bcc2ef92e95e-300x300.png","medium-width":300,"medium-height":300,"medium_large":"https:\/\/vived.io\/wp-content\/uploads\/2022\/11\/ArturSkowronski_shakespeare_using_binoculars_cyberpunk_ebeaed83-969f-48a0-9bf3-bcc2ef92e95e-768x768.png","medium_large-width":768,"medium_large-height":768,"large":"https:\/\/vived.io\/wp-content\/uploads\/2022\/11\/ArturSkowronski_shakespeare_using_binoculars_cyberpunk_ebeaed83-969f-48a0-9bf3-bcc2ef92e95e-1024x1024.png","large-width":1024,"large-height":1024,"1536x1536":"https:\/\/vived.io\/wp-content\/uploads\/2022\/11\/ArturSkowronski_shakespeare_using_binoculars_cyberpunk_ebeaed83-969f-48a0-9bf3-bcc2ef92e95e.png","1536x1536-width":1024,"1536x1536-height":1024,"2048x2048":"https:\/\/vived.io\/wp-content\/uploads\/2022\/11\/ArturSkowronski_shakespeare_using_binoculars_cyberpunk_ebeaed83-969f-48a0-9bf3-bcc2ef92e95e.png","2048x2048-width":1024,"2048x2048-height":1024,"gform-image-choice-sm":"https:\/\/vived.io\/wp-content\/uploads\/2022\/11\/ArturSkowronski_shakespeare_using_binoculars_cyberpunk_ebeaed83-969f-48a0-9bf3-bcc2ef92e95e.png","gform-image-choice-sm-width":300,"gform-image-choice-sm-height":300,"gform-image-choice-md":"https:\/\/vived.io\/wp-content\/uploads\/2022\/11\/ArturSkowronski_shakespeare_using_binoculars_cyberpunk_ebeaed83-969f-48a0-9bf3-bcc2ef92e95e.png","gform-image-choice-md-width":400,"gform-image-choice-md-height":400,"gform-image-choice-lg":"https:\/\/vived.io\/wp-content\/uploads\/2022\/11\/ArturSkowronski_shakespeare_using_binoculars_cyberpunk_ebeaed83-969f-48a0-9bf3-bcc2ef92e95e.png","gform-image-choice-lg-width":600,"gform-image-choice-lg-height":600}},"weekly_summary":true,"push_notification_image":"https:\/\/vived.io\/wp-content\/uploads\/2022\/11\/JVM-Weekly-1200x628_V2-1-2.png","feature_image_visible":false},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Wiele Ha\u0142asu o Observability - JEP u\u0142atwiaj\u0105cy profilowanie i Quarkus porzucaj\u0105cy (jeden \ud83d\ude09) standard MicroProfile - JVM Weekly 112 - Vived<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vived.io\/pl\/wiele-halasu-o-observability-jep-ulatwiajacy-profilowanie-i-quarkus-porzucajacy-jeden-%f0%9f%98%89-standard-microprofile-jvm-weekly-112\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Wiele Ha\u0142asu o Observability - JEP u\u0142atwiaj\u0105cy profilowanie i Quarkus porzucaj\u0105cy (jeden \ud83d\ude09) standard MicroProfile - JVM Weekly 112 - Vived\" \/>\n<meta property=\"og:description\" content=\"Kiedy zaczyna\u0142em tworzy\u0107 obecn\u0105 edycj\u0119 my\u015bla\u0142em, \u017ce totalnie nie b\u0119dzie o czym pisa\u0107. Okaza\u0142o si\u0119 jednak, \u017ce temat Observability w JVM-ie jest naprawd\u0119 ciekawy, a ostatnie og\u0142oszenia pozwoli\u0142y mi nieco lepiej si\u0119 mu przygl\u0105dn\u0105\u0107. Mam nadzieje, \u017ce Wam r\u00f3wnie\u017c spodoba si\u0119 taka nieco tematyczna edycja\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vived.io\/pl\/wiele-halasu-o-observability-jep-ulatwiajacy-profilowanie-i-quarkus-porzucajacy-jeden-%f0%9f%98%89-standard-microprofile-jvm-weekly-112\/\" \/>\n<meta property=\"og:site_name\" content=\"Vived\" \/>\n<meta property=\"article:published_time\" content=\"2022-11-09T16:35:23+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-11-09T16:35:26+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.vived.io\/wp-content\/uploads\/2022\/11\/JVM-Weekly-1200x628_V2-1-2.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Artur Skowro\u0144ski\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/vived.io\/pl\/wiele-halasu-o-observability-jep-ulatwiajacy-profilowanie-i-quarkus-porzucajacy-jeden-%f0%9f%98%89-standard-microprofile-jvm-weekly-112\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/wiele-halasu-o-observability-jep-ulatwiajacy-profilowanie-i-quarkus-porzucajacy-jeden-%f0%9f%98%89-standard-microprofile-jvm-weekly-112\/\"},\"author\":{\"name\":\"Artur Skowro\u0144ski\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3\"},\"headline\":\"Wiele Ha\u0142asu o Observability &#8211; JEP u\u0142atwiaj\u0105cy profilowanie i Quarkus porzucaj\u0105cy (jeden \ud83d\ude09) standard MicroProfile &#8211; JVM Weekly 112\",\"datePublished\":\"2022-11-09T16:35:23+00:00\",\"dateModified\":\"2022-11-09T16:35:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/wiele-halasu-o-observability-jep-ulatwiajacy-profilowanie-i-quarkus-porzucajacy-jeden-%f0%9f%98%89-standard-microprofile-jvm-weekly-112\/\"},\"wordCount\":1204,\"publisher\":{\"@id\":\"https:\/\/vived.io\/pl\/#organization\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/wiele-halasu-o-observability-jep-ulatwiajacy-profilowanie-i-quarkus-porzucajacy-jeden-%f0%9f%98%89-standard-microprofile-jvm-weekly-112\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2022\/11\/JVM-Weekly-1200x628_V2-1-2.png\",\"articleSection\":[\"JVM\"],\"inLanguage\":\"pl-PL\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/vived.io\/pl\/wiele-halasu-o-observability-jep-ulatwiajacy-profilowanie-i-quarkus-porzucajacy-jeden-%f0%9f%98%89-standard-microprofile-jvm-weekly-112\/\",\"url\":\"https:\/\/vived.io\/pl\/wiele-halasu-o-observability-jep-ulatwiajacy-profilowanie-i-quarkus-porzucajacy-jeden-%f0%9f%98%89-standard-microprofile-jvm-weekly-112\/\",\"name\":\"Wiele Ha\u0142asu o Observability - JEP u\u0142atwiaj\u0105cy profilowanie i Quarkus porzucaj\u0105cy (jeden \ud83d\ude09) standard MicroProfile - JVM Weekly 112 - Vived\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/wiele-halasu-o-observability-jep-ulatwiajacy-profilowanie-i-quarkus-porzucajacy-jeden-%f0%9f%98%89-standard-microprofile-jvm-weekly-112\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/wiele-halasu-o-observability-jep-ulatwiajacy-profilowanie-i-quarkus-porzucajacy-jeden-%f0%9f%98%89-standard-microprofile-jvm-weekly-112\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2022\/11\/JVM-Weekly-1200x628_V2-1-2.png\",\"datePublished\":\"2022-11-09T16:35:23+00:00\",\"dateModified\":\"2022-11-09T16:35:26+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/vived.io\/pl\/wiele-halasu-o-observability-jep-ulatwiajacy-profilowanie-i-quarkus-porzucajacy-jeden-%f0%9f%98%89-standard-microprofile-jvm-weekly-112\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/vived.io\/pl\/wiele-halasu-o-observability-jep-ulatwiajacy-profilowanie-i-quarkus-porzucajacy-jeden-%f0%9f%98%89-standard-microprofile-jvm-weekly-112\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/wiele-halasu-o-observability-jep-ulatwiajacy-profilowanie-i-quarkus-porzucajacy-jeden-%f0%9f%98%89-standard-microprofile-jvm-weekly-112\/#primaryimage\",\"url\":\"https:\/\/vived.io\/wp-content\/uploads\/2022\/11\/JVM-Weekly-1200x628_V2-1-2.png\",\"contentUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2022\/11\/JVM-Weekly-1200x628_V2-1-2.png\",\"width\":1200,\"height\":628},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/vived.io\/pl\/wiele-halasu-o-observability-jep-ulatwiajacy-profilowanie-i-quarkus-porzucajacy-jeden-%f0%9f%98%89-standard-microprofile-jvm-weekly-112\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\/\/vived.io\/pl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Wiele Ha\u0142asu o Observability &#8211; JEP u\u0142atwiaj\u0105cy profilowanie i Quarkus porzucaj\u0105cy (jeden \ud83d\ude09) standard MicroProfile &#8211; JVM Weekly 112\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/vived.io\/pl\/#website\",\"url\":\"https:\/\/vived.io\/pl\/\",\"name\":\"Vived\",\"description\":\"platform empowering IT people and technology companies to synergic growth\",\"publisher\":{\"@id\":\"https:\/\/vived.io\/pl\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/vived.io\/pl\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pl-PL\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/vived.io\/pl\/#organization\",\"name\":\"Vived\",\"url\":\"https:\/\/vived.io\/pl\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png\",\"contentUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png\",\"width\":136,\"height\":45,\"caption\":\"Vived\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3\",\"name\":\"Artur Skowro\u0144ski\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/29055786486c8b9dc1507f2744221c5bdb8d7ef6e6217ced0326dd3296aea6ed?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/29055786486c8b9dc1507f2744221c5bdb8d7ef6e6217ced0326dd3296aea6ed?s=96&d=mm&r=g\",\"caption\":\"Artur Skowro\u0144ski\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Wiele Ha\u0142asu o Observability - JEP u\u0142atwiaj\u0105cy profilowanie i Quarkus porzucaj\u0105cy (jeden \ud83d\ude09) standard MicroProfile - JVM Weekly 112 - Vived","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/vived.io\/pl\/wiele-halasu-o-observability-jep-ulatwiajacy-profilowanie-i-quarkus-porzucajacy-jeden-%f0%9f%98%89-standard-microprofile-jvm-weekly-112\/","og_locale":"pl_PL","og_type":"article","og_title":"Wiele Ha\u0142asu o Observability - JEP u\u0142atwiaj\u0105cy profilowanie i Quarkus porzucaj\u0105cy (jeden \ud83d\ude09) standard MicroProfile - JVM Weekly 112 - Vived","og_description":"Kiedy zaczyna\u0142em tworzy\u0107 obecn\u0105 edycj\u0119 my\u015bla\u0142em, \u017ce totalnie nie b\u0119dzie o czym pisa\u0107. Okaza\u0142o si\u0119 jednak, \u017ce temat Observability w JVM-ie jest naprawd\u0119 ciekawy, a ostatnie og\u0142oszenia pozwoli\u0142y mi nieco lepiej si\u0119 mu przygl\u0105dn\u0105\u0107. Mam nadzieje, \u017ce Wam r\u00f3wnie\u017c spodoba si\u0119 taka nieco tematyczna edycja","og_url":"https:\/\/vived.io\/pl\/wiele-halasu-o-observability-jep-ulatwiajacy-profilowanie-i-quarkus-porzucajacy-jeden-%f0%9f%98%89-standard-microprofile-jvm-weekly-112\/","og_site_name":"Vived","article_published_time":"2022-11-09T16:35:23+00:00","article_modified_time":"2022-11-09T16:35:26+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/blog.vived.io\/wp-content\/uploads\/2022\/11\/JVM-Weekly-1200x628_V2-1-2.png","type":"image\/png"}],"author":"Artur Skowro\u0144ski","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/vived.io\/pl\/wiele-halasu-o-observability-jep-ulatwiajacy-profilowanie-i-quarkus-porzucajacy-jeden-%f0%9f%98%89-standard-microprofile-jvm-weekly-112\/#article","isPartOf":{"@id":"https:\/\/vived.io\/pl\/wiele-halasu-o-observability-jep-ulatwiajacy-profilowanie-i-quarkus-porzucajacy-jeden-%f0%9f%98%89-standard-microprofile-jvm-weekly-112\/"},"author":{"name":"Artur Skowro\u0144ski","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3"},"headline":"Wiele Ha\u0142asu o Observability &#8211; JEP u\u0142atwiaj\u0105cy profilowanie i Quarkus porzucaj\u0105cy (jeden \ud83d\ude09) standard MicroProfile &#8211; JVM Weekly 112","datePublished":"2022-11-09T16:35:23+00:00","dateModified":"2022-11-09T16:35:26+00:00","mainEntityOfPage":{"@id":"https:\/\/vived.io\/pl\/wiele-halasu-o-observability-jep-ulatwiajacy-profilowanie-i-quarkus-porzucajacy-jeden-%f0%9f%98%89-standard-microprofile-jvm-weekly-112\/"},"wordCount":1204,"publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"image":{"@id":"https:\/\/vived.io\/pl\/wiele-halasu-o-observability-jep-ulatwiajacy-profilowanie-i-quarkus-porzucajacy-jeden-%f0%9f%98%89-standard-microprofile-jvm-weekly-112\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2022\/11\/JVM-Weekly-1200x628_V2-1-2.png","articleSection":["JVM"],"inLanguage":"pl-PL"},{"@type":"WebPage","@id":"https:\/\/vived.io\/pl\/wiele-halasu-o-observability-jep-ulatwiajacy-profilowanie-i-quarkus-porzucajacy-jeden-%f0%9f%98%89-standard-microprofile-jvm-weekly-112\/","url":"https:\/\/vived.io\/pl\/wiele-halasu-o-observability-jep-ulatwiajacy-profilowanie-i-quarkus-porzucajacy-jeden-%f0%9f%98%89-standard-microprofile-jvm-weekly-112\/","name":"Wiele Ha\u0142asu o Observability - JEP u\u0142atwiaj\u0105cy profilowanie i Quarkus porzucaj\u0105cy (jeden \ud83d\ude09) standard MicroProfile - JVM Weekly 112 - Vived","isPartOf":{"@id":"https:\/\/vived.io\/pl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vived.io\/pl\/wiele-halasu-o-observability-jep-ulatwiajacy-profilowanie-i-quarkus-porzucajacy-jeden-%f0%9f%98%89-standard-microprofile-jvm-weekly-112\/#primaryimage"},"image":{"@id":"https:\/\/vived.io\/pl\/wiele-halasu-o-observability-jep-ulatwiajacy-profilowanie-i-quarkus-porzucajacy-jeden-%f0%9f%98%89-standard-microprofile-jvm-weekly-112\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2022\/11\/JVM-Weekly-1200x628_V2-1-2.png","datePublished":"2022-11-09T16:35:23+00:00","dateModified":"2022-11-09T16:35:26+00:00","breadcrumb":{"@id":"https:\/\/vived.io\/pl\/wiele-halasu-o-observability-jep-ulatwiajacy-profilowanie-i-quarkus-porzucajacy-jeden-%f0%9f%98%89-standard-microprofile-jvm-weekly-112\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vived.io\/pl\/wiele-halasu-o-observability-jep-ulatwiajacy-profilowanie-i-quarkus-porzucajacy-jeden-%f0%9f%98%89-standard-microprofile-jvm-weekly-112\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/wiele-halasu-o-observability-jep-ulatwiajacy-profilowanie-i-quarkus-porzucajacy-jeden-%f0%9f%98%89-standard-microprofile-jvm-weekly-112\/#primaryimage","url":"https:\/\/vived.io\/wp-content\/uploads\/2022\/11\/JVM-Weekly-1200x628_V2-1-2.png","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2022\/11\/JVM-Weekly-1200x628_V2-1-2.png","width":1200,"height":628},{"@type":"BreadcrumbList","@id":"https:\/\/vived.io\/pl\/wiele-halasu-o-observability-jep-ulatwiajacy-profilowanie-i-quarkus-porzucajacy-jeden-%f0%9f%98%89-standard-microprofile-jvm-weekly-112\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/vived.io\/pl\/"},{"@type":"ListItem","position":2,"name":"Wiele Ha\u0142asu o Observability &#8211; JEP u\u0142atwiaj\u0105cy profilowanie i Quarkus porzucaj\u0105cy (jeden \ud83d\ude09) standard MicroProfile &#8211; JVM Weekly 112"}]},{"@type":"WebSite","@id":"https:\/\/vived.io\/pl\/#website","url":"https:\/\/vived.io\/pl\/","name":"Vived","description":"platform empowering IT people and technology companies to synergic growth","publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vived.io\/pl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pl-PL"},{"@type":"Organization","@id":"https:\/\/vived.io\/pl\/#organization","name":"Vived","url":"https:\/\/vived.io\/pl\/","logo":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/","url":"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png","width":136,"height":45,"caption":"Vived"},"image":{"@id":"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3","name":"Artur Skowro\u0144ski","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/29055786486c8b9dc1507f2744221c5bdb8d7ef6e6217ced0326dd3296aea6ed?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/29055786486c8b9dc1507f2744221c5bdb8d7ef6e6217ced0326dd3296aea6ed?s=96&d=mm&r=g","caption":"Artur Skowro\u0144ski"}}]}},"blocks_vived":[{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2>1. Nowy JEP wprowadza stabilizacji API s\u0142u\u017c\u0105cego do profilowania JVM<\/h2>\n","innerContent":["\n<h2>1. Nowy JEP wprowadza stabilizacji API s\u0142u\u017c\u0105cego do profilowania JVM<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Sprawny profiling aplikacji to trudne wyzwanie nawet z perspektywy u\u017cytkownika, a wyobra\u017acie sobie, ile wyzwa\u0144 niesie za sob\u0105 tworzenie takich narz\u0119dzi. \u0179le zaimplementowany profiling mo\u017ce wprowadzi\u0107 du\u017cy narzut wydajno\u015bciowy na aplikacje, a w szczeg\u00f3lnych sytuacjach po prostu j\u0105 \"wysypa\u0107\". <\/p>\n","innerContent":["\n<p>Sprawny profiling aplikacji to trudne wyzwanie nawet z perspektywy u\u017cytkownika, a wyobra\u017acie sobie, ile wyzwa\u0144 niesie za sob\u0105 tworzenie takich narz\u0119dzi. \u0179le zaimplementowany profiling mo\u017ce wprowadzi\u0107 du\u017cy narzut wydajno\u015bciowy na aplikacje, a w szczeg\u00f3lnych sytuacjach po prostu j\u0105 \"wysypa\u0107\". <\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Do tej pory popularne by\u0142y dwa r\u00f3wnoleg\u0142e podej\u015bcia. Jedne z nich to u\u017cywanie Agent\u00f3w, czyli podprogram\u00f3w uruchamianych jako proces w maszynie wirtualnej. Alternatyw\u0105 by\u0142o za\u015b u\u017cycie wewn\u0119trznego wywo\u0142ania API <code>AsyncGetCallTrace<\/code>. API to umo\u017cliwia unikni\u0119cie problemu zbytniego bazowania na zak\u0142amuj\u0105cych wyniki SafePointach - miejscach w JVMie, w kt\u00f3rych stan aplikacji jest jasno zdefiniowany, poniewa\u017c aktualne zosta\u0142y wszystkie w\u0105tki. Mo\u017ce prowadzi\u0107 to do znacznego biasu i zak\u0142amania wynik\u00f3w pomiar\u00f3w. <code>AsyncGetCallTrace<\/code> daje dost\u0119p do danych wewn\u0119trznych, przez to ten problem nie wyst\u0119puje - daje ono bowiem mapowanie pomi\u0119dzy instrukcj\u0105\/ramk\u0105\/wska\u017anikiem stosu a konkretnym fragmentem StackTrace. Je\u015bli chcecie dowiedzie\u0107 si\u0119 wi\u0119cej szczeg\u00f3\u0142\u00f3w, zapraszam do tekstu <strong><a href=\"http:\/\/psy-lob-saw.blogspot.com\/2016\/02\/why-most-sampling-java-profilers-are.html\">Why (Most) Sampling Java Profilers Are Fucking Terrible<\/a><\/strong> autorstwa <a href=\"https:\/\/twitter.com\/nitsanw\">Nissana Wakarta<\/a>,<\/p>\n","innerContent":["\n<p>Do tej pory popularne by\u0142y dwa r\u00f3wnoleg\u0142e podej\u015bcia. Jedne z nich to u\u017cywanie Agent\u00f3w, czyli podprogram\u00f3w uruchamianych jako proces w maszynie wirtualnej. Alternatyw\u0105 by\u0142o za\u015b u\u017cycie wewn\u0119trznego wywo\u0142ania API <code>AsyncGetCallTrace<\/code>. API to umo\u017cliwia unikni\u0119cie problemu zbytniego bazowania na zak\u0142amuj\u0105cych wyniki SafePointach - miejscach w JVMie, w kt\u00f3rych stan aplikacji jest jasno zdefiniowany, poniewa\u017c aktualne zosta\u0142y wszystkie w\u0105tki. Mo\u017ce prowadzi\u0107 to do znacznego biasu i zak\u0142amania wynik\u00f3w pomiar\u00f3w. <code>AsyncGetCallTrace<\/code> daje dost\u0119p do danych wewn\u0119trznych, przez to ten problem nie wyst\u0119puje - daje ono bowiem mapowanie pomi\u0119dzy instrukcj\u0105\/ramk\u0105\/wska\u017anikiem stosu a konkretnym fragmentem StackTrace. Je\u015bli chcecie dowiedzie\u0107 si\u0119 wi\u0119cej szczeg\u00f3\u0142\u00f3w, zapraszam do tekstu <strong><a href=\"http:\/\/psy-lob-saw.blogspot.com\/2016\/02\/why-most-sampling-java-profilers-are.html\">Why (Most) Sampling Java Profilers Are Fucking Terrible<\/a><\/strong> autorstwa <a href=\"https:\/\/twitter.com\/nitsanw\">Nissana Wakarta<\/a>,<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":11973,"width":340,"height":430,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/11\/alien-god-looks-down-at-lower-beings.png\" alt=\"\" class=\"wp-image-11973\" width=\"340\" height=\"430\"\/><figcaption>O samych SafePointach rozpisywa\u0142 si\u0119 kiedy\u015b <a href=\"https:\/\/shipilev.net\/jvm\/anatomy-quarks\/22-safepoint-polls\/\">Aleksey Shipil\u00ebv<\/a>.<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/11\/alien-god-looks-down-at-lower-beings.png\" alt=\"\" class=\"wp-image-11973\" width=\"340\" height=\"430\"\/><figcaption>O samych SafePointach rozpisywa\u0142 si\u0119 kiedy\u015b <a href=\"https:\/\/shipilev.net\/jvm\/anatomy-quarks\/22-safepoint-polls\/\">Aleksey Shipil\u00ebv<\/a>.<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Z <code>AsyncGetCallTrace<\/code> jest jednak jeden problem - nie jest ono bowiem oficjaln\u0105 cz\u0119\u015b\u0107 standardu JDK. Spora cz\u0119\u015b\u0107 implementacji JDK go posiada, ale zale\u017cy to raczej od dobrej woli implementuj\u0105cych. Co r\u00f3wnie wa\u017cne: jako, \u017ce nie jest oficjalnie zdefiniowane, jego rozwijanie jest trudne bez psucia ekosystemu narz\u0119dzi. Dlatego te\u017c tw\u00f3rcy Javy postanowili i\u015b\u0107 za ciosem i wpisa\u0107 go w standard j\u0119zyka. Dodatkowo, skoro ju\u017c i tak w tym grzebiemy, postanowiono r\u00f3wnie\u017c uzupe\u0142ni\u0107 przekazywane przez metod\u0119 informacje, takie jak np. poziom kompilacji danego fragmentu kodu, jak np. czy kod by\u0142 skompilowany za pomoc\u0105 C1\/C2 czy te\u017c np. by\u0142 inlinowany. W ten spos\u00f3b powsta\u0142 <a href=\"https:\/\/openjdk.org\/jeps\/435\"><strong>JEP 435: Asynchronous Stack Trace VM API<\/strong><\/a>, maj\u0105cy na celu zaproponowanie <code>AsyncGetStackTrace API<\/code>. Ma ono by\u0107 wpisane w standard Javy, tak samo wydajne jak wcze\u015bniejsze rozwi\u0105zanie, a r\u00f3wnocze\u015bnie uzupe\u0142nione o wspomniane wy\u017cej detale.<\/p>\n","innerContent":["\n<p>Z <code>AsyncGetCallTrace<\/code> jest jednak jeden problem - nie jest ono bowiem oficjaln\u0105 cz\u0119\u015b\u0107 standardu JDK. Spora cz\u0119\u015b\u0107 implementacji JDK go posiada, ale zale\u017cy to raczej od dobrej woli implementuj\u0105cych. Co r\u00f3wnie wa\u017cne: jako, \u017ce nie jest oficjalnie zdefiniowane, jego rozwijanie jest trudne bez psucia ekosystemu narz\u0119dzi. Dlatego te\u017c tw\u00f3rcy Javy postanowili i\u015b\u0107 za ciosem i wpisa\u0107 go w standard j\u0119zyka. Dodatkowo, skoro ju\u017c i tak w tym grzebiemy, postanowiono r\u00f3wnie\u017c uzupe\u0142ni\u0107 przekazywane przez metod\u0119 informacje, takie jak np. poziom kompilacji danego fragmentu kodu, jak np. czy kod by\u0142 skompilowany za pomoc\u0105 C1\/C2 czy te\u017c np. by\u0142 inlinowany. W ten spos\u00f3b powsta\u0142 <a href=\"https:\/\/openjdk.org\/jeps\/435\"><strong>JEP 435: Asynchronous Stack Trace VM API<\/strong><\/a>, maj\u0105cy na celu zaproponowanie <code>AsyncGetStackTrace API<\/code>. Ma ono by\u0107 wpisane w standard Javy, tak samo wydajne jak wcze\u015bniejsze rozwi\u0105zanie, a r\u00f3wnocze\u015bnie uzupe\u0142nione o wspomniane wy\u017cej detale.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>A, i \u017ceby wszyscy dobrze zrozumieli - wspomniane API to cz\u0119\u015b\u0107 HotSpot VM - a wi\u0119c u\u017cywa si\u0119 go z poziomu C. W zwi\u0105zku z tym w <a href=\"https:\/\/openjdk.org\/jeps\/435\">JEP-ie<\/a> znajdziecie takie brzydkie s\u0142owa jak wska\u017aniki czy pliki nag\u0142\u00f3wkowe.<\/p>\n","innerContent":["\n<p>A, i \u017ceby wszyscy dobrze zrozumieli - wspomniane API to cz\u0119\u015b\u0107 HotSpot VM - a wi\u0119c u\u017cywa si\u0119 go z poziomu C. W zwi\u0105zku z tym w <a href=\"https:\/\/openjdk.org\/jeps\/435\">JEP-ie<\/a> znajdziecie takie brzydkie s\u0142owa jak wska\u017aniki czy pliki nag\u0142\u00f3wkowe.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":11967,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/11\/image-9.png\" alt=\"\" class=\"wp-image-11967\"\/><figcaption>Klasyczny poradnik dla programist\u00f3w Javy, kt\u00f3rzy chcieli by u\u017cy\u0107 nowego JEPa przed premier\u0105 JDK 20, w kt\u00f3rym jest spora szansa \u017ce go zobaczymy.<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/11\/image-9.png\" alt=\"\" class=\"wp-image-11967\"\/><figcaption>Klasyczny poradnik dla programist\u00f3w Javy, kt\u00f3rzy chcieli by u\u017cy\u0107 nowego JEPa przed premier\u0105 JDK 20, w kt\u00f3rym jest spora szansa \u017ce go zobaczymy.<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Dobra, to jeszcze a po co to komu, a komu to potrzebne? Tutaj wykorzystam okazj\u0119, \u017ceby podrzuci\u0107 Wam narz\u0119dzie, kt\u00f3rym jest <strong>async-profiler<\/strong>. Ten bowiem jest jednym z najpopularniejszych konsument\u00f3w wspomnianego <code>AsyncGetCallTrace API<\/code>, dzi\u0119ki czemu sta\u0142 si\u0119 jednym z kluczowych narz\u0119dzi je\u015bli chodzi o profilowanie aplikacji na JVM. To w\u0142a\u015bnie pod k\u0105tem tego typu rozwi\u0105za\u0144 stworzony zosta\u0142 opisywany tu JEP i pozwoli\u0107 ma na stworzenie odpowiedniej wydajnej abstrakcji na ich potrzeby.<\/p>\n","innerContent":["\n<p>Dobra, to jeszcze a po co to komu, a komu to potrzebne? Tutaj wykorzystam okazj\u0119, \u017ceby podrzuci\u0107 Wam narz\u0119dzie, kt\u00f3rym jest <strong>async-profiler<\/strong>. Ten bowiem jest jednym z najpopularniejszych konsument\u00f3w wspomnianego <code>AsyncGetCallTrace API<\/code>, dzi\u0119ki czemu sta\u0142 si\u0119 jednym z kluczowych narz\u0119dzi je\u015bli chodzi o profilowanie aplikacji na JVM. To w\u0142a\u015bnie pod k\u0105tem tego typu rozwi\u0105za\u0144 stworzony zosta\u0142 opisywany tu JEP i pozwoli\u0107 ma na stworzenie odpowiedniej wydajnej abstrakcji na ich potrzeby.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Je\u015bli szukacie szybkiego wprowadzenia do tematu, <a href=\"https:\/\/krzysztofslusarski.github.io\/2021\/08\/17\/cont-async.html\">post Krzysztofa \u015alusarskiego z Hazelcast<\/a> jest w sam raz dla Was. Nieco wi\u0119cej detali znajdziecie w <a href=\"https:\/\/www.baeldung.com\/java-async-profiler\"><strong>A Guide to async-profiler<\/strong> opublikowanym na Baeldung<\/a>. Je\u015bli za\u015b b\u0119dziecie chcieli podje\u015b\u0107 do tematu profilingu na powa\u017cnie, polecam <a href=\"https:\/\/www.youtube.com\/playlist?list=PLNCLTEx3B8h4Yo_WvKWdLvI9mj1XpTKBr\">trzy godzinny kurs wideo prezentuj\u0105cy narz\u0119dzie<\/a>.<\/p>\n","innerContent":["\n<p>Je\u015bli szukacie szybkiego wprowadzenia do tematu, <a href=\"https:\/\/krzysztofslusarski.github.io\/2021\/08\/17\/cont-async.html\">post Krzysztofa \u015alusarskiego z Hazelcast<\/a> jest w sam raz dla Was. Nieco wi\u0119cej detali znajdziecie w <a href=\"https:\/\/www.baeldung.com\/java-async-profiler\"><strong>A Guide to async-profiler<\/strong> opublikowanym na Baeldung<\/a>. Je\u015bli za\u015b b\u0119dziecie chcieli podje\u015b\u0107 do tematu profilingu na powa\u017cnie, polecam <a href=\"https:\/\/www.youtube.com\/playlist?list=PLNCLTEx3B8h4Yo_WvKWdLvI9mj1XpTKBr\">trzy godzinny kurs wideo prezentuj\u0105cy narz\u0119dzie<\/a>.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>I ja wiem, masa czasu, ale dla \"produktywnych i szanuj\u0105cych czas\":<\/p>\n","innerContent":["\n<p>I ja wiem, masa czasu, ale dla \"produktywnych i szanuj\u0105cych czas\":<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":11964,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/11\/image-8.png\" alt=\"\" class=\"wp-image-11964\"\/><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/11\/image-8.png\" alt=\"\" class=\"wp-image-11964\"\/><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":{"level":3},"innerBlocks":[],"innerHTML":"\n<h3>\u0179r\u00f3d\u0142a<\/h3>\n","innerContent":["\n<h3>\u0179r\u00f3d\u0142a<\/h3>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/list","attrs":[],"innerBlocks":[],"innerHTML":"\n<ul><li><a href=\"http:\/\/psy-lob-saw.blogspot.com\/2016\/02\/why-most-sampling-java-profilers-are.html\">Why (Most) Sampling Java Profilers Are Fucking Terrible<\/a><\/li><li><a href=\"https:\/\/shipilev.net\/jvm\/anatomy-quarks\/22-safepoint-polls\/\">JVM Anatomy Quark #22: Safepoint Polls<\/a><\/li><li><a href=\"https:\/\/www.baeldung.com\/java-async-profiler\">A Guide to async-profiler<\/a><\/li><li><a href=\"https:\/\/krzysztofslusarski.github.io\/2021\/08\/17\/cont-async.html\">Continuous profiling with async-profiler<\/a><\/li><li><a href=\"https:\/\/www.youtube.com\/playlist?list=PLNCLTEx3B8h4Yo_WvKWdLvI9mj1XpTKBr\">Async-profiler with Andrei Pangin. Webinar by Luxoft<\/a><\/li><\/ul>\n","innerContent":["\n<ul><li><a href=\"http:\/\/psy-lob-saw.blogspot.com\/2016\/02\/why-most-sampling-java-profilers-are.html\">Why (Most) Sampling Java Profilers Are Fucking Terrible<\/a><\/li><li><a href=\"https:\/\/shipilev.net\/jvm\/anatomy-quarks\/22-safepoint-polls\/\">JVM Anatomy Quark #22: Safepoint Polls<\/a><\/li><li><a href=\"https:\/\/www.baeldung.com\/java-async-profiler\">A Guide to async-profiler<\/a><\/li><li><a href=\"https:\/\/krzysztofslusarski.github.io\/2021\/08\/17\/cont-async.html\">Continuous profiling with async-profiler<\/a><\/li><li><a href=\"https:\/\/www.youtube.com\/playlist?list=PLNCLTEx3B8h4Yo_WvKWdLvI9mj1XpTKBr\">Async-profiler with Andrei Pangin. Webinar by Luxoft<\/a><\/li><\/ul>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2>2. Dlaczego Quarkus wycofuje si\u0119 ze standard\u00f3w MicroProfile dotycz\u0105cych observability?<\/h2>\n","innerContent":["\n<h2>2. Dlaczego Quarkus wycofuje si\u0119 ze standard\u00f3w MicroProfile dotycz\u0105cych observability?<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>By\u0142o ju\u017c o profilowaniu, kontynuuj\u0105c wi\u0119c temat \"obserwowalno\u015bci\", przygl\u0105dniemy si\u0119 tematowi JVM-owych metryk. Okazje ku temu daje nam og\u0142oszenie ze strony Quarkusa - framework bowiem postanowi\u0142 podzieli\u0107 si\u0119 ze spo\u0142eczno\u015bci\u0105 <a href=\"https:\/\/quarkus.io\/blog\/quarkus-observability-roadmap-2023\/\">swoimi planami, je\u015bli chodzi o wsparcie najbardziej znanych narz\u0119dzi do telemetrii<\/a>. Kilka decyzji jest za\u015b interesuj\u0105ce dla ka\u017cdego \u015bledz\u0105cego ekosystem bibliotek i standard\u00f3w, nawet je\u015bli nie u\u017cywaj\u0105 samego Quarkusa.<\/p>\n","innerContent":["\n<p>By\u0142o ju\u017c o profilowaniu, kontynuuj\u0105c wi\u0119c temat \"obserwowalno\u015bci\", przygl\u0105dniemy si\u0119 tematowi JVM-owych metryk. Okazje ku temu daje nam og\u0142oszenie ze strony Quarkusa - framework bowiem postanowi\u0142 podzieli\u0107 si\u0119 ze spo\u0142eczno\u015bci\u0105 <a href=\"https:\/\/quarkus.io\/blog\/quarkus-observability-roadmap-2023\/\">swoimi planami, je\u015bli chodzi o wsparcie najbardziej znanych narz\u0119dzi do telemetrii<\/a>. Kilka decyzji jest za\u015b interesuj\u0105ce dla ka\u017cdego \u015bledz\u0105cego ekosystem bibliotek i standard\u00f3w, nawet je\u015bli nie u\u017cywaj\u0105 samego Quarkusa.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Zacznijmy troch\u0119 od nakre\u015blenia horyzontu organizacyjno-spo\u0142eczno\u015bciowego. Je\u015bli chodzi o Tracing - czyli \u015bledzenia poszczeg\u00f3lnych zdarze\u0144 w ramach aplikacji - organizacj\u0105 zajmuj\u0105c\u0105 si\u0119 tworzeniem standard\u00f3w jest <strong>Cloud Native Computing Foundation<\/strong> (w skr\u00f3cie <strong>CNCF<\/strong>). Przez lata rozwijane by\u0142o kilka konkurencyjnych projekt\u00f3w, takich jak <a href=\"https:\/\/opencensus.io\/\">OpenCensus<\/a> czy <a href=\"https:\/\/opentracing.io\/\">OpenTracing<\/a>. Ten ostatni trafi\u0142 do MicroProfile jako <a href=\"https:\/\/github.com\/eclipse\/microprofile-opentracing\">MicroProfile OpenTracing API<\/a>, referencyjnej implementacji tego\u017c - <a href=\"https:\/\/github.com\/smallrye\/smallrye-opentracing\">SmallRye OpenTracing<\/a> - u\u017cywa Quarkus.<\/p>\n","innerContent":["\n<p>Zacznijmy troch\u0119 od nakre\u015blenia horyzontu organizacyjno-spo\u0142eczno\u015bciowego. Je\u015bli chodzi o Tracing - czyli \u015bledzenia poszczeg\u00f3lnych zdarze\u0144 w ramach aplikacji - organizacj\u0105 zajmuj\u0105c\u0105 si\u0119 tworzeniem standard\u00f3w jest <strong>Cloud Native Computing Foundation<\/strong> (w skr\u00f3cie <strong>CNCF<\/strong>). Przez lata rozwijane by\u0142o kilka konkurencyjnych projekt\u00f3w, takich jak <a href=\"https:\/\/opencensus.io\/\">OpenCensus<\/a> czy <a href=\"https:\/\/opentracing.io\/\">OpenTracing<\/a>. Ten ostatni trafi\u0142 do MicroProfile jako <a href=\"https:\/\/github.com\/eclipse\/microprofile-opentracing\">MicroProfile OpenTracing API<\/a>, referencyjnej implementacji tego\u017c - <a href=\"https:\/\/github.com\/smallrye\/smallrye-opentracing\">SmallRye OpenTracing<\/a> - u\u017cywa Quarkus.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>CNCF pocz\u0105tkiem roku zdecydowa\u0142 si\u0119 na <a href=\"https:\/\/www.cncf.io\/blog\/2022\/01\/31\/cncf-archives-the-opentracing-project\/\">porzucenie rozwoju OpenTracingu na rzecz OpenTelemetry<\/a>, b\u0119d\u0105cego nieco szerszym projektem, przez co <strong>MicroProfile OpenTracing API<\/strong> oberwa\u0142o rykoszetem i r\u00f3wnie\u017c przestanie by\u0107 wspierane. Na jego miejsce powsta\u0142o <strong><a href=\"https:\/\/github.com\/eclipse\/microprofile-telemetry\">MicroProfile Telemetry Tracing<\/a><\/strong>, implementuj\u0105ce standard Tracingu pochodz\u0105cy OpenTelemetry. Trafi ono do nadchodz\u0105cego MicroProfile 6.0 i to w\u0142a\u015bnie ono b\u0119dzie w przysz\u0142o\u015bci u\u017cywane przez Quarkusa. Oznacza to, \u017ce wszystkich u\u017cytkownik\u00f3w MP OpenTracing czeka migracja, oba standardy nie s\u0105 bowiem ze sob\u0105 w pe\u0142ni kompatybilne. <\/p>\n","innerContent":["\n<p>CNCF pocz\u0105tkiem roku zdecydowa\u0142 si\u0119 na <a href=\"https:\/\/www.cncf.io\/blog\/2022\/01\/31\/cncf-archives-the-opentracing-project\/\">porzucenie rozwoju OpenTracingu na rzecz OpenTelemetry<\/a>, b\u0119d\u0105cego nieco szerszym projektem, przez co <strong>MicroProfile OpenTracing API<\/strong> oberwa\u0142o rykoszetem i r\u00f3wnie\u017c przestanie by\u0107 wspierane. Na jego miejsce powsta\u0142o <strong><a href=\"https:\/\/github.com\/eclipse\/microprofile-telemetry\">MicroProfile Telemetry Tracing<\/a><\/strong>, implementuj\u0105ce standard Tracingu pochodz\u0105cy OpenTelemetry. Trafi ono do nadchodz\u0105cego MicroProfile 6.0 i to w\u0142a\u015bnie ono b\u0119dzie w przysz\u0142o\u015bci u\u017cywane przez Quarkusa. Oznacza to, \u017ce wszystkich u\u017cytkownik\u00f3w MP OpenTracing czeka migracja, oba standardy nie s\u0105 bowiem ze sob\u0105 w pe\u0142ni kompatybilne. <\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":11958,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/11\/bill-nye-party-horn.gif\" alt=\"\" class=\"wp-image-11958\"\/><figcaption>Yeah! Rozw\u00f3j!<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/11\/bill-nye-party-horn.gif\" alt=\"\" class=\"wp-image-11958\"\/><figcaption>Yeah! Rozw\u00f3j!<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>To jednak nie koniec je\u015bli chodzi o poszerzenie zakresu wsp\u00f3\u0142pracy mi\u0119dzy Quarkusem, a OpenTelemetry. Okazuje si\u0119 bowiem, \u017ce framework postanowi\u0142 porzuci\u0107 wsparcie dla <a href=\"https:\/\/github.com\/eclipse\/microprofile-metrics\">MicroProfile Metrics API<\/a>, standardu metryk rozwijanego w ramach sam MicroProfile. Zamiast tego przysz\u0142e wersje Quarkusa u\u017cywa\u0107 b\u0119d\u0105 <a href=\"https:\/\/micrometer.io\/\">Micrometer<\/a>, podobnej w swojej naturze do SLF4J fasady umo\u017cliwiaj\u0105cej prac\u0119 z wieloma systemami metryk. Kluczowym dla podj\u0119cia takiej decyzji jest rych\u0142a stabilizacja <a href=\"https:\/\/opentelemetry.io\/docs\/reference\/specification\/metrics\/\">OpenTelemetry Metrics<\/a> - czyli komplementarnego dla OpenTelemetry Tracing standardu metryk - kt\u00f3ry przez Micrometer jest wspierany. W zwi\u0105zku z tym przerwane zostan\u0105 prace nad rozwojem quarkusowym rozszerzeniem dla SmallRye Metrics, referencyjnej implementacji standardu pochodz\u0105cego z MicroProfile.<\/p>\n","innerContent":["\n<p>To jednak nie koniec je\u015bli chodzi o poszerzenie zakresu wsp\u00f3\u0142pracy mi\u0119dzy Quarkusem, a OpenTelemetry. Okazuje si\u0119 bowiem, \u017ce framework postanowi\u0142 porzuci\u0107 wsparcie dla <a href=\"https:\/\/github.com\/eclipse\/microprofile-metrics\">MicroProfile Metrics API<\/a>, standardu metryk rozwijanego w ramach sam MicroProfile. Zamiast tego przysz\u0142e wersje Quarkusa u\u017cywa\u0107 b\u0119d\u0105 <a href=\"https:\/\/micrometer.io\/\">Micrometer<\/a>, podobnej w swojej naturze do SLF4J fasady umo\u017cliwiaj\u0105cej prac\u0119 z wieloma systemami metryk. Kluczowym dla podj\u0119cia takiej decyzji jest rych\u0142a stabilizacja <a href=\"https:\/\/opentelemetry.io\/docs\/reference\/specification\/metrics\/\">OpenTelemetry Metrics<\/a> - czyli komplementarnego dla OpenTelemetry Tracing standardu metryk - kt\u00f3ry przez Micrometer jest wspierany. W zwi\u0105zku z tym przerwane zostan\u0105 prace nad rozwojem quarkusowym rozszerzeniem dla SmallRye Metrics, referencyjnej implementacji standardu pochodz\u0105cego z MicroProfile.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Ca\u0142o\u015b\u0107 sytuacji ka\u017ce nam przemy\u015ble\u0107, jak rozumiemy standardy w dzisiejszym ekosystemie programistycznym. Stajemy bowiem przed interesuj\u0105cym problemem - co je\u015bli standard Javowy (a za taki ju\u017c chyba mo\u017cna uzna\u0107 MicroProfile) nie implementuje og\u00f3lnego standardu rynkowego, takiego jak OpenTelemetry Metrics? Jak w takiej sytuacji powinny zachowa\u0107 si\u0119 frameworki? Ja z mojej perspektywy popieram decyzje tego Quarkusa - OpenTelemetry w tej chwili ma wsparcie w wi\u0119kszej ilo\u015bci ekosystem\u00f3w, przez co zar\u00f3wno dostawcy chmurowi, jak i tw\u00f3rcy narz\u0119dzi maj\u0105 wi\u0119ksz\u0105 motywacj\u0119 do wspierania go out-of-the-box. W praktyce oznacza to wi\u0119c mniejsze obci\u0105\u017cenie programist\u00f3w powtarzalnym, infrastrukturalnym plumbingiem. Z drugiej jednak strony, troch\u0119 staje to w kontrze do obietnic takich projekt\u00f3w jak MicroProfile z ich wsp\u00f3lnym API standardem implementowanym w r\u00f3\u017cny spos\u00f3b przez poszczeg\u00f3lnych vendor\u00f3w.<\/p>\n","innerContent":["\n<p>Ca\u0142o\u015b\u0107 sytuacji ka\u017ce nam przemy\u015ble\u0107, jak rozumiemy standardy w dzisiejszym ekosystemie programistycznym. Stajemy bowiem przed interesuj\u0105cym problemem - co je\u015bli standard Javowy (a za taki ju\u017c chyba mo\u017cna uzna\u0107 MicroProfile) nie implementuje og\u00f3lnego standardu rynkowego, takiego jak OpenTelemetry Metrics? Jak w takiej sytuacji powinny zachowa\u0107 si\u0119 frameworki? Ja z mojej perspektywy popieram decyzje tego Quarkusa - OpenTelemetry w tej chwili ma wsparcie w wi\u0119kszej ilo\u015bci ekosystem\u00f3w, przez co zar\u00f3wno dostawcy chmurowi, jak i tw\u00f3rcy narz\u0119dzi maj\u0105 wi\u0119ksz\u0105 motywacj\u0119 do wspierania go out-of-the-box. W praktyce oznacza to wi\u0119c mniejsze obci\u0105\u017cenie programist\u00f3w powtarzalnym, infrastrukturalnym plumbingiem. Z drugiej jednak strony, troch\u0119 staje to w kontrze do obietnic takich projekt\u00f3w jak MicroProfile z ich wsp\u00f3lnym API standardem implementowanym w r\u00f3\u017cny spos\u00f3b przez poszczeg\u00f3lnych vendor\u00f3w.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Tak naprawd\u0119 najlepszym rozwi\u0105zaniem by\u0142oby, \u017ce je\u015bli ju\u017c powiedzia\u0142o si\u0119 A, tworz\u0105c MP Telemetry Tracing, to powinno powsta\u0107 MP Telemetry Metrics. Rozumiem jednak, \u017ce zbytnie rozdmuchanie ilo\u015b\u0107 konkurencyjnych API w pojedynczym standardzie te\u017c nikomu nie s\u0142u\u017cy. Udowadnia to, \u017ce standaryzacja jest \u017cmudnym i wyboistym procesem.<\/p>\n","innerContent":["\n<p>Tak naprawd\u0119 najlepszym rozwi\u0105zaniem by\u0142oby, \u017ce je\u015bli ju\u017c powiedzia\u0142o si\u0119 A, tworz\u0105c MP Telemetry Tracing, to powinno powsta\u0107 MP Telemetry Metrics. Rozumiem jednak, \u017ce zbytnie rozdmuchanie ilo\u015b\u0107 konkurencyjnych API w pojedynczym standardzie te\u017c nikomu nie s\u0142u\u017cy. Udowadnia to, \u017ce standaryzacja jest \u017cmudnym i wyboistym procesem.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":11956,"width":500,"height":284,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/11\/image-6.png\" alt=\"\" class=\"wp-image-11956\" width=\"500\" height=\"284\"\/><figcaption>Obowi\u0105zkowy klasyk XKCD na koniec, bo przecie\u017c nie mog\u0142o by\u0107 inaczej.<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/11\/image-6.png\" alt=\"\" class=\"wp-image-11956\" width=\"500\" height=\"284\"\/><figcaption>Obowi\u0105zkowy klasyk XKCD na koniec, bo przecie\u017c nie mog\u0142o by\u0107 inaczej.<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":{"level":3},"innerBlocks":[],"innerHTML":"\n<h3>\u0179r\u00f3d\u0142a<\/h3>\n","innerContent":["\n<h3>\u0179r\u00f3d\u0142a<\/h3>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/list","attrs":[],"innerBlocks":[],"innerHTML":"\n<ul><li><a href=\"https:\/\/quarkus.io\/blog\/quarkus-observability-roadmap-2023\">Quarkus Observability Roadmap 2023<\/a><\/li><li><a href=\"https:\/\/www.cncf.io\/blog\/2022\/01\/31\/cncf-archives-the-opentracing-project\/\">CNCF Archives the OpenTracing Project<\/a><\/li><\/ul>\n","innerContent":["\n<ul><li><a href=\"https:\/\/quarkus.io\/blog\/quarkus-observability-roadmap-2023\">Quarkus Observability Roadmap 2023<\/a><\/li><li><a href=\"https:\/\/www.cncf.io\/blog\/2022\/01\/31\/cncf-archives-the-opentracing-project\/\">CNCF Archives the OpenTracing Project<\/a><\/li><\/ul>\n"]}],"_links":{"self":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/11951","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/comments?post=11951"}],"version-history":[{"count":18,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/11951\/revisions"}],"predecessor-version":[{"id":11987,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/11951\/revisions\/11987"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media\/11983"}],"wp:attachment":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media?parent=11951"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/categories?post=11951"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/tags?post=11951"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}