Writing applications for large cloud-based platforms often means that you, as a developer, write your code, push it to a development environment in the cloud, test it, and then do it all over again as you iterate. And if some code that you have already deployed starts misbehaving, you can’t easily troubleshoot on your own machine either, of course.
With CF Local, the Cloud Foundry project today accepted its newest project, written by Pivotal’s Stephen Levine. The idea behind CF Local is pretty straightforward: allow developers to run a local version of Cloud Foundry on their laptop — with the help of Docker containers — to allow them to iterate faster without having to push updates to the cloud.
CF Local is a plugin for the existing Cloud Foundry command-line tools that acts as the translation layer between Docker and Cloud Foundry. As Levine told me, it doesn’t consume a lot of local resources and it’s almost 100 percent compatible with every other Cloud Foundry install (the difference being how Docker and Cloud Foundry handle memory limits, though that’s not typically an issue). He also noted that to ensure the local system fully replicates the remote setup, CF Local allows for easily accessing third-party services like databases over SSH tunnels by downloading the necessary credentials and keeping them in memory.
As Cloud Foundry CTO Chip Childers also stressed, being able to iterate on their code locally also means that the iteration loops are significantly faster, which makes it easier to stay focused. Levine seconded this and also noted that there are plenty of situations where you only make iterative changes that the system can watch for and push live locally without having to re-stage the complete application.
It’s worth noting that CF Local isn’t meant as a system for helping get a quick taste of what Cloud Foundry is all about. Childers, though, hinted that such a project would actually be pretty interesting and that it’s something the community would probably be interested in. CF Local may just be the kernel for this as the project members look into making this a reality.