I am sure like me most of the development teams had a major debacle last friday when Salesforce pulled down cs15 sandbox down due to a system outage on there end. All the development teams which were using the sandbox were left scrambling and this resulted in a loss of 2 days which is a great pain for teams planning to do production rollouts this week end. So the question is what should we do going forward on sandbox outages and how do we handle them? System outages do happen and there is nothing we can do to prevent them from happening but we can atleast be prepared to face it next time more easily . Here is a strategic approach which worked for us and might work for all the development teams.
1. Source code control
This is one of the best reasons where development teams should bring the value of source control tools to their business and allocate time to have the code checked in cvs, subversion, github or what ever source control tool you choose. So to do this all you guys have to do
a. Agree on a source control tool which you plan to use like Subversion, Github, cvs etc.
b. Get all your visual force pages, apex classes, components checked in subversion
c. Have a process in place where developers should commit there changes to the source control tool everyday.
d. Get the latest metadata xml file and commit to the source control tool.
2. Minimum of 2 environments for testing.
So this brings the value of using atleast 2 sandboxes for testing namely one for development and one for testing where the users can test the new features and changes. So if there is a process in place where the developers push changes to the testing team every day or a weekly basis, then if the development sandbox is down, developers can easily do the development on the testing sandbox for a day or two till the development sandbox is back up and running. This would atleast save a huge amount of time for developers who spent a lot of time doing code compares, code merges and quickly getting a development sandbox up and running to continue there work.
3. Production refreshes every month.
Every month there should be a scheduled production refresh to the full copy sandboxes for data and code refreshed on all the sandboxes. So for organizations where they do not have a source control tool, they could easily get the latest production code on a sandbox and use that for further testing or development. The cons of this approach is that developers might have lost current changes but atleast have a baseline to start setting up on there production environment.
4. Using Eclipse IDE for development.
Now for all the guys who love to work with the developer console and the org which is quick and easy, the question is how do they get there latest code changes if the sandbox is not even accessible? If the development is done using Eclipse IDE or any other ide, these tools have the latest code automatically backedup on there pc and developers can easily get to the latest changes easily.
5. Continuous Integration with automatic deployments.
For development teams having multiple sandboxes like DEV, QA etc, creating an automated build using Ant and deployment tools like Jenkins, Anthill or any other tool would help. These tools would check out the code every day from the source control repository and automatically deploy to the QA,UAT or testing environments. So if this process is in place on a daily basis, then the development teams can use the testing environment for a day to continue their work .
So just to summarize for the future, all organizations should have source control tool, a process for daily commits and checkouts for developers and development on IDE will help to quickly get to the latest changes and save valuable time lost during sandbox downtimes. Please feel free to comment your thoughts with your email and i will be glad to send a checklist to prevent future sandbox downtimes.