Size: a a a

2021 March 12

DT

Dmitry Tsybin in ctodailychat
Igor V
еще один важный момент: если зависимости сложно мокать, то это сигнал к тому что неправильно определены границы сервиса и нарушен loose coupling
Долгая история, много пространсв для улучшения и этим точно нужно заниматься, но сейчас нам надо выживать 🙂 Растём 15Х в год по пользователям от очень ненулевой базы, удваиваемся по людям который год подряд.
источник

DT

Dmitry Tsybin in ctodailychat
Eugene
лайк

но тоже есть свои нюансы

когда другие сервисы будут деплоить новый мастер/мейн для дева/стейджа, оно может упасть, и ваши тесты будуть падать
Такое может быть, но если делать graceful deploy, то не должно часто случаться. Если будет прямо бесить, то можно поставить lock на деплои и запуски тестов и выполнять всё это последовательно
источник

E

Eugene in ctodailychat
Igor V
поэтому удобно заменять термины - если условный страйп зальет багу, то у вас тоже все упадет на всем что выше юнит тестов.
Я слышал про такой вид тестов, когда ты тестируешь 3party API и его compatibilty
источник

E

Eugene in ctodailychat
Dmitry Tsybin
Такое может быть, но если делать graceful deploy, то не должно часто случаться. Если будет прямо бесить, то можно поставить lock на деплои и запуски тестов и выполнять всё это последовательно
Я неправильно выразился, упал не деплой, а ошибка в приложении
источник

DT

Dmitry Tsybin in ctodailychat
Eugene
Залить багу
Если научиться решать задачу “запустить на деплой не только свои тесты, но и тесты своих зависимостей” так, чтобы не переполнить все возможные очереди, то это тоже должно решаться. Иначе да, надо будет сидеть и разбираться, но если за staging есть нормальный надзор, то должно быть норм
источник

E

Eugene in ctodailychat
Eugene
Я слышал про такой вид тестов, когда ты тестируешь 3party API и его compatibilty
Кст я писал такие интеграционные тесты Страйпа, создавал удалял платежки в sandbox
источник

S

Stanislav in ctodailychat
Igor V
поэтому удобно заменять термины - если условный страйп зальет багу, то у вас тоже все упадет на всем что выше юнит тестов.
Точно

Тогда только мониторинги и graceful degradation...

Системы слишком сложные
источник

IV

Igor V in ctodailychat
Dmitry Tsybin
Круто, спасибо за развёрнутый ответ. Твоё предложение хорошо резонирует с тем, что я и собираюсь сделать.
Но возникает технический вопрос: как лучше организовать “У каждой команды есть свое CI окружение которое использует сервисы из dev staging.”?

Можно поднимать свой Кубик для каждой группы и деплоить туда не совсем всё, а только их сервисы. Это уже лучше, но всё равно нужно будет плодить 100500 кубернетесов под каждую команду и этим не очень хочется заниматься.
Вот вопрос как раз в том, можно ли как-то космическими технологиями Кубернетеса решать это как-то более элегантно. Задача, кажется, не уникальная и запрос на это должен быть.
одна из причин почему в некоторых случаях лучше жить на микросервисной архитектуре потому что у каждой команды свои требования к окружению и к организации работы. команда сама решает как ей работать.

поэтому стороить микросервисы и одновременно с этим одинаковый мир для всех команд звучит очень странно.

output от команды это задеплоеный код в прод, деплой в dev staging и подключене своего сервиса в системе мониторинга. все остальное они решат сами
источник

S

Stanislav in ctodailychat
Отличный диалог для fomo, кстати
источник

IV

Igor V in ctodailychat
Eugene
Кст я писал такие интеграционные тесты Страйпа, создавал удалял платежки в sandbox
Точняк.

Sandbox страйпа это копия прода, к которому команда страйпа относится точно так же как и к проду. Ты можешь его использовать для своих целей, но нет возможности диктовать какая именно версия нужна.

В мире микросервисов команда должна предоставить такой же sandbox для других
источник

E

Eugene in ctodailychat
но нет возможности диктовать какая именно версия нужна.
Вроде как там api version прям в урле указываешь(2020-12-12)
источник

E

Eugene in ctodailychat
так что привязка должна быть AFAIK
источник

DT

Dmitry Tsybin in ctodailychat
Igor V
одна из причин почему в некоторых случаях лучше жить на микросервисной архитектуре потому что у каждой команды свои требования к окружению и к организации работы. команда сама решает как ей работать.

поэтому стороить микросервисы и одновременно с этим одинаковый мир для всех команд звучит очень странно.

output от команды это задеплоеный код в прод, деплой в dev staging и подключене своего сервиса в системе мониторинга. все остальное они решат сами
Ну хз, у меня другой опыт. Чем более унифицированы окружения — тем лучше. А микросервисами решается не задача уникальных потребностей к окружению, а задачи:
1. Оунершип рантайма (когда один большой монолит и что-то сломалось, то сложно понять кто должен чинить и в итоге чинят одни и те же)
2. Развязанный релизный цикл — если в монолите в мастер попадает бага, то конвеер релизов встаёт для всех
3. Уменьшение сложности системы — у монолита обычно много-много зависимостей на разные компоненты и это сложно понимать, поддерживать, скейлить. Понятно, что с микросервисами можно тот ещё ад сделать, но если хорошо подумать и последить, то можно этого и избежать
источник

IV

Igor V in ctodailychat
Eugene
но нет возможности диктовать какая именно версия нужна.
Вроде как там api version прям в урле указываешь(2020-12-12)
это чуток другое.

команда страйпа держит N прод версий и гарантирует их работу.

моя мысль в том, что тебе доступно только то что дают.
источник

E

Eugene in ctodailychat
А, ну да
источник

E

Eugene in ctodailychat
Это уже их зона ответственности
источник

E

Eugene in ctodailychat
Поднять свой страйп inHouse 🙂
источник

DT

Dmitry Tsybin in ctodailychat
> output от команды это задеплоеный код в прод, деплой в dev staging и подключене своего сервиса в системе мониторинга. все остальное они решат сами
Тут тоже не могу согласиться, но тк я вроде вопрос задавал, то не буду спорить 🙂 Добавлю ссылочку на бложек любимого в этом чате Спотифая: https://engineering.atspotify.com/2020/08/17/how-we-use-golden-paths-to-solve-fragmentation-in-our-software-ecosystem/
источник

DT

Dmitry Tsybin in ctodailychat
В общем, если я правильно услышал мнение общественности, то схема “один Кубернетес в котором есть общий staging + для каждой команды по namespace для их песочницы” — это нормальный и достаточно дефолтный способ решения задачи.
источник

DT

Dmitry Tsybin in ctodailychat
Возникает вопрос, как сделать так, чтобы заданное приложение из общего staging ходило в моё приложение не из staging, а из песочницы (если я хочу проверить, что своим деплоем не поломаю клиентов), тут надо подумать.
источник