• На чем развернуть Интранет внутри сети?

    @viktorprogger
    Рекомендую понаблюдать за https://www.jetbrains.com/ru-ru/space/. Пока есть только облачная версия, но готовится и отдельная установка, которую можно спрятать за корпоративную сеть. У облачной версии есть бесплатный тариф, по standalone расценки пока не публиковались.
    Зная эту компанию могу предположить, что все необходимое будет упаковано в образы контейнеров и поднимется парой консольных команд.
    Ответ написан
    Комментировать
  • YII2 модули. Подписываться на события или Mailer компонент в модуле?

    @viktorprogger
    ИМХО, компоненты, реализующие основную бизнес-логику и рассылки не должны знать друг о друге. Лучше написать класс, который знает о том, что есть события, по которым нужно отправлять письма (назовем его MailEventManager). Плюс добавить интерфейс для классов - почтовых событий. Например, пусть они возвращают текст письма, отправителя, получателя и тему. И для каждого поытового события пишем по классу, реализующему этот интерфейс. А MailEventManager сопоставляет произошедшее событие (напр., регистрация пользователя) и имеющийся класс почтового события, из которого получает все необходимые данные. Полученные же данные уже передает в компонент, непосредственно осуществляющий отправку писем (или уведомлений в телеграм, или что угодно еще).

    Таким образом достигается большая гибкость системы, части которой при необходимости можно будет безболезненно вынести в отдельные приложения.
    Ответ написан
  • Как вы используете Docker и npm / Composer при локальной разработке (папка node_modules / vendor)?

    @viktorprogger
    Для dev-окружения имеет смысл монтировать весь код, включая папку node_modules, как том. И выполнять npm i/composer install в нужный момент.
    Та же команда выполняется при сборке образа, в результате все необходимые пакеты оказываются установлены при тестировании и на проде.
    Да, такой подход оставляет вероятность расхождения данных между dev и prod версиями. Для моей ситуации эта вероятность достаточно незначительна, чтобы ею пренебречь. В другом же случае стоит воспользоваться вашим вариантом 2.5.
    Варианты 1 и 2 не рекомендую по простым причинам:
    1. Нарушает принцип единообразия окружения: если у разработчиков, на stage, test и prod окружениях окажутся разные версии nodejs, это может обернуться большими проблемами. Поэтому все операции необходимо производить с помощью программ, установленных в контейнере.
    2. Можно напороться на ситуацию, когда удаленные сервера зависимостей не отвечают (перегружены, ddos, упали и пр) или одна из зависимостей с них удалена (я так уже попадал). Другими словами, все содержимое папки node_modules/vendor должно храниться в контейнере. Либо пусть ваш админ поднимает зеркало того же packagist и морочае ся с актуальностью пакетов на нем (в чем смысла мало, если можно хранить все в образе контейнера).
    Ответ написан
    4 комментария