Vitalii
Ну и соответственно у продакшена одна база
Aleksey
Vitalii
изменения не всегда только со стороны кодовой базы, но и структуры БД
Pavel
С базой начинаются пляски, да ) Сложная тема
Vitalii
ну, а как решать-то?
Aleksey
ну как - никак
Vitalii
есть какой-то красный\коричневый вариант для базы?
Aleksey
зависит от приложенния
Anonymous
ну тестами и стейджингом
Aleksey
частично миграции помогают
Aleksey
но частично
Pavel
Если база хорошо нормализована и у нее четкая схема есть, то тестирование на стейджинге снижает риск проблем на продакшене
Aleksey
Vitalii
самый простой вариант это делать еженедельно копию БД продакшена и там тестировать.
Slava
а что ты имеешь ввиду под тестовым приложением и как ты хочешь его тестировать?
Vitalii
да, примерно ясно :)
Vitalii
Slava
ага
Vitalii
ага
ну смотри. Есть код приложения и у него есть два состояние дев и прод. Отличаются они конфигами. Я пока сталкиваюсь с тем, что для теста приложение надо немного подшаманить: сменить конфиги БД, добавить настроек и входных скриптов... и кароче получается что тестируем приложение с одними конфигами, а на прод уходят другие - не дело это.
Хочется запаковать код в контейнер и больше в нем для теста ничего не менять, а, например, линковать к контейнеру с кодом контейнер с тестовой базой (копию прода) и там тестить.
Ну а как тестить... автотестами :)
Slava
а мб просто тесты писать интеграционные? Проблему нашел - понял - написал интеграционный тест - он свалился - пофиксил проблему - фикс ушел в прод
Slava
если говорить о ручном тестировании, то скорее всего живые данные в большом объеме не нужны. А все остальные можно залить самостоятельно. У нас вот, например, есть специальная миграция с тестовыми данными
Vitalii
если раз в год, то допустимо :)
Vitalii
если каждый деплой, то ппц
Aleksey
Vitalii
гитХАБ деплоит код на продакшен по 20 раз в день
Vitalii
на хабре статья была. СмеЛЫЕ ребята. Видать у них все на столько отлажено что можно деплоить в полном автомате.
nvkv
> Смешые ребята.
> Смешные
Aleksey
Pavel
Нужно придерживаться просто некоторых правил, и тогда 90% миграций проходят безболезненно. И даже откатить можно.
Vitalii
Смелые**
nvkv
они не смелые, они умные
nvkv
20 раз в день хуйня
nvkv
есть люди, которые сотни раз в день деплоятся
Aleksey
амазон например
Vitalii
ну код заливать не проблема, тесты пиши и все.
nvkv
по факту, если ты большой продуктовый бизнос с веб-приложением — это обязательное условие выживания
nvkv
в 2017
Vitalii
а вот когда чет с базой меняется, я хз как так делать чтобы все на автомате.
Vitalii
иконку перед монитором поставить и пальцы крестить качественно :)
Sergei
Vitalii
хаха
nvkv
Vitalii
у меня CI на каждый коммит работает ~10 мин. Мне не с чем сравнить, так как первый мой CI сценарий. Но это моного или нормально?
1. Сборка кода
2. Сборка контейнеров
3. Релизит контейнеры после теста
4. Выкладывает на прод
nvkv
лучше напиши тайминги каждой фазы
nvkv
если у тебя сборка занимает 8 минут, то хуле тут делать
nvkv
а вообще 10 минут это довольно много, как по мне
Pavel
Это как-то многовато оверхеда, на каждый комит пересобирать все.
Pavel
Ты каждый комит чтоли деплоишь на прод?
Vitalii
пока что да :)
Но планирую разбить по веткам чтобы только деплой на прод столько занимал
Vitalii
Compile: 1 minute 13 seconds
Build: 3 minutes 29 seconds
Release: 1 minute 10 seconds
Deploy: 1 minute 44 seconds
Aleksey
а тесты?? :))
Vitalii
их пока что нет, так что и запускать нечего:)
Pavel
И что значит фаза Release ?
Vitalii
контейнеры тестовые метятся тегами релиза и пушатся в регистри
Vitalii
типа
nginx_latest_test => nginx_latest
Vitalii
засирается регистри контейнерами сильно, но пока другого не придумал.
nvkv
ммм, build это билд контейнера?
nvkv
чот долго
nvkv
оно там все зависимости ставит штоле?
Vitalii
да, там собирается два конетйнера. И да, там зависимости проекта ставятся.
nvkv
вот тут можно же пооптимизировать
nvkv
у тебя зависимости часто меняются?
nvkv
сделай, например, base image с уже установленными зависимостями
nvkv
и зашедуль его сборку раз в сутки ночью
nvkv
а все контейнеры собирай унаследованными от этого имиджа
nvkv
выиграешь много времени на сборке
Vitalii
Спасибо, отличный вариант!
Aleksey
более того, там все сведется к ADD app/
Vitalii
А как бы сделать так, чтобы не засирать регистри контейнерами с метками?
Aleksey
гарбедж коллектор в регистри настроить
Vitalii
а такое в gitlab registry есть? я не находил :(
nvkv
Насколько я помню, гитлаб реджистри работает поверх обычного реджистри
Vitalii
Да, нашел какие-то заметки в гугле. Почитаю, спасибо!
Alf 🙀
А/б тестирование не?
Alf 🙀
Ну и потом не удивляйтесь ах у нас данные клиентов утекли лол