Слияние OpenTracing и OpenCensus: путь к конвергенции +10



Авторы: Тед Янг, Притам Шах и «Комитет технических спецификаций» (Карлос Альберто, Богдан Друту, Сергей Канжелев и Юрий Шкуро).


Совместный проект обзавелся названием: http://opentelemetry.io


Очень, очень коротко:


  • Мы создаем новый унифицированный набор библиотек и спецификаций для возможности наблюдения за телеметрией. Он объединит проекты OpenTracing и OpenCensus, а также предоставит поддерживаемый способ для миграции.
  • Эталонная реализация на Java будет доступна 24 апреля, работа над реализациями на других языках начнется в полной мере с 8 мая 2019 года. Ознакомиться с графиком можно здесь.
  • К сентябрю 2019 года запланирован паритет с существующими проектами для C#, Golang, Java, NodeJS и Python. Нас ждет уйма работы, но мы справимся, если будем работать параллельно. Если вы заинтересованы в участии в этом проекте, пожалуйста, зарегистрируйтесь и сообщите нам, как бы вы хотели посодействовать.
  • Когда реализация на каждом языке станет зрелой, соответствующие проекты OpenTracing и OpenCensus будут закрыты. Это означает заморозку старых проектов, а новый проект продолжит поддерживать существующий инструментарий в течение двух лет, используя обратную совместимость.

Обзор проекта



Мы проводим слияние! Наивысшая цель — собрать проекты OpenTracing и OpenCensus в один общий проект.
Ядро нового проекта будет набором чистых и продуманных интерфейсов, включая традиционную сборку библиотек, реализующих эти интерфейсы в виде т.н. SDK. Вишенкой на торте будут рекомендованные стандарты для данных и проводных протоколов, включая общие части инфраструктуры.
Результатом будет полноценная телеметрическая система, подходящая для мониторинга микросервисов и других типов современных распределенных систем, совместимая с большинством основных OSS и коммерческих базовых программ.


Основные события


24.04 — Эталонный кандидат предоставлен к обзору.
8.05 — Формируется команда, приступающая к работе на всех языках.
20.05 — Официальный запуск проекта на Kubecon Barcelona.
6.09 — Реализации на C#, Golang, Java, NodeJS и Python достигают паритета с аналогами.
6.11 — Официальное завершение проектов OpenTracing и OpenCensus.
20.11 — Прощальная вечеринка в честь завершения проектов на Observability Summit, Kubecon San Diego.


Хронология конвергенции



Миграция для каждого языка включает сборку SDK, готового к промышленному внедрению, инструментарий для популярных библиотек, документацию, CI, средства обратной совместимости и закрытие связанных проектов OpenCensus и OpenTracing ("закат"). Мы поставили амбициозную цель на сентябрь 2019 года — достижение паритета для языков C#, Golang, Java, NodeJS и Python. Мы будем сдвигать дату "заката" до тех пор, пока все языки не будут готовы. Но предпочтительнее избежать этого.
При просмотре целей, пожалуйста, подумайте о своем личном участии, сообщите нам об этом, заполнив форму регистрации, или поздоровавшись в чатах Gitter проектов OpenTracing и OpenCensus. Просмотреть график в виде инфографики можно здесь.


Цель: первый черновой вариант межъязыковой спецификации (завершение к 8 мая)


Важно работать сплоченно, даже при параллельной работе на разных языках. Межъязыковая спецификация обеспечивает руководство для проекта. Звучит прозаически, но это гарантия поддержки целостной системы, которая кажется знакомой независимо от языка программирования.


Обязательные требования для первого черновика спецификации для языка Х:


  • Определения общей терминологии.
  • Модель для описания распределенных транзакций, статистики и метрик.
  • Разъяснения по важным вопросам, возникшим в ходе реализации.

Эта цель блокирует остальные работы, первый черновик должен быть завершен к 8 мая.


Цель: первый черновик для спецификации данных (завершение к 6 июля)


Спецификация данных определяет общий формат данных для трассировок и метрик, поэтому данные, экспортируемые всеми процессами, могут обрабатываться одной и той же телеметрической инфраструктурой независимо от процесса генерации данных. Сюда включена схема данных для модели трассировки, описанная в межъязыковой спецификации. Также включены определения метаданных для общих операций, которыми трассировка пользуется для захвата: к примеру, HTTP-запросы, ошибки и запросы к базе данных. Эти семантические соглашения являются примером.


Первый черновик основан на текущем формате данных OpenCensus и будет содержать следующее:


  • Схема данных, реализующая межъязыковую спецификацию.
  • Определения метаданных для общих операций.
  • Определения JSON и Protobuf.
  • Реализация эталонных клиентов.

Просим обратить внимание, что также существует проводной протокол, распространяющий трассировки внутриполосно, и который мы бы хотели также стандартизировать. Формат распространения Trace-Context разрабатывается через W3C.


Цель: паритет по всем основным поддерживаемым языкам (завершение к 6 сентября)


Мы должны достигнуть паритета для текущей языковой экосистемы в порядке замещения старых проектов новым.


  • Определения интерфейса для трассировки, метрик и распространения контекста на основе межъязыковой спецификации.
  • Готовый к работе SDK, реализующий эти интерфейсы, экспортирующий Trace-Data. При возможности SDK будет создан путем переноса существующей реализации из OpenCensus.
  • Инструментарий для популярных библиотек, охваченных в настоящее время в OpenTracing и OpenCensus.

Мы также ценим обратную совместимость и хотим обеспечить плавный переход с существующих проектов.


  • В новом SDK будут средства обратной совместимости с текущими интерфейсами OpenTracing. Они позволят устаревшим инструментальным средствам OpenTracing работать вместе с новыми инструментальными средствами в одном и том же процессе, что позволит пользователям постепенно переносить свои наработки.
  • При готовности нового SDK будет создан план обновления для нынешних пользователей OpenCensus. Как и в случае с OpenTracing, устаревшие инструменты смогут продолжить работать вместе с новыми.
  • К ноябрю и OpenTracing, и OpenCensus будут закрыты для приема изменений. Обратная совместимость с устаревшими инструментами будет поддерживаться в течение двух лет.

Создание лучшего в своем классе SDK для каждого языка требует огромного труда, и именно в этом мы нуждаемся больше всего.


Цель: основная документация (завершение к 6 сентября)


Критическим фактором успеха любого проекта с открытым исходным кодом является документация. Мы хотим иметь первоклассную документацию и средства для обучения, наши технические писатели — самые активные разработчики на проекте. Обучение разработчиков правильному наблюдению за программным обеспечением — одно из важнейших воздействий, которое мы хотим оказать на мир.


Минимально необходимы для начала следующие части документации:


  • Ориентация проекта.
  • Наблюдаемость 101.
  • Начало работы.
  • Руководства по языкам (отдельно на каждый).

Приглашаем писателей любого уровня! Наш новый сайт базируется на Hugo, используя обычную разметку, так что весьма легко внести свой вклад.


Цель: Registry v1.0 (завершение к 6 июля)


Registry — еще один критически важный компонент, улучшенная версия OpenTracing Registry.


  • Легко найти библиотеки, плагины, установщики и прочие компоненты.
  • Легкое управление компонентами Registry.
  • Можно узнать, какие функции SDK доступны на каждом языке.

Если интересуетесь дизайном, интерфейсной частью и UX — у нас отличный проект для личного участия.


Цель: инфраструктура для тестирования и выпуска ПО (завершение к 6 сентября)


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


Цель: закрытие проектов OpenTracing и OpenCensus (завершение к 6 ноября)


Мы планируем начало закрытия старых проектов с 6 сентября, если новый проект достигнет с ними паритета. 2 месяца спустя, при паритете всех языков, мы планируем закрытие проектов OpenTracing и OpenCensus. Это следует понимать так:


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

Присоединяйтесь


Мы будем рады любой помощи, поскольку это огромный проект. Если интересно узнать о наблюдаемости — сейчас самое время!





К сожалению, не доступен сервер mySQL