Есть много замечательных инструментов, которые помогут вам автоматизировать мирские задачи. Но есть много причин, по которым вы тоже хотели бы использовать пользовательский инструмент.
Почему настраиваемые наборы инструментов необходимы
Причины, которые я видел для пользовательского инструмента, достаточно:
- Это может быть просто для того, чтобы обернуть некоторые другие инструменты и Создайте свой собственный инструментарий с нулевым конфигурацией из этого.
- Я находился в ситуациях, когда конкретный вариант использования бизнеса должен был быть подтвержден с высокой уверенностью, но данные тестирования были ненадежными, поэтому мы создали наш собственный насмешливый сервер.
- Я был в ситуации, когда те же 3 шага для тестирования моих изменений кода были необходимы снова и снова — автоматизация этих 3 шагов, которые разрешены для разработки с более быстрыми петлями обратной связи и в конечном итоге сделали меня быстрее.
Автоматизация окупается больше Быстро Чем вы думаете
Есть печально известный xkcd post Это показывает, насколько быстро окупается автоматизация мирской задачи
Сложно: вы едва заметите то, что занимает от 1 до 15 секунд, даже если вы делаете их в 50 или 100 раз в день.
Лично для меня Большой Аха-момент был, когда я начал использовать красиво Анкет Это показало мне, как часто я тратил энергию на код форматирования. До тех пор я никогда не считал это бременем форматирования моего кода — я люблю хорошо отформатированный код, поэтому я обнаружил, что действие, которое стоит тратить мое время, и всегда думал, что я буду делать это только естественно при написании кода. После того, как я был настроен на использование красителя, я начал писать много кода в одной строке и имел более красивое формат для меня в сохранении. Внезапно вся моя умственная энергия была сосредоточена на самом кодексе, а не на его форматировании.
Скопировать и вставить смешан с поиском и заменой не инструментируется
Некоторое время, когда мы создали новое микро-сервис, мы бы сделали это следующим образом:
- Скопируйте и вставьте существующий файл развертывания
- Поиск и замените название микро-сервиса
- Настройте любую дополнительную конфигурацию, которая является специфичной для обслуживания (например, подключения к базе данных)
- Скопируйте и вставьте этот файл для других средств
- внесите конкретные корректировки среды
- дождитесь обзора кода, чтобы кто-нибудь проверил файл развертывания
- Примените файл развертывания в тестовой среде
- Проверьте, работает ли микро-сервис, как и ожидалось
- Повторите 7 и 8 для других средств
Для нас большой вехой был автогенерацией этих файлов развертывания. Внезапно было невозможно допустить ошибки копирования и вставки. Создание «еще одного из них», в нашем случае развертывание работника, было возможно с нулевой конфигурацией. Потенциальный источник ошибки был полностью исключен! Важным в нулевой конфигурации не то, что вы избегаете файла конфигурации. Это то, что вы избегаете знать об этом файле и делать ошибки с ним.
Поиск и заменить легко, когда вам нужно что -то сделать один раз. Но каждый раз, когда вам нужно повторить этот процесс, вам нужно убедиться, что вы ничего не пропустили и нуждаетесь в полном обзоре.
Автоматизация этого процесса с помощью реального инструмента внезапно позволила создать новый сервис. Что -то, о чем никому не нужно было бы думать дважды.
Хорошие соединения инструментов автоматизации
После того, как генерация файлов будет автоматизирована, стало легко построить это и для других вещей. Внезапно стало простым автоматическим развертыванием услуги. Мы очень быстро приобрели уверенность, чтобы автоматически развернуть его во всех средах.
Позже мы знаем, как автоматически создавать различные файлы развертывания, в зависимости от именно того, о каком обслуживании мы говорили. Мы смогли создать это для автоматического обновления конфигураций для всех служб. И мы смогли построить это, чтобы улучшить то, как мы обрабатываем секреты — то, что мы ранее проводили отладки.
Когда вы медленно создаете свой инструментарий, вы можете убедиться, что каждый помощник, который вы пишете, делает только одну вещь, и он делает это хорошо. Это позволяет вам составлять эти инструменты. И что еще более важно, это облегчает ситуацию, что было ранее тяжело, например, создание нового микро-сервиса.
Делаю правильную вещь.
Я люблю принимать ярлыки. Если я смогу оставить некоторые детали, я сделаю. Я знаю, что есть много таких как я. Но я также знаю, что у ярлыка часто есть цена: вы можете столкнуться с техническим долгом. Большинство из нас видели эту ситуацию, когда тесты были пропущены, но есть бесчисленное множество других примеров, когда разработчики новые и все же взяли ярлык.
Инструмент может сделать правильную вещь. Как я позаботился о том, чтобы написать тесты? Мне было легче написать тест, чем проверить свой сервис вручную! Любой вызов будет иметь 2 фазы: вход в систему данных и систему данных для вывода. После того, как я понял это, я убедился, что я бы легко сгенерировал файл JSON для ввода (тот же файл для ручного и автоматического теста!), Вытекайте источник данных (эта часть была фактической работой) и используйте тестирование снимков для проверки вывода. 10 секунд, чтобы написать простой тестовый пример. Еще 10 для каждого углового чехла.
Когда вы подойдете правильно, простой, люди пойдут по этому пути.
3 правила на заказ инструментов
- Выберите обычную задачу
- Автоматизируйте одну и только одну вещь об этом
- Делайте это так, чтобы поощрять правильные вещи
Затем повторите.
Отличные пакеты, такие как Яргс
, execa
, fs-extra
И многие другие помогут вам создать этот инструментарий.
Оригинал: «https://dev.to/johannes_scha/bespoke-tooling-building-your-own-hammer-2j06»