Ну вот коллега el777 верно говорит. Я рассматриваю тут ситуацию как системщик, а не разработчик. стоимость связки nginx-elastic-api будет ощутимо дешевле, чем любые варианты с celery/rabbit/DB. Собственно жто вопрос разделяемых ресурсов. Когда писем не очень много — это не важно, когда начинаешь масштабироваться — то вопрсо встает совсем под другим углом.
ну у парсера будет задержка 5-10 минут, а если грамотно класть логи, например в тот же elasticsearch, то все будет зависеть от скорости реиндекса. У меня около 30 секунд. На объемы от 100ГБ до пары-тройки Тб. И тут API будет дергать ES, именно когда клиент запрашивает. То есть почти рилтайм. А при открытии API нагрузка на бекэнд машины будет меньше.
Думаю, что бсдя кому-то хороша. Из того, что имею я у себя (только о серверах):
Сопровождение какого-то дополнительного ПО — геморой. Причем еще какой. Автоматизировать пересборку пакетов при изменении зависимостей почти не реально. Сопровождение манифестов сборки — еще тот процесс. Может я его не знаю, тогда покажите, хоть что-то похожее на OBS для бсди.
Не предсказуемое поведение систем управления конфигурацией, при наличии геторогенной *nix среды выливается в кучу каких-то обвязок и условных ветвлений.
Не всегда предсказуемое поведение интерпретируемого кода, сталкивался с ruby/python/lua. Что, снова, ведет к каким-то обвязкам.
Собственно, в случае большой гетерогенной среды и ориентировки большинства ПО на линукс, приводит к тому, что наличие бсди увеличивает вдвое затраты на поддержку.
За den-o-matic спасибо, интересно. В остальном, любое CI прекрасно до того момента, пока вы не зависите от управления зависимостями при сборке пакета, когда в зависимости от одного, надо сделать ребилд пары сотен.
1) опять же, ваш выбор. я разницы, где держать конфиги, не вижу. А вот доп сервисы в контейнере вижу.
2) https://docs.docker.com/engine/userguide/labels-custom-metadata/ отталкиваться от сюда. В swarm указываю, при старте конейнеров, условно, запустить 10 штук, на машина с лабелом блабла.
3) Опять же, не вижу тут проблем. Вопрос решается системой управления конфигурации.
1) точно так же он перестает ей быть, когда начинается решение неспецифических задач в нем. Например 2 сервиса, или куча шаблонизаторов конфигов.
2) я решил лейблами докер-сервиса
3) с моей точки зрения это гораздо удобнее, чем контролировать сервисы внутри.
Ну а так выходит непредсказуемость поведения контейнера.
Мне думается это ошибка в архитектуре. Я не говорю о том, что таких кейсов не может быть. Но все таки контейнеру подразумевают какое-то CI и систему управления конфигурацией.
Честно говоря, я с трудом представляю юзкейсы, где такое надо (про велосипеды молчим). Мне видится более удобным вариантом запускать контейнер системным кроном. Возможно на выделенной тачке.
Обилие говнокода на puppet, разгребать смысла нет. В текущем состоянии идет постоянное нарастание.
Наличие центрального сервера и агентов. Что вместе с п1 ведет к серьезным тормозам. Например: запуск агентов был сначала раз в 25 минут, потом раз в 45, потом раз в час, потом раз в 2 часа. Agentless у ansible, считаем это плюсом. А наличие CI позволяет вполне заменять центральный сервер.
Осознание излищней сложности puppet. Docker+ansible позволяют выкинуть 60% кода без рефакторинга.
Очень удобная декомпозиция ролей. Соответсвенно всегда можно удобно и быстро выполнить малую роль.
Сразу скажу, не копал глубоко.
Есть куча конфигов nginx с обшей частью, я попытался загнать общую часть в файлик, но не вышло. Что-то подобное в джанге было на урра.
Ну вот коллега el777 верно говорит. Я рассматриваю тут ситуацию как системщик, а не разработчик. стоимость связки nginx-elastic-api будет ощутимо дешевле, чем любые варианты с celery/rabbit/DB. Собственно жто вопрос разделяемых ресурсов. Когда писем не очень много — это не важно, когда начинаешь масштабироваться — то вопрсо встает совсем под другим углом.
ну у парсера будет задержка 5-10 минут, а если грамотно класть логи, например в тот же elasticsearch, то все будет зависеть от скорости реиндекса. У меня около 30 секунд. На объемы от 100ГБ до пары-тройки Тб. И тут API будет дергать ES, именно когда клиент запрашивает. То есть почти рилтайм. А при открытии API нагрузка на бекэнд машины будет меньше.
Вопрос, а поему бы не пойти "ленивым" путем по учету открытия пикселя — то есть считать это по логам nginx?
Думаю, что бсдя кому-то хороша. Из того, что имею я у себя (только о серверах):
Собственно, в случае большой гетерогенной среды и ориентировки большинства ПО на линукс, приводит к тому, что наличие бсди увеличивает вдвое затраты на поддержку.
За den-o-matic спасибо, интересно. В остальном, любое CI прекрасно до того момента, пока вы не зависите от управления зависимостями при сборке пакета, когда в зависимости от одного, надо сделать ребилд пары сотен.
Возможно. Хотя мне кажется можно сделать иначе.
1) опять же, ваш выбор. я разницы, где держать конфиги, не вижу. А вот доп сервисы в контейнере вижу.
2) https://docs.docker.com/engine/userguide/labels-custom-metadata/ отталкиваться от сюда. В swarm указываю, при старте конейнеров, условно, запустить 10 штук, на машина с лабелом блабла.
3) Опять же, не вижу тут проблем. Вопрос решается системой управления конфигурации.
кстати, надо посомтреть поподробнее, что там предлагается.
Я думаю, что крон — это изменение данных в некой центральной точке. Потому проще держать отдельный инстанс.
1) точно так же он перестает ей быть, когда начинается решение неспецифических задач в нем. Например 2 сервиса, или куча шаблонизаторов конфигов.
2) я решил лейблами докер-сервиса
3) с моей точки зрения это гораздо удобнее, чем контролировать сервисы внутри.
Ну а так выходит непредсказуемость поведения контейнера.
Мне думается это ошибка в архитектуре. Я не говорю о том, что таких кейсов не может быть. Но все таки контейнеру подразумевают какое-то CI и систему управления конфигурацией.
по мне, consul-template, как и крон выносятся на хост тачку.
Хотя тут и есть вопросы с swarm и прочим.
Честно говоря, я с трудом представляю юзкейсы, где такое надо (про велосипеды молчим). Мне видится более удобным вариантом запускать контейнер системным кроном. Возможно на выделенной тачке.
Разве? ну возможно. Хотя вроде jinja тянет в зависимостях. А потом обертывает в свои врапперы. Утверждать не буду, проверять лень. :)
В нашем случае:
Спасибо :) завтра вкурю полноценно
У меня сейчас миграция с puppet на ansible, и комбинация -i и --limit очень помогает.
Именно. То есть получается, все плюшки jinja там толком не поиспользовать.
Еще раз. Я не про include в коде yaml, а в коде шаблона. То есть если я приведенный выше кусок вынесу в инклюд, я ничего не получу.
Я про include/block в контексте jinja, а не yaml.
Сразу скажу, не копал глубоко.
Есть куча конфигов nginx с обшей частью, я попытался загнать общую часть в файлик, но не вышло. Что-то подобное в джанге было на урра.