Рубрики
Uncategorized

Инструментация на заказ: создание собственного молотка

Есть много замечательных инструментов, которые помогут вам автоматизировать мирские задачи. Но есть PL … с меткой производительности, JavaScript, Tooling, DevOps.

Есть много замечательных инструментов, которые помогут вам автоматизировать мирские задачи. Но есть много причин, по которым вы тоже хотели бы использовать пользовательский инструмент.

Почему настраиваемые наборы инструментов необходимы

Причины, которые я видел для пользовательского инструмента, достаточно:

  • Это может быть просто для того, чтобы обернуть некоторые другие инструменты и Создайте свой собственный инструментарий с нулевым конфигурацией из этого.
  • Я находился в ситуациях, когда конкретный вариант использования бизнеса должен был быть подтвержден с высокой уверенностью, но данные тестирования были ненадежными, поэтому мы создали наш собственный насмешливый сервер.
  • Я был в ситуации, когда те же 3 шага для тестирования моих изменений кода были необходимы снова и снова — автоматизация этих 3 шагов, которые разрешены для разработки с более быстрыми петлями обратной связи и в конечном итоге сделали меня быстрее.

Автоматизация окупается больше Быстро Чем вы думаете

Есть печально известный xkcd post Это показывает, насколько быстро окупается автоматизация мирской задачи

Сложно: вы едва заметите то, что занимает от 1 до 15 секунд, даже если вы делаете их в 50 или 100 раз в день.

Лично для меня Большой Аха-момент был, когда я начал использовать красиво Анкет Это показало мне, как часто я тратил энергию на код форматирования. До тех пор я никогда не считал это бременем форматирования моего кода — я люблю хорошо отформатированный код, поэтому я обнаружил, что действие, которое стоит тратить мое время, и всегда думал, что я буду делать это только естественно при написании кода. После того, как я был настроен на использование красителя, я начал писать много кода в одной строке и имел более красивое формат для меня в сохранении. Внезапно вся моя умственная энергия была сосредоточена на самом кодексе, а не на его форматировании.

Скопировать и вставить смешан с поиском и заменой не инструментируется

Некоторое время, когда мы создали новое микро-сервис, мы бы сделали это следующим образом:

  1. Скопируйте и вставьте существующий файл развертывания
  2. Поиск и замените название микро-сервиса
  3. Настройте любую дополнительную конфигурацию, которая является специфичной для обслуживания (например, подключения к базе данных)
  4. Скопируйте и вставьте этот файл для других средств
  5. внесите конкретные корректировки среды
  6. дождитесь обзора кода, чтобы кто-нибудь проверил файл развертывания
  7. Примените файл развертывания в тестовой среде
  8. Проверьте, работает ли микро-сервис, как и ожидалось
  9. Повторите 7 и 8 для других средств

Для нас большой вехой был автогенерацией этих файлов развертывания. Внезапно было невозможно допустить ошибки копирования и вставки. Создание «еще одного из них», в нашем случае развертывание работника, было возможно с нулевой конфигурацией. Потенциальный источник ошибки был полностью исключен! Важным в нулевой конфигурации не то, что вы избегаете файла конфигурации. Это то, что вы избегаете знать об этом файле и делать ошибки с ним.

Поиск и заменить легко, когда вам нужно что -то сделать один раз. Но каждый раз, когда вам нужно повторить этот процесс, вам нужно убедиться, что вы ничего не пропустили и нуждаетесь в полном обзоре.

Автоматизация этого процесса с помощью реального инструмента внезапно позволила создать новый сервис. Что -то, о чем никому не нужно было бы думать дважды.

Хорошие соединения инструментов автоматизации

После того, как генерация файлов будет автоматизирована, стало легко построить это и для других вещей. Внезапно стало простым автоматическим развертыванием услуги. Мы очень быстро приобрели уверенность, чтобы автоматически развернуть его во всех средах.

Позже мы знаем, как автоматически создавать различные файлы развертывания, в зависимости от именно того, о каком обслуживании мы говорили. Мы смогли создать это для автоматического обновления конфигураций для всех служб. И мы смогли построить это, чтобы улучшить то, как мы обрабатываем секреты — то, что мы ранее проводили отладки.

Когда вы медленно создаете свой инструментарий, вы можете убедиться, что каждый помощник, который вы пишете, делает только одну вещь, и он делает это хорошо. Это позволяет вам составлять эти инструменты. И что еще более важно, это облегчает ситуацию, что было ранее тяжело, например, создание нового микро-сервиса.

Делаю правильную вещь.

Я люблю принимать ярлыки. Если я смогу оставить некоторые детали, я сделаю. Я знаю, что есть много таких как я. Но я также знаю, что у ярлыка часто есть цена: вы можете столкнуться с техническим долгом. Большинство из нас видели эту ситуацию, когда тесты были пропущены, но есть бесчисленное множество других примеров, когда разработчики новые и все же взяли ярлык.

Инструмент может сделать правильную вещь. Как я позаботился о том, чтобы написать тесты? Мне было легче написать тест, чем проверить свой сервис вручную! Любой вызов будет иметь 2 фазы: вход в систему данных и систему данных для вывода. После того, как я понял это, я убедился, что я бы легко сгенерировал файл JSON для ввода (тот же файл для ручного и автоматического теста!), Вытекайте источник данных (эта часть была фактической работой) и используйте тестирование снимков для проверки вывода. 10 секунд, чтобы написать простой тестовый пример. Еще 10 для каждого углового чехла.

Когда вы подойдете правильно, простой, люди пойдут по этому пути.

3 правила на заказ инструментов

  1. Выберите обычную задачу
  2. Автоматизируйте одну и только одну вещь об этом
  3. Делайте это так, чтобы поощрять правильные вещи

Затем повторите.

Отличные пакеты, такие как Яргс , execa , fs-extra И многие другие помогут вам создать этот инструментарий.

Оригинал: «https://dev.to/johannes_scha/bespoke-tooling-building-your-own-hammer-2j06»