Кодеры телеграм ботов, прошу научения!
Ребят, укажите правильный путь джедая !
Вот пишешь ты бота для телеги или проект на джанге. Учебное, не коммерческое! Но хочется чтобы все работало как у реальных людей. Куда это потом бесплатно сложить, чтобы бот 24/7 работал?
Что-то вообще потерялся. Если её трудно, подробно расскажите кто-то, пост для новичков сделайте плиз!
И с Джанго проектом такой же вопрос.
Спасибо
Мигрируем БД в продакшене без даунтайма
Основной совет, который даётся в статье — нужно разбивать деплой новой фичи на 2 и более части, чтобы соблюсти обратную совместимость. Это очень важно, если для выкатки новой фичи необходимо изменить схему базы данных.
Обратная совместимость необходима, потому что во время деплоя в кластере будут одновременно инстансы со старой версий и обновлённой версией приложения, и нам необходимо обеспечить их одновременную бесперебойную работу.
Например, если требуется удалить поле из БД, нужно выполнять деплой в 2 захода:
Удаляем весь код, работающий с этим столбцом — деплоим
Удаляем столбец и снова — деплоим
Если бы мы удаляли одновременно поле и код, взаимодействующий с кодом, то мы бы столкнулись с ситуацией, когда старые версии, всё ещё будут пытаться обращаться к этому полю, но так как поле удалено — это может привести к даунтайму.
В нашем случае, такой ситуации не случится, так как к моменту удаления столбца, все инстансы в кластере обновлены и больше не взаимодействуют с полем, теперь его можно удалить.
Сказ о том, как у нас система деплоя работает (спойлер - huevos)
Коммитишь изменения. Автоматически запускается билд. Сидишь ждешь: ну это же дотнет, хули тут билдиться-то? Ан нет, изволь ждать минут десять. И это если повезет. Потом запускается деплой на дев.
Пока это все дело варится на медленном огне, ты успеваешь пофиксить пару-тройку багов. И... конечно же закоммитить их.
Думаешь, оно же задеплоится следом? Может быть. Но не факт. Вернее, не только лишь факт, следом задеплоются не только лишь все. Некоторые, например, задеплоятся до. Но вероятнее всего, наебнутся оба. Или один, а другой нет. Или наоборот. В общем, деплой Шредингера. Принцип девопсовой запутанности.
Но мы ведь тоже не пальцем деланы, мы, пока новый билд блидится, старый то возьмем, и отменим!
Но что это? Все деплои теперь помечены ворнингами? Ааа, ну так это наверное ерунда, просто система деплоя нам показывает, что деплоя не было. Ничего, мы привыкнем.
Но вот, наконец, релиз не деве и мы готовы раскатывать его на прод. Я не всегда тестирую свой код, но если я это делаю, я делаю это на проде!
Нажимаем кнопочку и... долго думаем и... опять ворниг! Но мы ведь умные лобстеры, научены прошлым: ворнинг это всего лишь ворниг!
Проверяем и... не работает, собака. Наверное, мы что-то не так пофиксили.
(...прошло некоторое время...)
Как выяснилось, мы потратили туеву хучу времени на то, чтобы выяснить, что на проде старый релиз.
Но как же так? А очень просто, ворнинг это не просто ворниг, а фатал! Просто ситема деплоя нам так об этом намекает.
Вот нет бы прямо сказать.
Ан нет, с ее точки зрения, если сама система деплоя не упала, значит это не ворнинг, а все прошло хорошо. Ну и впрямь, чего переживать-то?
Сказали же: мобилизация час-тич-ная. Деплой ус-пеш-ный.
Ну и что, что назад откатились, отработало же!
И вот, как те голуби, что танцуют перед едой (им рандомно еду высыпали, да они и поизобретали танцы с бубном), мы коммитим строго по одному, на все ворниги реагируем паникой, после деплоя проверяем версию по на окружении и в бд не забываем сходить за версией миграции.
А если что-то пошло не так, идем сразу в логи, ибо, шоб жизь медом не казалась, ситема деплоя нам о причинах ошибки не скажет. Да и откуда ей знать, если и ошибки та не ошибки, а ворнинги!
Да и те - желтые