
Evgeniy
05.07.2017
00:34:45
мы убираем спринты

Sergey
05.07.2017
00:34:50
типичный недоскрам

Evgeniy
05.07.2017
00:34:51
ждем завершенные таски
и выкладываем их

Google

Evgeniy
05.07.2017
00:35:04
нет сейчас у нас agile типо

Sergey
05.07.2017
00:35:04
ясно понятно
https://www.youtube.com/watch?v=UQOmGiv7rUk
обязательно посмотри этот видос
тебе должно зайти

Evgeniy
05.07.2017
00:35:54
мы хотим оставить ценности agile (типо ебашим для пользователей)
но выкладка релизов без спринтов и как готов функционал
условно говоря так
типо сделал функционал, сделал дему людям
все посмотрели надо ли выкладывать если надо выкладываем
ну и всякие автотесты и тд
и автоматизации

Sergey
05.07.2017
00:37:27
вот в этом видосике объясняют что ценность аджайла не в "ебашим для пользователей" а в cash in my poket.

Google

Evgeniy
05.07.2017
00:37:47
у нас значит не правильный agile
мы стараемся людям делать лучше чтобы cash in my poket
они заносили

Sergey
05.07.2017
00:38:13
потому что "ебашим для пользователей" должно быть вне зависимости аджайл у тебя или ватерфол. Вопрос больше сбора фидбэка и анализа вэлью. А все это влияет на прибыль.

Evgeniy
05.07.2017
00:38:37
ок

Sergey
05.07.2017
00:38:49
если что - это самый крутой видос на тему всех этих аджайлов

Evgeniy
05.07.2017
00:38:58
спс
у нас сейчас одна проблемка с выкладкой релизов)
сделали мы сине зеленый релиз
но беда с бд
как жить с ситуациями когда изменения обратно не совместимы
если что мы фигачим без шовные релизы
хотя лично я против их
поэтому вопросы выкладки довольно забавны)
и протестить их довольно сложно
как вы их решаете у себя?
вариант с плашкой типо идут тех работы и выкладка потом не рассмматривают
типо надо чтобы пользователь это не видел

Sergey
05.07.2017
00:43:57

Google

Sergey
05.07.2017
00:44:23
варианты следующие - проанализируй почему случаются нарушения обратной совместимости

Evgeniy
05.07.2017
00:44:31
у нас много чего делалось на коленке
и при переделке перекрайваем куски

Sergey
05.07.2017
00:44:47
1. слишком большие релизы - тут могут помочь CD
2. слабый анализ проблемы и, как ты сказал, "делали на коленке"

Evgeniy
05.07.2017
00:44:59
у нас сейчас обе причины на самом деле
у нас специфика сервиса такова
что есть самописные очереди
и есть процессы долго играющие

Sergey
05.07.2017
00:45:45
p.s. для CD не надо отказываться от спринтов - спринты хороший способ организации задач. Главное не думать что конец спринта это какой-то дедлайн.

Evgeniy
05.07.2017
00:46:08
например пользователь что то заказывает
и создание заказа занимает в среднем 3 - 5 минут

Sergey
05.07.2017
00:46:48
ну у меня есть похожие штуки, типа операция вызывает три транзакции последовательные, и операция может длиться до трех часов

Evgeniy
05.07.2017
00:46:49
и таких заказаов в среднем оплаченных около 50 открытых на 2 серверах очередей

Sergey
05.07.2017
00:47:02

Evgeniy
05.07.2017
00:47:08
да типо того только еще ошибки могут быть
у нас в секунду обычно по 50 штук стабильно работает

Sergey
05.07.2017
00:47:27
у меня тоже, транзакция на любом этапе может зафэйлиться и это надо хэндлить

Evgeniy
05.07.2017
00:47:33
почти всегда загружены ими
да причем есть ошибки типо все фатально упало
и есть ошибки упали не фатально а сторонее апи

Google

Sergey
05.07.2017
00:48:06
ну есть, в такой ситуации я просто кикаю задачу в отдельную очередь и прилетает нотификашка
и потом процессится вручную уже

Evgeniy
05.07.2017
00:48:25
идея в том что как выкладывать релизы
если есть фоновые таски

Sergey
05.07.2017
00:48:39
так а что не так?

Evgeniy
05.07.2017
00:48:39
например если релиз касается этих очередей

Sergey
05.07.2017
00:49:02
ну тип, я всеравно не вижу проблемы, из твоего описания задача больше суток всеравно не висит

Evgeniy
05.07.2017
00:49:15
например перенос колонки из одной таблицы в другую

Sergey
05.07.2017
00:49:16
а поддерживать обратную совместимость сутки, или даже неделю, не сложно

Evgeniy
05.07.2017
00:49:23
соответственно изменение в app и бд
если мы релизим в начале app потом бд то некоторое время в бд не будет колонки
и fail при write
если релизим бд а потом app переключаем с синего на зеленый

Sergey
05.07.2017
00:50:28
1. добавляем колонку в базу и пишем код который будет писать в обе колонки
2. деплоим и ждем
3. пишем миграцию которая перенесет старые данные
4. деплоим
5. когда все ок и данные в новой колонке всегда актуальны - дропаем колонку

Evgeniy
05.07.2017
00:50:44
то после выполнения миграции
данные могут быть обработаны

Sergey
05.07.2017
00:51:20
я тебе вот кейс реальный привел

Evgeniy
05.07.2017
00:51:26
ибо пункт 4 будет не скоро

Sergey
05.07.2017
00:51:35
ээээм в смысле?

Google

Sergey
05.07.2017
00:51:48
ты ее добавляешь, ее полюбому небыло раньше

Evgeniy
05.07.2017
00:51:57
пишем код который будет писать в обе колонки

Sergey
05.07.2017
00:52:14
ну ты ж сначала миграцию накатываешь которая колонку добавляет, а уже потом код деплоишь

Evgeniy
05.07.2017
00:52:30
да можно и так
потом некоторое время пишем в места (В старое и новое

Sergey
05.07.2017
00:52:49
у меня просто в дженкинсе есть джоба которая все эти операции в строгой последовательности запускает

Evgeniy
05.07.2017
00:53:05
а как вы их разделяете?
ветки

Sergey
05.07.2017
00:53:15
кого разделяем?

Evgeniy
05.07.2017
00:53:23
ну миграции
на добавления колонки
на удаление колонки
мы laravel юзаем и их миграции

Sergey
05.07.2017
00:53:39
ну версии, они к тегам билда привязаны

Evgeniy
05.07.2017
00:53:59
нет я о том что

Sergey
05.07.2017
00:54:01
ну мол миграция на удаление колонки появится только в новом билде

Evgeniy
05.07.2017
00:54:09
в начале выполнить только миграции по добавлению колонок

Sergey
05.07.2017
00:54:26
ну так в этой версии билда еще нет "другой" миграции

Evgeniy
05.07.2017
00:54:34
у нас предлагают извращенный вариант с отдельной веткой миграцией на удаление
типо выложились и потом удаляем

Sergey
05.07.2017
00:54:42
не, это херня полная

Evgeniy
05.07.2017
00:54:55
я знаю