Охватить спонсируемый этот пост.
Это вторая из двух частей. Прочитайте часть 1:
- Почему Opentelemetry настолько неуклюжая для фронта
В части 1 я рассмотрел некоторые причины, почему в браузере трудно использовать Opentelemetry, в том числе то, как дизайн JavaScript, управляемый циклами, распределяется с моделью пролетов и трассов Opentelemetry. Я заберу, где остановился, поделившись еще одним подходом, чтобы сделать Opentelemetry более эргономичным для JavaScript. Затем я рассмотрю некоторые звездные глаза на будущее, которые я бы хотел увидеть, прежде чем завершить некоторые немедленные улучшения, которые мы можем сделать сегодня.
Теперь, как напоминание о том, где мы остановились в прошлый раз, помните, что следы, пролеты, пролетные события и бревна построены поверх одного и того же основного примитива. То есть все они в основном просто события.
Не заставляй меня думать
Если мы признаем, что Opentelemetry — это просто события вплоть до конца, то теоретически все, что вам действительно нужно сделать, это написать что -то вроде Trace.info () и пройти в объект. Вот и все. Вы можете иметь Trace.info, trace.error, trace.warn и так далее. Учитывая повсеместность информации о ведении журнала, не должно быть ужасно удивительно, что большинство API, похожих на ведение журналов, являются довольно естественным интерфейсом для инструментов. Он прекрасно работает для JavaScript и многих других языков, в том числе тех, которые не имеют возможности обеспечить абстракции в стиле метапрограммирования, ниточное состояние или другие объекты, которые делают API OpenElemetry более эргономичным.
При обращении к дизайну API OpenElemetry может сделать инструменты более эргономичными, улучшение, которое само по себе на самом деле недостаточно для улучшения эргономики.
При обращении к дизайну API OpenElemetry может сделать инструменты более эргономичными, улучшение, которое само по себе на самом деле недостаточно для улучшения эргономики. Это огромное улучшение! Но некоторые дополнительные функции были бы действительно полезны. По -прежнему сложно разрабатывать телеметрию и распространять ее таким образом, что это максимально полезно.
Вдохновение из других типов инструментов может дать нам некоторые идеи о том, что может быть полезно здесь: что, если бы была функция, чтобы добавить метаданные в корневой промежуток, независимо от того, где это? Реализация этой функции была бы сложной, потому что обменчивость SPAN является глубоко центральной для API OpenElemetry и нарушение, которое нарушит другие вещи.
Тем не менее, другой способ подхода, который будет прочным эталонными значениями для наборов атрибутов, которые затем могут быть изменчивыми. Это также потенциально значительно сократило бы пропускную способность сети.
Подойдя дальше в вдохновение и идеи: что если есть функция, чтобы добавить новый промежуток, но только если родительский пролет уже не существует, или иным образом прикрепляет вещи к существующему промежутке? Что, если бы была функция для получения данных и добавления их к каждому ребенку, может быть, даже рекурсивно? Что если бы был способ написать инструментацию для одной функции, но если эта инструментация остается полезной, когда эта функция вызывается в цикле? И как вы могли бы написать все это без необходимости создавать пользовательские процессоры или пользовательский код, чтобы склеить все вместе, чтобы иметь смысл для вашего варианта использования?
Воображая будущее
Это поднимает для меня захватывающее пространство для дизайна: если бы я был далеко в будущем и представляю, как может выглядеть телеметрия, что может быть возможно?
Давайте сделаем шаг в это гипотетическое будущее и представим: что, если библиотека инструментов действительно не существует в традиционном смысле, и код, который вы писали, на самом деле будет создан на лету и переписан компилятором? Вы можете использовать это, чтобы сделать код приборов очень легким и минимальным, по сути, настраиваемым для вашего приложения в время компиляции. Вы можете использовать информацию компилятора для автоматического вставки структуры кода, добавлять аннотации срока службы, информацию о потоке управления, данные стека вызовов и, возможно, даже переписать телеметрию, чтобы иметь больше смысла для потребностей вашего приложения.
Это может облегчить очень продвинутое переписывание инструментов, минимизацию и сжатие; Представьте себе конструкцию в стиле исходной карты, где вы отправляете бинарные указатели в определенные общие наборы данных. Вы можете даже представить себе нормализовать или денормализующую телеметрию автоматически. Или включение кода быть записанным как для потокового, так и для вариантов использования пакетов без изменений кода. Коллекционеры могут кататься и развернуть для вас телеметрию, рухнуть определенные части данных или даже полностью переписать телеметрическое дерево по мере необходимости.
Браузеры и языковые время забега могут также улучшить существующие ограничения, обеспечивая надлежащую поддержку хранения потока, распространение контекста и поддержку для распространения контекста внутри асинхрообразных областей.
Я хотел бы увидеть мир с чрезвычайно богатыми данными о местной отладке и способностью естественным образом сокращать эти данные для развертывания производства.
Способность распространять информацию в «волшебном» объекте метаданных также может быть огромным посредником для создания этих типов структур, которые можно рассматривать как аналогично ссылке на идею метаданных, которую я воспитывал ранее. Если языковой момент выполнения включает в себя явную поддержку инструментов, то этот инструмент может быть написан сильно оптимизированным образом, что позволило бы языкам, созданным мусором, пользоваться от низких до нулевых накладных инструментов. Я нахожу это захватывающим, потому что это фактическая цель проекта Opentelemetry, поэтому потенциал не недоступен, но это потребует большой координации.
Кроме того, я хотел бы увидеть мир с чрезвычайно богатыми данными о местной отладке и способностью естественным образом сокращать эти данные для развертывания производства. Тогда вы не взорвете все с помощью данных отладки при развертывании на удаленных серверах, но при отладке чего -то локально вы можете легко перейти к уровню системного вызова или даже осмотреть аппаратное обеспечение, чтобы получить чрезвычайно детальные взгляды на каждый интерфейс, независимо от того, насколько сильно абстрактные.
Тот факт, что язык высокий уровень, не означает, что вы не должны иметь возможность изучить детали, когда вам нужны или хотите. Я думаю, что мы могли бы создать языки в будущем, которые позволяют это эргономично, позволяя вам придумать код для производства, получая богатые инструменты для разработки, не придавая системе дважды. К счастью, многое из того, что здесь описано, является явным результатом предстоящего сигнала профилирования Openelemetry, поэтому я надеюсь увидеть большой прогресс в ближайшие несколько лет.
Давайте отступим и вернемся к реальности. О будущем интересно думать, но с чего мы можем начать с сегодняшнего дня?
Если приборы были более тесно встроены в языки, то можно также представить собой единую интеграцию других метаданных, такую как: отладка информация, профилирование производительности, флаги функций, маркетинговые данные, события безопасности и данные экспериментов. Вместо каждой платформы создают свои собственные SDK и нуждающиеся в их собственных реализациях, они могут использовать функции инструментов, встроенные в саму время выполнения языка. Вы можете одновременно инструментально и передавать эти данные в различные платформы — от наблюдения и мониторинга до безопасности и экспериментов — все это используя один и тот же код.
Мне нравится представлять, что будущее является тем, где межфункциональное сотрудничество является более доступным, и где понимание строительной системы становится по-настоящему по-настоящему усилия по всей компании. Я бы хотел, чтобы это произошло.
Добраться до лучшего
Все эти звездообразные и блестящие будущие размышления-это здорово, но мы не могли бы реалистично видеть эти типы изменений в течение многих лет или даже десятилетия. Это также потребует много координации, и неясно, хотят ли вовлеченные сообщества даже это произошло. Итак, давайте отступим и вернемся к реальности. О будущем интересно думать, но с чего мы можем начать с сегодняшнего дня?
Вот мое мышление: поскольку события уже существуют в Opentelemetry, и, поскольку почти все находится в капоте, мы могли бы создать поддержку для «просто отправки событий» как спецификации Opentelemetry — подумайте об этом как о альтернативном представлении о пролетах, трассах, журналах и событиях SCAN. Это даст нам массу свободы, чтобы написать любую библиотечную SDK, необходимые для языка, сохраняя при этом полную совместимость с поставщиками. Мы довольно близки к тому, что мы можем сделать это сегодня, так как все, что потребуется, это модифицированная реализация SDK и модифицированный коллекционер OTEL. Если бы эти две вещи произошли, совместимость с поставщиками останется прежней, и мы получим экспериментирование с тем, как может выглядеть представительство на основе событий.
Некоторые поставщики наблюдения уже принимают эту телеметрическую гибкость в своих продуктах, особенно тех, кто участвует в мобильном пространстве. Одним из отличных примеров этого является функциональность пользователей Embrace, где вы можете создавать пользовательские потоки пользователей из существующей телеметрии, которую вы уже собираете, без необходимости реструктурировать ваш код. Если вы заинтересованы в изучении большего, вы можете проверить их предстоящий живой вебинар 16 сентября в 10:00 по н.э. по восточному времени.
Представление данных телеметрии на основе событий также облегчит взаимодействие между трассами, пролетами, журналами и событиями SPAN. Это также позволило бы нам легче мигрировать из журналов на следы с использованием того же кода. Это не значит, что я думаю, что мы избавимся от нынешнего SDK, однако. Это очень полезно для бэкэнда, а также представляет собой хорошо сделанный API «Pay Now», где клиент выполняет еще немного работы для обработки состояния телеметрии, и, в обмен, коллекционер может быть без сохранения состояния. Это означает, что поставщикам очень легко быть совместимыми с Openelemetry.
Я могу легко увидеть будущее, в котором люди выбирают между моделью «платить сейчас», где сложности состояния живет на клиенте, в сравнении с моделью «оплаты позже», где сложность состояния находится в коллекционере, в зависимости от того, что имеет смысл для их окружающей среды. Микросервисы с высоким объемом, вероятно, выигрывают от модели «оплаты сейчас», и Frondend лучше всего работает с моделью «оплаты позже».
Собрать их вместе и возможность связать все это в последовательный контекст, разблокировало бы следующее поколение понимания наших систем. Я уже вижу кусочки этого, начинающего происходить, и это делает меня очень взволнованным будущим Opentelemetry в браузере.
Я упомянул в других сообщениях в блоге, что Облачный нативный вычислительный фонд (CNCF) имеет новую специальную группу по интересам браузера (SIG), которая активно работает над улучшением поддержки браузера. Я думаю, что это создаст увлекательные события, и я действительно с нетерпением жду возможности увидеть, что он станет однажды. Если вы хотите узнать больше о том, над чем работает SIG браузера, ознакомьтесь с этим вебинаром по требованию.
Emprace-это ориентированная на пользователь платформа наблюдения, которая связывает технические характеристики с воздействием конечного пользователя. Embrace, оснащенная OpenElemetry, предоставляет реальное мониторинг пользователей для мобильных устройств и веб -сайтов, поэтому инженерные команды могут быстрее решать проблемы, повысить производительность и обеспечить исключительные цифровые впечатления. Узнайте больше последних из Embrace Trending Stories youtube.com/thenewstack Tech Moving быстро, не пропустите эпизод. Подпишитесь на наш канал YouTube, чтобы транслировать все наши подкасты, интервью, демонстрации и многое другое. Группа подпишитесь с эскизом. Хейзел слабо проводит свои дни, создавая команды людей, а также инфраструктуру, системы, автоматизацию и инструменты, чтобы сделать жизнь лучше для других. Она работала в различных компаниях, в широком спектре технологий и знает … Подробнее о Хейзел слабо