<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Natalie A. Wiser</title>
    <description>The latest articles on DEV Community by Natalie A. Wiser (@natalieawiser).</description>
    <link>https://dev.to/natalieawiser</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F412614%2Fe9445ac9-ac07-442e-92b6-bbf09a349523.jpg</url>
      <title>DEV Community: Natalie A. Wiser</title>
      <link>https://dev.to/natalieawiser</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/natalieawiser"/>
    <language>en</language>
    <item>
      <title>New Relic, Programmability and Open Source</title>
      <dc:creator>Natalie A. Wiser</dc:creator>
      <pubDate>Tue, 21 Jul 2020 18:16:29 +0000</pubDate>
      <link>https://dev.to/newrelic/new-relic-programmability-and-open-source-4c16</link>
      <guid>https://dev.to/newrelic/new-relic-programmability-and-open-source-4c16</guid>
      <description>&lt;h4&gt;
  
  
  &lt;em&gt;Charles Humble for New Relic&lt;/em&gt;
&lt;/h4&gt;

&lt;p&gt;While New Relic has been involved in various open-source projects for some time, these efforts have received increased focus in recent months, as the company has made a concerted push into open source and &lt;a href="https://blog.newrelic.com/product-news/new-relic-one-applications/"&gt;made the New Relic One platform programmable&lt;/a&gt;. The recently launched  is intended to act as a hub for developers to discover, use, and contribute to the open-source projects maintained and supported by the vendor. Areas the projects cover include instrumentation, third-party integrations, custom apps, tooling templates and example code.&lt;/p&gt;

&lt;p&gt;Among the approximately 180 projects, you’ll find the source code for a large number of the Nerdpacks available through the application catalogue on New Relic One. These provide working, usable examples of the programmatic capabilities of the platform. Nerdpacks are &lt;a href="https://webpack.js.org/"&gt;Webpack&lt;/a&gt; applications that use &lt;a href="https://graphql.org/"&gt;GraphQL&lt;/a&gt; to interact with the data available in New Relic, and &lt;a href="https://reactjs.org/"&gt;React&lt;/a&gt; components for visualization and other UI. These are the same tools that New Relic’s developers use to build the platform itself.&lt;/p&gt;

&lt;p&gt;Examples of Nerdpacks include &lt;a href="https://opensource.newrelic.com/projects/newrelic/nr1-cloud-optimize"&gt;Cloud Optimize&lt;/a&gt;, which evaluates the size and utilization of your AWS, GCP and Azure cloud instances and shows the amount of money you could save by right-sizing; &lt;a href="https://opensource.newrelic.com/projects/newrelic/nr1-container-explorer"&gt;Container Explorer&lt;/a&gt;, which gives you a global view of all containers associated with an account; and (Top)[&lt;a href="https://opensource.newrelic.com/projects/newrelic/nr1-top"&gt;https://opensource.newrelic.com/projects/newrelic/nr1-top&lt;/a&gt;], a simple process monitor inspired by the Unix top command:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LTCqD76i--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/2k7o7minik492qaq43ay.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LTCqD76i--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/2k7o7minik492qaq43ay.png" alt="Alt Text" width="880" height="488"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://opensource.newrelic.com/projects/newrelic/opensource-website"&gt;source&lt;/a&gt; for the New Relic open-source website itself, built using &lt;a href="https://www.gatsbyjs.org/"&gt;Gatsby&lt;/a&gt;, is also available.&lt;/p&gt;

&lt;p&gt;In addition, you can find a number of libraries, including &lt;a href="https://opensource.newrelic.com/projects/newrelic/newrelic-graphql-java-core"&gt;GraphQL Java Core&lt;/a&gt;, which provides helpers for integrating (graphql-java)[&lt;a href="https://github.com/graphql-java/graphql-java"&gt;https://github.com/graphql-java/graphql-java&lt;/a&gt;] with a JVM application, simplifying input mapping and schema configuration. &lt;a href="https://github.com/kittylyst"&gt;Ben Evans&lt;/a&gt;, Principal Engineer &amp;amp; JVM Technologies Architect at New Relic, explained that&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;We use GraphQL as a key "glue" technology - where the schema acts as an interface definition and a contract between the back end and front end (and because we have programmability capability customers can use the same contract to build their own rich front ends if they want).&lt;/p&gt;

&lt;p&gt;This means we quite naturally fall into the "schema first" view of the world - where we want to enable teams to write the schema and then auto-generate based upon that schema, rather than adding Java annotations to pre-existing services... Of course, the schema-first approach may not work for everyone - but it works for us so we thought we'd share those pieces that enable it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There are three major community-led projects that New Relic doesn’t host, but to which it contributes. The first is the &lt;a href="https://opentelemetry.io/"&gt;OpenTelemetry&lt;/a&gt; standard, currently incubating with the CNCF. This project, formed through a merger of OpenTracing and OpenCensus, is a multi-vendor effort that provides a single set of APIs, libraries, agents, and collector services to capture distributed traces and metrics from your application. New Relic contributes by defining specifications, implementing parts of the specification in language SDKs, reviewing pull requests from other contributors, and serving as a maintainer in the various OpenTelemetry sub projects. The company has two full-time engineers working on the project - &lt;a href="https://github.com/jkwatson"&gt;John Watson&lt;/a&gt; is a Java maintainer, and &lt;a href="https://github.com/MrAlias"&gt;Tyler Yahn&lt;/a&gt; is a Go maintainer. John is also highly active on the project’s &lt;a href="https://gitter.im/open-telemetry/community"&gt;Gitter&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Secondly, New Relic is a participant in the &lt;a href="https://www.w3.org/2018/distributed-tracing/"&gt;W3C Distributed Tracing Working Group&lt;/a&gt;. The W3C project is closely linked to OpenTelemetry, which supports the emerging W3C standard as one of the available options for context propagation. As Alois Reitbauer has written in an &lt;a href="https://medium.com/@AloisReitbauer/trace-context-and-the-road-toward-trace-tool-interoperability-d4d56932369c"&gt;explainer about the W3C Trace Context sub-project&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The W3C Trace Context specification is a set of new standards being developed by open source and commercial tool providers that defines a unified approach to context and event correlation within distributed systems, such as microservices environments. Having such a standard will enable end-to-end transaction tracing within distributed applications across a range of monitoring tools.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The third community effort is &lt;a href="https://www.infoq.com/news/2020/06/adoptopenjdk-eclipse-adoptium/"&gt;AdoptOpenJDK&lt;/a&gt; (soon to be moving to the Eclipse Foundation and renamed &lt;a href="https://adoptopenjdk.net/"&gt;Eclipse Adoptium&lt;/a&gt;). AdoptOpenJDK started in 2017 as an advocacy and on-boarding program for OpenJDK (the OSS project behind Java itself), but has since shifted its efforts to providing a long-term, stable build platform for OpenJDK. New Relic is a Silver Sponsor, with a pool of around five engineers involved in the project. New Relic's involvement came about, Evans explained, after Oracle changed the terms under which they distribute their Java binaries.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;We decided that we would adopt the same upgrade cadence as we see our customers using and that meant sticking with LTS Java releases. In turn, that meant choosing a vendor to be our supplier for open-source Java binaries.&lt;/p&gt;

&lt;p&gt;AdoptOpenJDK offers free, high quality binaries - and they are focused on the binaries, not on making source code contributions. After Oracle, AdoptOpenJDK is the stand-out distribution that we see our customers using, so it was an easy choice to make them our supplier as well.&lt;/p&gt;

&lt;p&gt;The decision to get involved on a technical level came about due to a confluence of: a) New Relic engineers who wanted to spend more time working on open-source software and b) Technical efforts within AdoptOpenJDK that are relevant to New Relic. Our services and backend is pretty much all Java and Kotlin so we have a key strategic interest in the success of the project. So at one level it's no more complicated than the familiar: "Contribute to what matters to you" mantra of open source.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In terms of what New Relic contributes to the project Evans told me that&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;As New Relic is an Observability company, it's probably no surprise that we're interested in anything that intersects our business. So, we're interested in things like Java Flight Recorder (JFR) and innovations in serviceability. We are also very interested in performance improvements and avoiding regressions - both for customers and for our own high-performance services.&lt;/p&gt;

&lt;p&gt;For example, when we transitioned to using AdoptOpenJDK last year, we had a programme of chasing down and fully investigating every performance regression that was reported when moving from Oracle to OpenJDK. From our knowledge of how the OpenJDK project works we were basically sure that any regressions should be false positives, but our approach was very much "Trust But Verify". As you might hope, we were able to prove that all the reports were false positives and there were no real regressions caused by the upgrade to OpenJDK.&lt;/p&gt;

&lt;p&gt;It's not a very glamorous example, but sometimes making more perfect software requires detailed, meticulous work. Developers and teams need the confidence when upgrading that their systems won't break or regress in subtle ways. We're happy to do our bit to help provide that confidence for our customers, ourselves, and the whole community.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>newrelic</category>
      <category>opensource</category>
      <category>observability</category>
      <category>java</category>
    </item>
    <item>
      <title>Connecting to New Relic with Open-Source Software</title>
      <dc:creator>Natalie A. Wiser</dc:creator>
      <pubDate>Mon, 13 Jul 2020 18:33:47 +0000</pubDate>
      <link>https://dev.to/newrelic/connecting-to-new-relic-with-open-source-software-173d</link>
      <guid>https://dev.to/newrelic/connecting-to-new-relic-with-open-source-software-173d</guid>
      <description>&lt;h4&gt;
  
  
  &lt;em&gt;Written by Charles Humble for New Relic&lt;/em&gt;
&lt;/h4&gt;

&lt;p&gt;New Relic offers a variety of mechanisms by which you can gather telemetry data from open-source software and send it back to &lt;a href="https://newrelic.com/platform/programmability"&gt;New Relic One&lt;/a&gt; for analysis.&lt;/p&gt;

&lt;p&gt;New Relic’s various agents include built-in instrumentation for many popular parts of their respective ecosystems. The &lt;a href="https://docs.newrelic.com/docs/agents/java-agent"&gt;Java Agent&lt;/a&gt;, for instance, includes built-in instrumentation for many open-source libraries and frameworks such as Grails, Hibernate, Hystrix, Play, the Spring Framework, Spring Boot, Thrift, and Vert.x. Likewise, the &lt;a href="https://docs.newrelic.com/docs/agents/nodejs-agent"&gt;node.js agent&lt;/a&gt; includes telemetry for Express, Restify, Connect, Hapi and Kora, while the &lt;a href="https://docs.newrelic.com/docs/agents/net-agent"&gt;.NET agent&lt;/a&gt; supports both .NET Framework and .NET Core, and so on.&lt;/p&gt;

&lt;p&gt;New Relic also offers a number of additional integrations for many popular open-source applications and frameworks including Elasticsearch, Consul, MongoDB, PostgreSQL, RabbitMQ, Memcached, Apache, Kafka and more. The source for these integrations is available on the New Relic GitHub and they are licensed under the MIT license. The information captured by them is often extensive: for Kafka, for example, data is collected on brokers (both ZooKeeper and Bootstrap), producers, consumers, and topics.&lt;/p&gt;

&lt;p&gt;In many cases, therefore, you will probably find the built-in instrumentation gives you all the information you need. However, if you find that it doesn't, then you also have the option of building custom integrations using the New Relic telemetry SDKs. These are open-source, language-specific libraries for reporting metrics, trace data, and other telemetry data to New Relic, and are available for &lt;a href="https://github.com/newrelic/newrelic-telemetry-sdk-java"&gt;Java&lt;/a&gt;, &lt;a href="https://github.com/newrelic/newrelic-telemetry-sdk-node"&gt;Node/TypeScript&lt;/a&gt;, &lt;a href="https://github.com/newrelic/newrelic-telemetry-sdk-python"&gt;Python&lt;/a&gt;, &lt;a href="https://github.com/newrelic/newrelic-telemetry-sdk-go"&gt;Go&lt;/a&gt; and &lt;a href="https://github.com/newrelic/newrelic-telemetry-sdk-dotnet"&gt;.NET&lt;/a&gt; via &lt;a href="https://github.com/newrelic"&gt;New Relic's GitHub&lt;/a&gt;. The .NET SDK is also available as a &lt;a href="https://www.nuget.org/packages/NewRelic.Telemetry"&gt;NuGet package&lt;/a&gt;. They are licensed under the Apache v.2 license.&lt;/p&gt;

&lt;p&gt;A final, new option to consider is the &lt;a href="https://opentelemetry.io/"&gt;OpenTelemetry&lt;/a&gt; project that started from a merger of OpenTracing and OpenCensus and is currently incubating at the &lt;a href="https://www.cncf.io/"&gt;Cloud Native Computing Foundation (CNCF)&lt;/a&gt;. This project is in beta, and therefore not yet recommended for production use, but it is particularly interesting since it represents a vendor-neutral standard for gathering telemetry data. As John Watson and Lavanya Chockalingam have &lt;a href="https://blog.newrelic.com/product-news/what-is-opentelemetry/"&gt;commented&lt;/a&gt;, OpenTelemetry thereby offers a means of future-proofing your instrumentation. It also, they write, provides a number of benefits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Simplified choice&lt;/strong&gt;. You don’t need to decide between one standard or the other. Are you currently using OpenTracing or OpenCensus? Don’t worry, OpenTelemetry offers backward compatibility for both projects.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cross-platform&lt;/strong&gt;. OpenTelemetry supports a variety of languages and back ends. It represents a vendor-neutral path to capturing and transmitting telemetry to back ends without altering existing instrumentation. This is an important project that satisfies developers looking for this kind of freedom.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Streamlined observability&lt;/strong&gt;. As OpenTelemetry puts it, "Effective observability requires high-quality telemetry." Expect to see more vendors move toward OpenTelemetry, as it’s far easier to accommodate and test against a single standard.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Equally important, OpenTelemetry means that you are not locked in to a single vendor’s agent for collecting telemetry data.&lt;/p&gt;

&lt;p&gt;New Relic is contributing to the project and is currently shipping open-source exporters for &lt;a href="https://github.com/newrelic/opentelemetry-exporter-java"&gt;Java&lt;/a&gt; and &lt;a href="https://github.com/newrelic/opentelemetry-exporter-go"&gt;Go&lt;/a&gt; that can send OpenTelemetry data back to New Relic One.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>newrelic</category>
      <category>opentelemetry</category>
      <category>observability</category>
    </item>
  </channel>
</rss>
