Я бы не советовал каждому разработчику строить каждый микросервис. Я бы предложил какую-то непрерывную интеграционную среду. Один централизованный сервер сборки, подключенный ко всем git-репозиториям.
Каждый раз, когда репо обновляется, сервер сборки должен обнаруживать изменения, строить код, запускать единичные (или функциональные) тесты, а затем нажимать службу на какую-то среду интеграции. Затем сервер сборки может также выполнить некоторые интеграционные проверки с развернутой службой.
Большинство разработчиков должны иметь возможность выполнять все свои разработки и испытания без необходимости доступа к другим микросервисам. Если разработчик строит сервис X, который зависит от Y Z и зависит от A & B, то разработчик должен, по большей части, иметь только сервис X. Для служб модульного тестирования Y & Z следует издеваться/имитировать.
Проблема заключается в том, что разработчик не будет нарушать услуги A & B путем внесения изменений в сервисы X. Такое интеграционное тестирование имеет тенденцию быть более сложным, поскольку разработчики, работающие с сервисом X, часто не знают деталей (или даже как использовать) восходящие службы (например, A & B).
Способ решения, который, как я полагаю, должен состоять в регулярном тестировании интеграции, вызванном построением службы X или выполняемой на регулярной основе. С проектом это осложняет сильную и надежную философию модульных тестов и интеграционную тестовую платформу.
Является ли каждый разработчик, работающий на каждом microservice? Разве разработчик не был бы связан только с микросервисами (-ами), которые они разрабатывают, и (возможно) с их непосредственными зависимостями? – Pace
Нет, они работают только по несколько раз, но нужно держать все остальное в курсе событий. Любая команда может потенциально изменить код в любом воспроизведении, если потребуется. Обычно команды будут работать над подмножеством. – LL020
Каково четкое разделение команд и собственности здесь? Имеют ли все 10 команд право собственности на 200 микросервисов? В этом сценарии это звучит скорее как организационная проблема. Без владения ни один разработчик не поймет всю систему услуг и то, как они вносят вклад в более крупный продукт. –