Developing in the cloud gives developers access to more tools than ever before. Software developers can take advantage of elastic computing to scale their applications. They can globally distribute their assets to increase speed of websites. Cloud computing increases time to market with many applications.
Cloud computing does come with limitations. Some of these limitation are due to inherent factors such as the latency of transmitting information over the internet while other limitations come directly from the cloud provider to safeguard one user from taking down the system for everyone. Developers need to make systems "cloud ready". A cloud ready system is one that is tolerant to the limitations of cloud computing.
Over the past 20 years the software development industry has undergone an evolution into better systems and methods. Design patterns such as the abstract factory pattern help developers complex systems that meets a specific need, development methodologies such as test driven development has help companies cut down development time.
Building in the Cloud
Systems that are not cloud ready can break when the system is under strain. Latency of the internet can cause system to become prohibitively slow. In modern development the software is tested and then put into production with a limited smoke test to make sure it works. With cloud computing systems can fail long after they are deployed. Software developers need to think critically about the limitations of the cloud they are using and adjust their development methods in a way that will work with the cloud.
Software developers need to have a way of monitoring their cloud based software to make sure that events such as strain or systems upgrades do not break the system. With traditional software development after the deployment the systems is forgotten about until. Cloud system's need monitoring in production. Simply passing test in the development environment will not suffice in the cloud world.