Monday, July 29, 2013

Cloud Workers: How Cloud Computing Affects Developers

Developer

Wikimania 2009 - Tim Starling
By Nicolas Goldberg,via Wikimedia Commons     
For developers cloud computing represents a new set of tools that can make development time faster by giving them ready made tools and components.  Not all components are made the same.  Some tools such as Microsoft's Azure and Amazon's AWS give a set of tools that most developers would not have access to.  These tools can come with caviots that can frustrate developers and delay projects.

Pros

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.

Cons

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.