пятница, 18 апреля 2014 г.

Carlos Bueno — Mature Optimization

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

Из неё хотелось бы процитировать некоторые вещи.

Сложные проблемы и простые решения

For every difficult problem there is a soliution which is simple, obvious, and wrong.

У каждой сложной проблемы есть простое и очевидное решение… но оно неправильное.

Если не контролировать, то это наблюдается постоянно, когда для оптимизации сложных систем начинаются умопостроения на никаком объеме данных. Такие действия представляют собой случайные блуждания с слабопредсказуемым результатом. Противоположным подходом является понимание того, как работает система; упрощение на этапах проектирования для последующего понимания; создание аккуратных систем диагностики.

Простой и целевой мониторинг

It’s a common mistake to overload your dashboard with too much information. The fanciest hospital monitor can describe something as complex and important as a living being with less than ten metrics. "While the human is operating normally, the heart rate graph should never change drastically, go below 60, or above 100." You can do the same with a computer system. A dashboard is for monitoring, not diagnosis. It’s only job is to tell you that something is wrong, and give a rough clue about where to look next.

Это общая ошибка перегружать ваш мониторинг большим количеством информации. Самый модный монитор в больнице может описать такую сложную и важную систему [как человек] с использованием менее чем 10-тью параметров. "Когда человек в порядке, то его сердечный пульс никогда быстро не изменяется, не уменьшается менее 60 и не увеличивается более 100." Вы можете сделать то же самое с компьютерной системой. Панель мониторинга, а не система, ставящая диагноз. Её задача - говорить что что-то пошло не так, и дать грубое направление того, на что смотреть в дальнейшем.

Так получается, что в системы мониторинга разработчики помещают все что попало (авось пригодится и мало не бывает). Такой же процесс наблюдается со стороны заказчиков - дайте нам графиков побольше [и чтобы мы в них потом утонули]. Поэтому мониторинг строится исходя из задач реального времени, а логи и длительная история — для отложенного разбора.