Виктор Вершанский
chillhouse.space
Привычный подход к observability отвечает на вопрос «что выполнялось». Trace'ы показывают span'ы, которые описывают вызовы функций. А если чего-то не видно, то разобраться помогает harvesting логов... или не помогает, но это другая история.
Самые неприятные ошибки при этом не падения, а «тихие» неправильные данные: значение посчитано, ничего не упало, а результат неверен как '1' + 1. И никто не возьмется сказать, на каком шаге всё пошло не так. И еще и асинхронность эта... где контекст, переживший свой вызов, теряет связь с результатом расчета, ради которого он вообще затевался.
Но observability можно сделать лучше, «прокачать», связать с данными, показать, «что там было». При умелом использовании Prototype Chain позволяет не только хранить историю данных, но и связать ее с потоком выполнения так, что это сделает Jaeger надежным помощником.
И, да, TypeScript поможет проверить всё это еще до запуска. И нам останется лишь немножечко сделать это наглядным: и это мы тоже покажем.
Всё в рамках стандартного runtime'а, без патчей V8 и прочей «уличной магии». На реальных примерах разберемся, как оно устроено, зачем нужно и почему «раньше» мы до этого просто не могли додуматься.
chillhouse.space
YADRO