В повседневной работе нас окружает миллион мелких задач, на которые мы тратим время не задумываясь. А еще столько же мелких вещей выпадает из нашего поля внимания и остается незамеченным. Часто ли на код ревью вы оставляете комментарии по поводу стиля? Нужно ли вам запускать руками какой-нибудь скрипт для деплоя в продакшен? Какое у вас покрытие кода?
Все это рутинные действия, на которые бессмысленно тратить время живого человека. Пусть потеет машина! Например, мы недавно заметили, что у нас есть так называемая “очередь на тестовый стенд” — и люди, порой, в дни, когда много релизов, вынуждены ждать в этой очереди, чтобы прогнать регрессионные тесты для своих задач перед выпуском.
Чем больше рутины вы автоматизируете, тем больше времени у вас останется на решение важных продуктовых задач.
Проверьте, настроены и автоматизированы ли у вас следующие вещи:
- Сборка релиза и запуск тестов. Коммит в определенную ветку, запуск тестов, сборка артефакта. Все без малейшего участия человека. Мы используем CircleCI и Jenkins.
- Проверка качества и стиля кода. Страшно сокращает время и позволяет на ревью не отвлекаться на ерунду и обращать больше внимания на суть. Начните с использования линтера и убедитесь, что команда не игнорирует его ошибки. Можно настроить git-хуки или использовать готовые решения, например, Codacity или CodeClimate.
- Меряйте покрытие кода тестами. Нет единой универсальной метрики, мол, “85% покрытия и все круто”, зато вы всегда сможете сопоставить тренд роста количества багов в трекере с изменениями покрытия и следить, чтоб покрытие никогда не падало ниже определенного процента. Попробуйте Codecov.
- Заведите журнал ошибок. Это не баг-трекер и не канал с гневными отзывами пользователей — это система автоматического сбора и категоризации ошибок. Чаще всего для этого используется Sentry, причем как для клиентского, так и для серверного кода.
- Мониторинг производительности и серверов. Если у вас нет мониторинга, вы в темноте. Что-то где-то упало, все в огне, паника и бежим тушить руками. Поставьте мониторинг и настройте хотя бы базовые оповещения (CPU сервера > 90%, явно что-то не так) и ваша жизнь сразу станет проще. Самые известные инструменты это New Relic и Datadog, а вообще тысячи их.
- Собирайте логи так, чтоб потом их можно было прочитать. Когда оно упадет (а оно упадет), вам нужно будет разобраться, что же пошло не так, причем никакого отладчика и возможности восстановить состояние системы у вас не будет. Если у вас не один сервер — удачи в сборе и попытках склеить логи с разных машин. Классическое решение — Syslog, на рынке масса более user-friendly вариантов, таких как Papertrail или Logstash.
- Выкиньте свой железный сервер. Если вы не банк или не предприятие оборонки, никакого смысла иметь физические сервера нет. Разместитесь в облаке и забудьте про всякие проблемы с железом и необходимость все это обслуживать. Одни из самых популярных вариантов — AWS и Digitalocean. Для решений от Microsoft можно использовать Azure.
- Автоматизируйте создание и тестирование бэкапов. Как гласит народное поверье, инженеры делятся на две категории: те, кто не делает бэкапы и те, кто уже делает бэкапы. Иначе будет весело.
Источник: блог CTO hints в Medium