2. Ошибки — неотъемлемая часть проектирования
Как известно, не ошибается тот, кто ничего не делает.
Каждый разработчик допускает ошибки в процессе своей работы.
С уровнем роста навыков, вы будете допускать все меньше и меньше ошибок,
но неважно насколько вы опытны, от них никто не застрахован.
Некоторые ошибки небольшие, а некоторые имеют критически важное значение
для проекта готовящегося или уже выпущенному в продакшен.
Для таких случаев системы обнаружения и оповещения ошибок в реальном
времени станут поистине незаменимы и спасут много времени, потраченного
на отладку, мониторинг логов и поиск причины ошибки.
3. «Если какая-нибудь неприятность может произойти, она
случится» (Артур Блох, "Законы Мерфи", 1977)
Мы живем в реальном мире со множеством случайных факторов, окружающих нас.
Давайте попытаемся предугадать, какие источники ошибок могут быть:
● Поведение вашего приложения под нагрузкой (проблемы с потоками, таймаут времени ожидания
запроса базы данных, ...)
● Например поведение вашей production БД, возможно она сортирует записи по-другому или
выполняет запросы в другом порядке
● Внешнее API которое вы используете не работает или немного изменилось, или возвращает
непредвиденные вами виды ошибок
● Сервис memcached / Redis / MongoDB / <дополните свое название сервиса> внезапно упал
● Ваш почтовый/веб сервер не может обработать всплеск нагрузки или что-то не так с
соединением
● Закончилось свободное дисковое пространство или оперативная память
● ...
4. Автоматические тесты и сервис отслеживания
ошибок должны работать совместно
Автоматические тесты это хорошо, но недостаточно — вам также нужен сервис
отслеживания ошибок.
Автоматические тесты защищают вас от множества ошибок и им нет замены.
Автоматические тесты и отслеживание ошибок не соревнуются между собой, они
работают вместе. Всегда будут вещи, о которых вы не думали заранее. И ваш
набор тестов будет расти со временем, чем больше ошибок будет отслежено.
Дополнительно, шансы очень высоки, что даже если вы будете стараться, ваше
development или staging окружение не на 100% идентичное с вашим production
окружением. В случае с Ruby on Rails вы наверняка замечали эти различия в
настройках в папке config/environments/.
5. Ответственные разработчики должны быть
сразу уведомлены о возникшей ошибке
Приложение может иметь потрясающие юнит и функциональные тесты, но потом
на продакшене что-то идет не так и неправильная обработка ошибок делает
ситуацию только хуже.
Достаточно плохо, когда на продакшене что-то идет не так, но еще хуже
если:
● Вы не имеете четкого сообщения в логе, которое идентифицирует что
конкретно пошло не так.
● Вы не были автоматически уведомлены по e-mail что что-то пошло не
так. Вместо этого, клиент жалуется представителю службы поддержки
клиентов что есть проблема.
8. Установка и настройка в Rails-проекте
2. Получим токен проекта POST_SERVER_ITEM_ACCESS_TOKEN
9. Установка и настройка в Rails-проекте
3. Добавим гем в Gemfile
gem 'rollbar'
4. Установим гем
$ bundle install Если не используете bundler: $ gem install rollbar
5. Подставим токен из шага 2 и сгенерируем файл конфига config/initializers/rollbar.rb и
$ rails generate rollbar d072b1c3d4fc45e1a27c5a2dd460bbff
6. Отключим уведомления в development окружении (их лучше смотреть например в better_errors)
- if Rails.env.test?
+ if Rails.env.test? || Rails.env.development?
config.enabled = false
End
7. Коммит и деплой на staging / production
8. PROFIT!
22. Rollbar: Дополнения и полезности
● Документация https://rollbar.com/docs/
● Репозиторий со всеми компонентами https://github.com/rollbar
● Блог со множеством полезных статей https://rollbar.com/blog/
● Список изменений https://headwayapp.co/rollbar-changelog
● Статус всех подсистем Rollbar http://status.rollbar.com/