In Star Wars, Coruscant is an entire planet that's a city. And in the movie, traffic flows in three dimensions as everyone flies around - without any accidents. As it's science fiction, there aren't even any traffic jams.
Things aren't so nice in the real world. For a real thrill, try driving in Bangalore or Rome. I've never seen any traffic accidents in Rome (do the FIATs simply vaporize on impact?), but I've been in taxis there that drove on the wrong side of the street, and on the sidewalk, and skidding around on cobblestones.
In the cloud of science fiction, deployment is smooth and painless, verging on pushbutton. This is true for simple applications that don't have a lot of dependencies or interactions with external systems or third-party applications. And it can even be true for complex cloud deploymentifyou do the following:
1. Check for driver's licenses. To avoid deployment traffic jams and accidents, administrative certifications really matter (even more than developer certifications in most cases).
2. Have your scrum teams include a process step for architectural review of proposed changes. Some of the most innocent-sounding changes in access controls, validation rules, and even picklist values can have big repercussions. This goes double if you have more than one scrum team working in parallel.
3. If you can find a configuration management (or at least audit) tool that works across most of your cloud technologies, use it. If you can't, use version-managed documents to keep track of what's changing. Google docs work well, particularly if you archive the docs into static files for archiving on a weekly basis.
4. Have unit tests for all modules that have more than 90 percent test coverage and do assertion testing for major positive and negative test cases. For the core business logic, consider using test-driven development.
5. Run all unit tests and record results every day, even if there is no change to your code. Your SaaS platform or third-party software elements may have changed without your knowing about it. If there is any unit test failure, that goes to the scrum team as their highest priority "story."
6. Use ANT or some similar scriptable deployment system on a regular basis, and try to follow the Continuous Integration (CI) best practices of Agile.
7. Have system-level tests that exercise every external interface with representative test data, and that perform a statistical sanity check on the database (e.g., "do we have 50% new customers since the last test run?"
8. Run all system tests and record results at least once a week, even if there is no change to your code. Not only may the platform or third-party software elements have changed, your system's data may have expanded or changed in ways that invoke code paths in previously-untested ways. Test failures go to the scrum team with highest priority.
Sign up for Computerworld eNewsletters.