I am looking how agile methods can be applied for setting up a chained-application (made of several services for example) developed by several teams. In particular, I think the common sources about release-cycle and environment layers (DEV, UAT, PROD) are missing a step where all applications should start to connect with each other.
This level could be called integration-testing, but this concept is used at a lot of levels so it would be confusing: in IoC (Spring) it simply means to connect all software modules/beans of one application together ; in the CI world, this is a place where one team automatically tests its components with respect to normalized/prepared input, that should change only if it is a business or technical requirement that has been validated.
It is missing a cycle step and associated environment where all applications (and data) evolve continuously like in prod, but can and should communicate with each other. This is also the environment that other teams will connect to while developing (in their dev env).
While several team I work with would dedicate one DEV env for that purpose (usually where CD is used), I think this isn’t the right choice because by definition DEV env are freely breakable and deployed version are not (necessary) labeled. I consider this should be done in the UAT environment, on a release or some tagged software version such as a pre-release. Why UAT? because once all parts of the chain are provided (maybe with mock), the users can access it, test it, and provide feedbacks. But maybe I am missing something, and when discussing with my colleagues, not everyone understand me or even agree with me if it doesn’t fit there method.
=> So how agile method answer that issue, and is there good sources that discuss about this?