Рубрики
Без рубрики

Новая реликвия, Программируемость и открытый исходный код

Чарльз Хамбл для New Relic, в то время как New Relic участвовал в различных проектах с открытым исходным кодом… Помечено как новая реликвия, открытый исходный код, наблюдаемость, java.

Чарльз Хамбл для Новой реликвии

В то время как New Relic уже некоторое время участвует в различных проектах с открытым исходным кодом, в последние месяцы этим усилиям уделяется повышенное внимание, поскольку компания предприняла согласованные усилия по внедрению открытого исходного кода и сделала платформу New Relic One программируемой . Недавно запущенный предназначен для того, чтобы разработчики могли открывать, использовать и вносить свой вклад в проекты с открытым исходным кодом, поддерживаемые и поддерживаемые поставщиком. Области, охватываемые проектами, включают инструментарий, сторонние интеграции, пользовательские приложения, шаблоны инструментов и примеры кода.

Среди примерно 180 проектов вы найдете исходный код для большого количества пакетов Nerd, доступных в каталоге приложений на New Relic One. Они предоставляют рабочие, полезные примеры программных возможностей платформы. Пакеты Nerd – это приложения Webpack , которые используют GraphQL для взаимодействия с данными, доступными в New Relic, и Реагируют компоненты для визуализации и другого пользовательского интерфейса. Это те же инструменты, которые разработчики New Relic используют для создания самой платформы.

Примеры пакетов Nerd включают Cloud Optimize , который оценивает размер и использование ваших облачных экземпляров AWS, GCP и Azure и показывает сумму денег, которую вы могли бы сэкономить, выбрав правильный размер; Обозреватель контейнеров , который дает вам глобальное представление всех контейнеров, связанных с учетной записью; и (вверху) [ https://opensource.newrelic.com/projects/newrelic/nr1-top ], простой монитор процессов, вдохновленный командой Unix top:

Также доступен исходный код для самого веб-сайта с открытым исходным кодом New Relic, созданного с использованием Gatsby .

Кроме того, вы можете найти ряд библиотек, в том числе GraphQL Java Core , который предоставляет помощники для интеграции (graphql-java) [ https://github.com/graphql-java/graphql-java ] с приложением JVM, упрощающим сопоставление входных данных и настройку схемы. Бен Эванс , Главный инженер и архитектор технологий JVM в New Relic , объяснил , что

Мы используем GraphQL в качестве ключевой технологии “склеивания”, где схема действует как определение интерфейса и контракт между серверной частью и интерфейсной частью (и поскольку у нас есть возможности программирования, клиенты могут использовать один и тот же контракт для создания собственных расширенных интерфейсов, если они хотят).

Это означает, что мы вполне естественно попадаем в мировоззрение “сначала схема”, где мы хотим позволить командам писать схему, а затем автоматически генерировать ее на основе этой схемы, а не добавлять аннотации Java к уже существующим службам… Конечно, подход, основанный на схеме, может работать не для всех, но он работает для нас, поэтому мы решили поделиться теми элементами, которые позволяют это сделать.

Есть три крупных общественных проекта, которые New Relic не проводит, но в которые она вносит свой вклад. Первый – это стандарт Открытой телеметрии , который в настоящее время разрабатывается совместно с CNCF. Этот проект, созданный в результате слияния Open Tracking и Open Census, представляет собой проект нескольких поставщиков, предоставляющий единый набор API, библиотек, агентов и служб сбора данных для сбора распределенных трассировок и показателей из вашего приложения. New Relic вносит свой вклад, определяя спецификации, реализуя части спецификации в языковых SDK, рассматривая запросы на извлечение от других участников и выступая в качестве сопровождающего в различных подпроектах OpenTelemetry. В компании работают два штатных инженера, работающих над проектом – Джон Уотсон является сопровождающим Java, а Тайлер Ян является сопровождающим Go. Джон также очень активен в проекте Гиттер .

Во-вторых, New Relic является участником Рабочей группы W3C по распределенному отслеживанию . Проект W3C тесно связан с открытой телеметрией, которая поддерживает новый стандарт W3C в качестве одного из доступных вариантов распространения контекста. Как написал Алоис Рейтбауэр в объяснении о подпроекте W3C TraceContext

Спецификация контекста трассировки W3C представляет собой набор новых стандартов, разрабатываемых поставщиками инструментов с открытым исходным кодом и коммерческими инструментами, которые определяют единый подход к корреляции контекста и событий в распределенных системах, таких как среды микросервисов. Наличие такого стандарта позволит осуществлять сквозное отслеживание транзакций в распределенных приложениях с помощью целого ряда инструментов мониторинга.

Третье усилие сообщества – AdoptOpenJDK ((((скоро перееду в Фонд Eclipse и переименую Eclipse Adoptium ). AdoptOpenJDK стартовал в 2017 году как программа пропаганды и внедрения OpenJDK (проект OSS, лежащий в основе самой Java), но с тех пор переключил свои усилия на обеспечение долгосрочной стабильной платформы сборки для OpenJDK. New Relic является Серебряным спонсором, в проекте задействовано около пяти инженеров. Эванс объяснил, что участие New Relic произошло после того, как Oracle изменила условия, на которых они распространяют свои двоичные файлы Java.

Мы решили, что будем использовать ту же частоту обновления, что и наши клиенты, и это означало, что мы будем придерживаться версий LTS Java. В свою очередь, это означало выбор поставщика в качестве нашего поставщика двоичных файлов Java с открытым исходным кодом.

Adopt OpenJDK предлагает бесплатные высококачественные двоичные файлы – и они ориентированы на двоичные файлы, а не на внесение вклада в исходный код. После Oracle AdoptOpenJDK является выдающимся дистрибутивом, который, как мы видим, используют наши клиенты, поэтому было легко сделать их нашим поставщиком.

Решение принять участие на техническом уровне было принято из-за слияния: а) инженеров New Relic, которые хотели проводить больше времени, работая над программным обеспечением с открытым исходным кодом, и б) Технические усилия в рамках AdoptOpenJDK, имеющие отношение к Новой реликвии. Наши сервисы и бэкэнд в значительной степени основаны на Java и Kotlin, поэтому мы стратегически заинтересованы в успехе проекта. Так что на одном уровне это не сложнее, чем знакомая мантра с открытым исходным кодом: “Внесите свой вклад в то, что для вас важно”.

С точки зрения того, какой вклад New Relic вносит в проект, Эванс сказал мне тот

Поскольку New Relic – компания, занимающаяся наблюдательностью, вероятно, неудивительно, что нас интересует все, что пересекается с нашим бизнесом. Итак, нас интересуют такие вещи, как Java Flight Recorder (JFR) и инновации в области удобства обслуживания. Мы также очень заинтересованы в повышении производительности и предотвращении регрессий – как для клиентов, так и для наших собственных высокопроизводительных сервисов.

Например, когда мы перешли на использование AdoptOpenJDK в прошлом году, у нас была программа отслеживания и полного расследования всех регрессий производительности, о которых сообщалось при переходе с Oracle на OpenJDK. Исходя из наших знаний о том, как работает проект OpenJDK, мы были в основном уверены, что любые регрессии должны быть ложноположительными, но наш подход был в значительной степени “Доверяй, но проверяй”. Как вы могли надеяться, мы смогли доказать, что все отчеты были ложноположительными и не было никаких реальных регрессий, вызванных обновлением до OpenJDK.

Это не очень яркий пример, но иногда создание более совершенного программного обеспечения требует детальной, тщательной работы. Разработчикам и командам при обновлении нужна уверенность в том, что их системы не будут ломаться или регрессировать незаметным образом. Мы рады внести свою лепту, чтобы помочь обеспечить такую уверенность нашим клиентам, нам самим и всему сообществу.

Оригинал: “https://dev.to/newrelic/new-relic-programmability-and-open-source-4c16”