Size: a a a

2021 March 12

ИМ

Илья Макеев... in ctodailychat
двачуешь, получается =)
источник

S

Stanislav in ctodailychat
Илья Макеев
двачуешь, получается =)
Получается, так
источник

E

Eugene in ctodailychat
Igor V
Блеск и нищета SOA архитектуры. Ваша задача легко решается, если заменить термин microservice на external service и представить как бы выгледело тестирование в таком случае.

Приложение которому нужен Stripe не может для своих тестов задеплоить Stripe определенной версии. Поэтому downstream использует тот upstream, который доступен и не может требовать ничего больше.

Самый простой способ это поднять dev staging environment к которому вы относитесь так же как к вашем production. В этом окружении живут сервисы из ветки main которые можно использовать для нужд разработки и тестирования.

У каждой команды есть свое CI окружение которое использует сервисы из dev staging. Если они хотят что-то протестировать то льют в свой CI, но возможности деплоить другие версии upstream микросервисов у них нет, потому что каждый микросервис живет своей жизнью и зависимый компонент ничего не знает о жизненном цикле своей зависимости.

Далее для юнит тестов мокаем - здесь нет альтернатив, потому что тесты обязаны быть быстрыми,  для интеграционных тестов поднимаем docker compose где это возможно, а для всех остальных тестов используем сервисы из dev staging.
лайк

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

когда другие сервисы будут деплоить новый мастер/мейн для дева/стейджа, оно может упасть, и ваши тесты будуть падать
источник

IV

Igor V in ctodailychat
Eugene
лайк

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

когда другие сервисы будут деплоить новый мастер/мейн для дева/стейджа, оно может упасть, и ваши тесты будуть падать
поэтому микросервисная архитектура не для всех. если сервис не может обеспечить backward/forward compatibility то стоит подумать нужна ли такая зависимость.
источник

E

Eugene in ctodailychat
Igor V
поэтому микросервисная архитектура не для всех. если сервис не может обеспечить backward/forward compatibility то стоит подумать нужна ли такая зависимость.
Ну да, я так понимаю это вынужденный trade off, хочешь микро сервисы и team per service, есть свои подводные камни
источник

E

Eugene in ctodailychat
И я не про compatibility
источник

E

Eugene in ctodailychat
Они просто могу зафейлить
источник

E

Eugene in ctodailychat
Залить багу
источник

SS

Sergey Sergeev in ctodailychat
Жираф Жирафович
Вам лид саппорта не нужен? 6 лет опыта игрового саппорта, из них 4 в качестве лида второй линии, опыт поддержки международных проектов с аудиторией в 300к MAU, в том числе под ключ (от непосредственного общения с юзерами до разработки ТЗ для инструментов поддержки и написания всей саппорт документации, индивидуальной работы со сложными кейсами итд итп). Правда, денех хочу для саппорта много, от 80, иначе нет смысла из мейла уходить.
прям сейчас точно нет — у нас всего 6 человек в отделе + лид, пока справляются с запасом. Но будем скоро расширяться, может и появится потребность. Давай пока просто запишу контакт)
источник

IV

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

ЖЖ

Жираф Жирафович... in ctodailychat
Sergey Sergeev
прям сейчас точно нет — у нас всего 6 человек в отделе + лид, пока справляются с запасом. Но будем скоро расширяться, может и появится потребность. Давай пока просто запишу контакт)
Договорились
источник

ИМ

Илья Макеев... in ctodailychat
мы просто держали столько стейджей сколько команд
источник

DT

Dmitry Tsybin in ctodailychat
Igor V
Блеск и нищета SOA архитектуры. Ваша задача легко решается, если заменить термин microservice на external service и представить как бы выгледело тестирование в таком случае.

Приложение которому нужен Stripe не может для своих тестов задеплоить Stripe определенной версии. Поэтому downstream использует тот upstream, который доступен и не может требовать ничего больше.

Самый простой способ это поднять dev staging environment к которому вы относитесь так же как к вашем production. В этом окружении живут сервисы из ветки main которые можно использовать для нужд разработки и тестирования.

У каждой команды есть свое CI окружение которое использует сервисы из dev staging. Если они хотят что-то протестировать то льют в свой CI, но возможности деплоить другие версии upstream микросервисов у них нет, потому что каждый микросервис живет своей жизнью и зависимый компонент ничего не знает о жизненном цикле своей зависимости.

Далее для юнит тестов мокаем - здесь нет альтернатив, потому что тесты обязаны быть быстрыми,  для интеграционных тестов поднимаем docker compose где это возможно, а для всех остальных тестов используем сервисы из dev staging.
Круто, спасибо за развёрнутый ответ. Твоё предложение хорошо резонирует с тем, что я и собираюсь сделать.
Но возникает технический вопрос: как лучше организовать “У каждой команды есть свое CI окружение которое использует сервисы из dev staging.”?

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

VI

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

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

VI

Vladimir Ivanov in ctodailychat
в которые будет литься как раз не совсем всё
источник

DT

Dmitry Tsybin in ctodailychat
Илья Макеев
мы просто держали столько стейджей сколько команд
Тут возникает вопрос про количество команд. Я тоже так делал, когда у меня было 30-40 разработчиков (а потом мы вообще перешли на один общий стейджинг).  Но когда их становится 250, а в перспективе 1 и даже 2, нужно подумать как это масштабровать
источник

IV

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

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

VI

Vladimir Ivanov in ctodailychat
у нас сейчас +- так, как описано выше - staging + prod куда льётся всё, uat - куда льётся часть, нужная командам. uat можно каждому выдать свой
источник

VI

Vladimir Ivanov in ctodailychat
Vladimir Ivanov
у нас сейчас +- так, как описано выше - staging + prod куда льётся всё, uat - куда льётся часть, нужная командам. uat можно каждому выдать свой
юнит на моках + интеграционные, но на тест контейнерс
источник

DT

Dmitry Tsybin in ctodailychat
Vladimir Ivanov
в которые будет литься как раз не совсем всё
Вариант с неймспейсами выглядит как один из. У меня было как раз 3 опции и эта вторая:
1. Что-то условно “классное, про что я не знаю”
2. Один Кубик и и по неймспейсу под команду
3. Кубик под каждую команду
Хочу понять, правда ли нет первой 🙂
источник