<p>Consider two or more applications "talking" to each other and deployed to the cloud (cloud foundry).
What are the best practices for a team to follow to work (develop/test/debug) on the same instance of the applications but in his/her "own" space without creating another instance of the application in the cloud? Or should every developer need to have a local copy of those application and run it in a docker/kubernetes, for example?</p>

<p>The question is broad, but there are some directions that are worth mentioning here. So, a short answer might be:</p>

<ol>
<li>Run the collaborating apps whenever necessary alongside the app(s) you are developing.</li>
<li>To ease this, prefer <a href="https://github.com/cloudfoundry-incubator/cflocal" rel="nofollow noreferrer">CF Local</a> (lightweight Docker containers) over <a href="https://github.com/cloudfoundry-incubator/cfdev" rel="nofollow noreferrer">CF Dev</a> (running a whole CF foundation).</li>
<li>If running the other collaborating apps is too much of a challenge, create mocks that mimics their behaviors, for the interactions (or the tests scenarios) you need.</li>
</ol>

<p>Some words about CF Local: nowadays Cloud Foundry developers are no more recommended to run a whole Cloud Foundry foundation on their laptop anymore. When CF Dev arrived, it was already an improvement for running a whole foundation over <a href="https://bosh.io/docs/bosh-lite/" rel="nofollow noreferrer">BOSH-Lite</a> (that still has its use-cases, I use it everyday), but for a typical <code>cf push</code> developer experience, CF Local fits well and is even more lightweight.</p>

<p>So, CF Local is now recommended instead. It should help you run a bunch of collaborating micro-services applications on your local machine, within standard Docker containers, running on top of a plain Docker engine. For more information, see the <a href="https://github.com/cloudfoundry-incubator/cflocal" rel="nofollow noreferrer">CF Local Github</a> page, and the <a href="https://pivotal.io/fr/cf-local#comparisonchart" rel="nofollow noreferrer">comparison chart with CF Dev</a> about use-cases for which CF Local is a good fit.</p>

<p>For data services (e.g. MySQL or PostgreSQL database), CF Local already provides solutions to re-use the same services instances from your CF foundation. You may also run you own engine on your laptop, and find a way for your cf-local-pushed app to bind to these services in this context.</p>

<p>Hope this might give you some interesting directions in which you can dig and find your way!</p>
