|
Что такое DevOps?
#21879509
Ссылка:
Ссылка на сообщение:
Ссылка с названием темы:
Ссылка на профиль пользователя:
Ссылка на вложение:
|
||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
#18+
Дмитрий Мух RonibGreat, можно обойтись и без feature веток и это не весь прцесс, а только его часть а в чём сложность? вот мне всё понятно, хоть и мелко ... |
||||||||||||||||
:
Нравится:
Не нравится:
|
||||||||||||||||
07.05.2019, 02:19 |
|
Что такое DevOps?
|
|||
---|---|---|---|
#18+
RonibGreat ...Что еще не хватает? ... (круглый) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2019, 11:45 |
|
Что такое DevOps?
#21879737
Ссылка:
Ссылка на сообщение:
Ссылка с названием темы:
Ссылка на профиль пользователя:
Ссылка на вложение:
|
||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
#18+
... |
||||||||||||||||
:
Нравится:
Не нравится:
|
||||||||||||||||
07.05.2019, 11:50 |
|
Что такое DevOps?
|
|||
---|---|---|---|
#18+
RonibGreat, не понятно, почему вы решили, что "без консультантов ну совсем не разобраться" и "чтобы постигнуть все пункты этого процесса то надо пару месяцев" постигать придётся не сей процесс, а его конкретную реализацию что у вас там? Jenkins? а по процессу: вместо feature branches можно использовать feature toggles (flags) останутся только master, develop, release и ветки с хотфиксами пул реквесты должны идти прямо в develop, новый функционал закрыт feature toggles (flags) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2019, 11:57 |
|
Что такое DevOps?
|
|||
---|---|---|---|
#18+
а дальше уже blue-green deployment, или canary releases цель: zero downtime, проверка новой версии на проде и быстрый откат в случае чего ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2019, 12:01 |
|
Что такое DevOps?
|
|||
---|---|---|---|
#18+
интеграция с Jira, Slack, Teams, выпечка и хранение версий артифактов - это уже конкретная реализация ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2019, 12:03 |
|
Что такое DevOps?
|
|||
---|---|---|---|
#18+
Дмитрий Мух, Джира, Слэк, Артифактори - эта вся лабуда тоже есть. Слэк не больше как замена имейла. Джира понятно - от нее все пляски и начинаются. feature toggles (flags) - посмотрю, может перелабаю если это реально упростит процесс, а то прошелся по всему процессу с тестовой задачей так слишком сложно получается со всеми ветками и пул реквестами. Спацибо за подсказку! ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2019, 13:36 |
|
Что такое DevOps?
|
|||
---|---|---|---|
#18+
Дмитрий Мух а дальше уже blue-green deployment, или canary releases цель: zero downtime, проверка новой версии на проде и быстрый откат в случае чего Если "чего" случилось, то для крутящегося вокруг базы приложения быстро откатиться и сделать это "автоматом" уже не получится. Как только прошла первая транзакция, данные уже относятся к обновлённой схеме БД, где даже в не изменившийся в структуре бд атрибут может иметь новую семантику (конечно, за такое надо по рукам, но команды разработчиков - они же сами с усами, да и поди отлови всех). Частая ситуация - в изменённую структуру начинают немедленно лететь данные. И что с ними делать? В большинстве случаев "случилось" - отнюдь не немедленно всё взорвалось, а где-нибудь на следующий после раскатки день критически стала расти нагрузка (собственно функциональные ошибки по большей части ловятся или сразу, или вообще в Test/UAT). Т.е. теоретически, должна некоторым образом обеспечиваться процедура отката с сохранением данных из новой структуры. Такой откат в общем случае требует ручного написания скриптов, а значит, в них тоже могут содержаться ошибки. Как вы подобные ситуации обрабатываете, как их предотвращаете? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2019, 16:23 |
|
Что такое DevOps?
|
|||
---|---|---|---|
#18+
CawaSPb Т.е. теоретически, должна некоторым образом обеспечиваться процедура отката с сохранением данных из новой структуры. Такой откат в общем случае требует ручного написания скриптов, а значит, в них тоже могут содержаться ошибки. Как вы подобные ситуации обрабатываете, как их предотвращаете? CawaSPb Если "чего" случилось, то для крутящегося вокруг базы приложения быстро откатиться и сделать это "автоматом" уже не получится. Как только прошла первая транзакция, данные уже относятся к обновлённой схеме БД, где даже в не изменившийся в структуре бд атрибут может иметь новую семантику (конечно, за такое надо по рукам, но команды разработчиков - они же сами с усами, да и поди отлови всех). ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2019, 18:28 |
|
Что такое DevOps?
|
|||
---|---|---|---|
#18+
Дмитрий Мух RonibGreat, не понятно, почему вы решили, что "без консультантов ну совсем не разобраться" и "чтобы постигнуть все пункты этого процесса то надо пару месяцев" постигать придётся не сей процесс, а его конкретную реализацию что у вас там? Jenkins? Когда тестировали - всё шло хорошо, а когда дали отмашку всем департаментам заливать в Дженкинс свои исходники, вот тут-то опен-сорс и не выдержал напора дерьма и слив заглох. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2019, 02:04 |
|
Что такое DevOps?
|
|||
---|---|---|---|
#18+
CawaSPb Дмитрий Мух а дальше уже blue-green deployment, или canary releases цель: zero downtime, проверка новой версии на проде и быстрый откат в случае чего Если "чего" случилось, то для крутящегося вокруг базы приложения быстро откатиться и сделать это "автоматом" уже не получится. Как только прошла первая транзакция, данные уже относятся к обновлённой схеме БД, где даже в не изменившийся в структуре бд атрибут может иметь новую семантику (конечно, за такое надо по рукам, но команды разработчиков - они же сами с усами, да и поди отлови всех). Частая ситуация - в изменённую структуру начинают немедленно лететь данные. И что с ними делать? В большинстве случаев "случилось" - отнюдь не немедленно всё взорвалось, а где-нибудь на следующий после раскатки день критически стала расти нагрузка (собственно функциональные ошибки по большей части ловятся или сразу, или вообще в Test/UAT). Т.е. теоретически, должна некоторым образом обеспечиваться процедура отката с сохранением данных из новой структуры. Такой откат в общем случае требует ручного написания скриптов, а значит, в них тоже могут содержаться ошибки. Как вы подобные ситуации обрабатываете, как их предотвращаете? Before - та часть миграций, что выполняется до переключения части клиентов на новую версию (Canary releases). After - выполняются после того как канарейка выжила (все клиенты переключены на новую версию). И есть соглашение о том, что скрипты Before не должны содержать ничего, что сделает невозможным откат в случае чего. Соответсвенно разработчики, и я в том числе, пишут код с учётом этого. Используя feature toggles, decorators и т.п. P.S.: и у нас нет единой команды разработчиков, у нас кроссфункциональные артели, каждая из которых отвечает за свою часть (модуль) продукта, от анализа до выкатки на прод. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2019, 11:13 |
|
Что такое DevOps?
|
|||
---|---|---|---|
#18+
bga83 обеспечить контроль того чтобы изменения в структуре БД не были столь критичны и проходили в несколько этапов в несколько этапов ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2019, 11:14 |
|
Что такое DevOps?
|
|||
---|---|---|---|
#18+
SandalTree Дмитрий Мух RonibGreat, не понятно, почему вы решили, что "без консультантов ну совсем не разобраться" и "чтобы постигнуть все пункты этого процесса то надо пару месяцев" постигать придётся не сей процесс, а его конкретную реализацию что у вас там? Jenkins? Когда тестировали - всё шло хорошо, а когда дали отмашку всем департаментам заливать в Дженкинс свои исходники, вот тут-то опен-сорс и не выдержал напора дерьма и слив заглох. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2019, 11:16 |
|
Что такое DevOps?
|
|||
---|---|---|---|
#18+
bga83 CawaSPb Т.е. теоретически, должна некоторым образом обеспечиваться процедура отката с сохранением данных из новой структуры. Такой откат в общем случае требует ручного написания скриптов, а значит, в них тоже могут содержаться ошибки. Как вы подобные ситуации обрабатываете, как их предотвращаете? В реальной же жизни дев - "скорей, скорей! тяп-ляп и в продакшен". Процедуре проверки восстанавливаемости бэкапов это, конечно, не аналогично. Проверка восстанавливаемости легко автоматизируется (всегда полезно иметь где-либо свежий, восстановленный из бэкапа прод; хотя бы для финального тестирования разворачиваемости изменения на свежих продуктивных данных). Откат изменений после наколбашивания данных в новую структуру - работа по подготовленному вручную скрипту. Ближе - BCP тест, проведённый с потенциальной потерей данных и применением процедур проверки такой потери и восстановления из других источников. Ни разу не видел, чтобы организация добровольно шла на такие проверки (хоть и в тестовой среде). Все проверки/переезды сервисов - в graceful режиме, пока связь между сайтами жива. bga83 CawaSPb Если "чего" случилось, то для крутящегося вокруг базы приложения быстро откатиться и сделать это "автоматом" уже не получится. Как только прошла первая транзакция, данные уже относятся к обновлённой схеме БД, где даже в не изменившийся в структуре бд атрибут может иметь новую семантику (конечно, за такое надо по рукам, но команды разработчиков - они же сами с усами, да и поди отлови всех). Пара сценариев. a) Поле увеличило размерность. - Поменяли (сделали это даже online) - Но вот где-то в интегрированной критически важной системе поле не расширили (её может вообще сторонняя организация делает, кстати). - Прилетело увеличенное значение (хорошо, если текстовое, и просто интеграция сломалась, а может и числовое и пошло автоматическое округление и "баланс" поплыл... когда-нибудь... позже). - Надо вертать в зад. А там уже значения, которые используют большую размерность. Потерять их - тоже не комильфо. Причём расширить тип колонки подчас можно лёгким мановением руки в онлайне. А вот уменьшить - уже с полной физической реорганизацией таблицы, что может уже потребовать существенного времени и не допускать модификации данных в процессе (т.е. имеем простой приложения). b) Имеем CHAR поле, хранящее какой-либо признак/класс объекта ('Y', 'N'... 'A', 'B', 'C', 'D'…), на которое завязана внутренняя логика приложения. В какой-то момент список значений расширяется. - БД дизайнер отметил это у себя в голове, в доках и спустил девелоперу. - В БД вообще ничего не пришло! (если не ограничиваем список значений констраинтами, а может и в этом случае не придти, если просто поменялась семантика поля). - По какой-то там причине релиз откатили. Никакая автоматизированная система тут не поможет – будет просто не в курсе изменений природы данных. И уж точно не будет в курсе, что (и как) с этим делать. Т.е. да, руками это всё правится, но это на каждый чих надо городить огород с огромной работой по тестированию (в одной из организаций, в которой работал, на одной из центральных баз, например, прилетало довольно часто по несколько изменений в день на прод). Вот мне и интересно послушать Дмитрия про чудесные Deployment чудеса, которые им позволяют проводить "проверку новой версии на проде и быстро откатиться в случае чего" (мы же на sql.ru и говорим о приложениях, крутящихся вокруг DB?). Что наблюдал чаще, Deployment - это дорога в один конец. Далее - хотфиксы или аккуратная ручная работа по "отскрёбыванию этого …". Другое дело - постараться впихнуть скрипт наката в одну транзакцию и по факту ошибки всё разом откатить (соответственно никаких новых данных там пока нет). Тут тебе и online, и быстрый откат (за определёнными исключениями). ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2019, 13:07 |
|
Что такое DevOps?
|
|||
---|---|---|---|
#18+
Дмитрий Мух CawaSPb пропущено... А вот кстати. Мне, как имевшему дело с релиз/деплоймент менеджментом, приходилось сталкиваться с такого типа проблемами: Если "чего" случилось, то для крутящегося вокруг базы приложения быстро откатиться и сделать это "автоматом" уже не получится. Как только прошла первая транзакция, данные уже относятся к обновлённой схеме БД, где даже в не изменившийся в структуре бд атрибут может иметь новую семантику (конечно, за такое надо по рукам, но команды разработчиков - они же сами с усами, да и поди отлови всех). Частая ситуация - в изменённую структуру начинают немедленно лететь данные. И что с ними делать? В большинстве случаев "случилось" - отнюдь не немедленно всё взорвалось, а где-нибудь на следующий после раскатки день критически стала расти нагрузка (собственно функциональные ошибки по большей части ловятся или сразу, или вообще в Test/UAT). Т.е. теоретически, должна некоторым образом обеспечиваться процедура отката с сохранением данных из новой структуры. Такой откат в общем случае требует ручного написания скриптов, а значит, в них тоже могут содержаться ошибки. Как вы подобные ситуации обрабатываете, как их предотвращаете? Before - та часть миграций, что выполняется до переключения части клиентов на новую версию (Canary releases). After - выполняются после того как канарейка выжила (все клиенты переключены на новую версию). И есть соглашение о том, что скрипты Before не должны содержать ничего, что сделает невозможным откат в случае чего. Соответсвенно разработчики, и я в том числе, пишут код с учётом этого. Используя feature toggles, decorators и т.п. P.S.: и у нас нет единой команды разработчиков, у нас кроссфункциональные артели, каждая из которых отвечает за свою часть (модуль) продукта, от анализа до выкатки на прод. Но откатываете вы как, с откатом структуры БД или без? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2019, 13:10 |
|
Что такое DevOps?
|
|||
---|---|---|---|
#18+
CawaSPb Дмитрий Мух пропущено... Скрипты миграции для основной базы пишутся вручную и разделены на две части. Before - та часть миграций, что выполняется до переключения части клиентов на новую версию (Canary releases). After - выполняются после того как канарейка выжила (все клиенты переключены на новую версию). И есть соглашение о том, что скрипты Before не должны содержать ничего, что сделает невозможным откат в случае чего. Соответсвенно разработчики, и я в том числе, пишут код с учётом этого. Используя feature toggles, decorators и т.п. P.S.: и у нас нет единой команды разработчиков, у нас кроссфункциональные артели, каждая из которых отвечает за свою часть (модуль) продукта, от анализа до выкатки на прод. Но откатываете вы как, с откатом структуры БД или без? для этого они и разбиты на два этапа: Before и After canary ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2019, 19:47 |
|
Что такое DevOps?
|
|||
---|---|---|---|
#18+
> Как вы подобные ситуации обрабатываете, как их предотвращаете? Разделяется релиз изменений базы и приложения, с целью чтоб приложение можно легко откатить, базу откатить тоже возможно, но сложнее и обычно не нужно. Сначала выкладываются изменения базы, при этом изменения не должны нарушать работу приложения в текущей версии. (ALTER TABLE ADD COLUMN вместо ..RENAME ) Также тестируется откат изменений базы. Тестируется работа приложения в текущей версии с новой структурой базы. Потом выкладывается новая версия приложения. Иногда перед релизом изменений базы выкладывают версию приложения с поддержкой новой и старой версии базы. STEP 1: DB v1, APP v1 // current statue STEP 1.5*: DB v1, APP v1.5 // *optional, if needed STEP 2 DB v2, APP v1 // or v1.5 STEP 3 DB v2 , APP v2 // released v2 изменения базы автоматизируются “скриптами” и все шаги релиза автоматизируются в CI/CD . Под “скриптами” имеется ввиду то что генерируется migration tools supported by а framework или flyway or liquidbase c ручной правкой если надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2019, 20:50 |
|
|
start [/forum/topic.php?fid=7&msg=21880771&tid=1310550]: |
0ms |
get settings: |
17ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
373ms |
get tp. blocked users: |
1ms |
others: | 302ms |
total: | 779ms |
0 / 0 |