Size: a a a

Архитектура данных

2020 September 18

C

Constantine in Архитектура данных
Vladislav 👻 Shishkov
Имутабельная инфра и инфра как код - это разные вещи...
Спасибо, Вы мне очень помогли.
Одно с другим не может быть связанно (Сарказм).

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

C

Constantine in Архитектура данных
И перестаньте людям хамить, пожалуйста
источник

MV

Mitya Volodin in Архитектура данных
Constantine
Опишу проблему. Как отключать диски с data и катить, например, обновления, в целостной, последовательной модели инструкций ansible или puppet, избежав при этом проблем с доступностью сервиса (считай двх).
Вот вообще не могу прикрутить сюдой infra as code.
Дичь какая-то.
Никак. Большинство обновлений баз предполагают обновление каталога и бинарников самой СУБД, поэтому процесс придётся остановить.

Единственный вариант - это делать полное зеркало и балансером трафик уводить на ДРУГОЙ кластер, совершенно независимый. После этого мучительно переносить бэкапы обратно.
источник

MV

Mitya Volodin in Архитектура данных
Я знаю где так сделано 🙂 В принципе работает, но схема сложная
источник

C

Constantine in Архитектура данных
Спасибо, Мить 😉
Тут всё ещё хуже, выходит, когда тоже самое нужно придумать и для етл))
Вот так, просто, из нежелания работать и доверять коллегам, девопс готов спустить 50к$ ещё на сервера. Молчу, сколько стоит работа...)
источник
2020 September 19

MV

Mitya Volodin in Архитектура данных
Ну это утопия. 50к$ вы не отделаетесь, это будет гораздо дороже, в выхлопа от этого ноль.
источник

MV

Mitya Volodin in Архитектура данных
Учитывая время обновления вертики той же, проще просто временно останавливать потоки. При достаточной мощности и кафка, и найфай, и всё что угодно другое может временно аккумулировать в себе больше данных, которые потом влетят в СУБД
источник

MV

Mitya Volodin in Архитектура данных
У нас процесс обновления занимает сейчас не больше часа, при том что он ручной
источник

MV

Mitya Volodin in Архитектура данных
Если его автоматизировать через ансибл - то ваще будет минут 15-20.
источник

CO

Chern Oleksander in Архитектура данных
А можете подсказать, как проходит процесс внедрения Кафки, спарка, вертики, хайва итд.
Кто занимается разворотом системы, кто настраивает потоки данных, на каком яп чаще всего это делают?
источник

PD

Phil Delgyado in Архитектура данных
Mitya Volodin
Учитывая время обновления вертики той же, проще просто временно останавливать потоки. При достаточной мощности и кафка, и найфай, и всё что угодно другое может временно аккумулировать в себе больше данных, которые потом влетят в СУБД
Я не совсем понял, речь идет об обновлении версии своего решения или об обновлении мажорных версий самой СУБД?
В первом случае обычно нет проблем реализовать обновление без простоя вообще.
Во втором - зависит от конкретной СУБД, конечно.
источник

VS

Vladislav 👻 Shishkov... in Архитектура данных
Phil Delgyado
Я не совсем понял, речь идет об обновлении версии своего решения или об обновлении мажорных версий самой СУБД?
В первом случае обычно нет проблем реализовать обновление без простоя вообще.
Во втором - зависит от конкретной СУБД, конечно.
Вы же выше писали, что первый кейс только на груви решается или я не правильно вас понял?
источник

PD

Phil Delgyado in Архитектура данных
Оба кейса много на чем решаются. Ансибл - не удачный инструмент для сколь-нибудь сложных сценариев обновления.
источник

VS

Vladislav 👻 Shishkov... in Архитектура данных
Да, я уже понял вашу позицию
источник

MV

Mitya Volodin in Архитектура данных
Phil Delgyado
Я не совсем понял, речь идет об обновлении версии своего решения или об обновлении мажорных версий самой СУБД?
В первом случае обычно нет проблем реализовать обновление без простоя вообще.
Во втором - зависит от конкретной СУБД, конечно.
Любой случай обновления бинарей базы требует остановки процесса субд.
источник

MV

Mitya Volodin in Архитектура данных
В некоторых архитектурах и при небольших объемах можно выкрутиться, но в основном - нет. Даже если storage и compute разделены, потребуется почти полное дублирование compute и все равно разрывы в работе на переключение или переход в RO режим
источник

PD

Phil Delgyado in Архитектура данных
Mitya Volodin
В некоторых архитектурах и при небольших объемах можно выкрутиться, но в основном - нет. Даже если storage и compute разделены, потребуется почти полное дублирование compute и все равно разрывы в работе на переключение или переход в RO режим
Хм, мы, опять-таки, о чем говорим, о смене мажорной версии СУБД?
Или о своем коде? Для своих решений нет необходимости обновлять ядро СУБД, там обновление без простоя делается достаточно просто (и в любом приличном финтехе это делают).
Если о ядре СУБД, то там тоже есть варианты, например один из основных причин использовать Oracle RAC в настоящее время - это именно плавное обновление версии СУБД.
Но можно и через Active-standby, там переключение без потери можно сделать, при нормальной реализации клиентских приложений.
Все останавливать - нет необходимости.
Впрочем, это все принципиально для OLTP, для OLAP простой в несколько часов часто считается несущественным, там проще все остановить, конечно.
источник

PD

Phil Delgyado in Архитектура данных
Впрочем, при большом OLAP там все равно обычно есть и резервирование и распределение по нескольким узлам, так что нужно только заботится о совместимости версий - но это уже от вендора зависит.
источник

AS

Alexander Shinkov in Архитектура данных
Phil Delgyado
Оба кейса много на чем решаются. Ансибл - не удачный инструмент для сколь-нибудь сложных сценариев обновления.
Интересно, расскажете где не получилось?
источник

PD

Phil Delgyado in Архитектура данных
Alexander Shinkov
Интересно, расскажете где не получилось?
Нормальное обновление без останова сложной системы - это итеративный многостадийны процесс с кучей сценариев вида:
"развернуть сервис версии n+1, настроить меш по переводу на него тестовых пользователей, прогнать тесты на тестовых пользователях, проверить логи, запросить у админа разрешение продолжить, настроить меш на перевод 1% пользователей, подождать час, проверить логи, запросить у админа разрешения продолжить, перевести 10% пользователей, подождать день" и т.п.
Плюс еще параллельные миграции (в том числе долгосрочные), совместимость разных сервисов, переключения фичафлагов по факту окончания выкладки и так далее.
Рулить этим из ансибла (который сделан в идеологии "привести целевые сервера в соответствие с описанным декларативно идеалом") очень неудобно (хотя, конечно, реально  - но очень не выгодно).
Впрочем, удобных инструментов для сложной выкладки на рынке нет. Что-то можно сделать на грэдле, что-то можно сделать груви-сценариями в Jenkins (с кучей плагинов), но удобной платформы - нет.
Основные проблемы - это "долгосрочные операции" (подождать час, а потом анализировать статистику), событийные модули (а если сработал алерт на прометеусе - откатить выкладку), взаимодействие с оператором (после 10% пользователей такая-то статистика - продолжать или нет).
источник