Доклад

Elegant Observability

3 зал

Привычный подход к observability отвечает на вопрос «что выполнялось». Trace'ы показывают span'ы, которые описывают вызовы функций. А если чего-то не видно, то разобраться помогает harvesting логов... или не помогает, но это другая история.

Самые неприятные ошибки при этом не падения, а «тихие» неправильные данные: значение посчитано, ничего не упало, а результат неверен как '1' + 1. И никто не возьмется сказать, на каком шаге всё пошло не так. И еще и асинхронность эта... где контекст, переживший свой вызов, теряет связь с результатом расчета, ради которого он вообще затевался.

Но observability можно сделать лучше, «прокачать», связать с данными, показать, «что там было». При умелом использовании Prototype Chain позволяет не только хранить историю данных, но и связать ее с потоком выполнения так, что это сделает Jaeger надежным помощником.

И, да, TypeScript поможет проверить всё это еще до запуска. И нам останется лишь немножечко сделать это наглядным: и это мы тоже покажем.

Всё в рамках стандартного runtime'а, без патчей V8 и прочей «уличной магии». На реальных примерах разберемся, как оно устроено, зачем нужно и почему «раньше» мы до этого просто не могли додуматься.

Спикеры

Приглашенные эксперты

Расписание