Необходимость

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

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

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

Галантерея - Ваш новый друг

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

Как это работает

Галантерея работает, выполняя каждый сценарий запуска как дочерний процесс узла в своем собственном потоке. Преимущество этого в том, что мы можем направить все выходные данные дочернего процесса из событий stdout и stderr в один родительский процесс. Затем журналы могут быть четко отображены на одной вкладке терминала. Больше не нужно циклически переключаться между вкладками и окнами, пытаясь выяснить, какое приложение вышло из строя или выдало ошибку. Каждое приложение имеет красивую цветовую кодировку, чтобы его было легко читать.

Haberdashery был создан как простая версия Docker compose, которая позволяет вам определять и запускать многоконтейнерные приложения Docker. По моему опыту, Docker может быть сложным в освоении. Я потратил много времени, пытаясь настроить его локально, что отвлекает от текущей задачи. Кроме того, попытка убедить нового члена команды использовать Docker для запуска нескольких приложений — дополнительные накладные расходы. Гораздо эффективнее установить Haberdashery, отредактировать файл конфигурации и через несколько минут запустить все приложения.

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

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

Проверьте это на https://www.npmjs.com/package/haberdashery.