Cloud computing has already changed daily work in the data center, but it also has impacts on IT development projects. As we will see in this article, the three traditional cloud models can improve and simplify the Agile way of working and can help teams follow the basic principles of the Agile Manifesto.
As you probably know, the three fundamentals models of cloud computing are:
- Infrastructure as a Service (IaaS): Cloud providers offer computers (as physical or, more often, as virtual machines), raw (block) storage, firewalls, load balancers, and networks.
- Platform as a Service (PaaS): Cloud providers deliver a computing platform and/or solution stack, typically including an operating system, programming language execution environment, database, and Web server.
- Software as a Service (SaaS): Cloud providers install and operate application software in the cloud, and cloud users access the software from cloud clients.
Infrastructure as a Service (IaaS)
The first obvious advantage of IaaS is the simplification of the tasks usually performed during the first sprint. All issues related to working, testing, and production environments become obvious. No risky infrastructure investment plan, sometimes based on intangible data, is required. Moreover, the development environment is available immediately, can be set up in a very short time, and parallels similar environments for testing, demo, and sprint review. And instead of investing money in testing and demo infrastructures that will be used infrequently, you can set up and remove those environments according to your needs to minimize your costs.
If all the best practices to optimize the performance are still mandatory, the performance requirements can be achieved more easily by scaling out the infrastructure. The ability to scale out helps follow the principle of responding to change over following a plan, because the fixed infrastructure constraint doesn't exist anymore. That advantage becomes more and more obvious when you're getting closer to the end of the project and all the IT hardware investments are made. An incorrectly sized infrastructure can cost a lot of money at this point.
Cloud computing can also simplify the relationship with the client (customer collaboration over contract negotiation), because many of the infrastructure costs will be transformed into operational costs and managed directly by the client, which simplifies the contract drafting.
Platform as a Service (PaaS)
The IT project using the PaaS model will clearly also benefit from cloud when it comes to supporting Agile concepts. The Paas cloud system is based on a clear, multitiered architecture and on asynchronous messaging that pushes the team to isolate the functionalities. The isolation helps split the functionalities into more independent work items and helps deliver a potentially shippable product on a regular basis. On Microsoft Azure, for example, the clear difference between Web roles and worker roles provides a natural way of splitting complex functionalities between presentation and batch computing. On Azure, the messaging service bus used to exchange messages with applications deployed on the cloud or on premise helps the team address integration issues by providing a dedicated framework. Fixing the tools can sometimes be perceived as a further restriction, but it helps the team stay focused on interactions over processes and tools.
On PaaS, different technical aspects of IT product development tasks are taken into account by the cloud provider and can be removed from the concerns of the Agile team. All the platform upgrades, including the libraries and modules, are managed by the provider and have no impact on the team's work. Many "outside the box" modules simplify teamwork, like caching, security, reporting, archiving, data recovering, and so on. The deployment mechanisms often provided with PaaS models give tools to deploy a new version of the application on the cloud quickly and without interruption of service. Reducing the deployment effort and time also helps the team deliver working software frequently.
Simplicity — the art of maximizing the amount of work not done — is essential.
Software as a Service (SaaS)
One of the most stupid reasons for project failure is the lack of communication between all the stakeholders, due to inappropriate or inexistent tools. Many SaaS solutions exist now on the cloud to help collaboration between people in exchanging and sharing resources. A document editing and storing cloud solution (which I'm using to write the present document, for example) can provide a simple solution for exchanging documents among Agile team members.
Most project management software editors have migrated their on-premise solution to the cloud. Combined with the powerful new collaboration tools, this will probably reduce the "collocated" constraints of Agile projects (that is, the need for face-to-face conversation). Versioning solutions on the cloud also exist and don't require any hardware resources or security patches. All these small amounts of work reduction accelerate the integration of new team members.
In summary, the software for daily work — available in a very short time, accessible from everywhere without any difficult installation procedure, and paid for only when used — will remove important "nonproductive" amounts of work.
To conclude this article, I want to quote from a classical commercial argument of cloud providers: "The cloud makes it easy for you to get a production ready, up and running quickly, so you can focus on building your business. [This model] offers a simple, comprehensive, and powerful platform for the creation of Web applications and services to enable you to focus on your business logic."
You can also apply this argument to Agile development. The cloud offers an infrastructure open to change, an architecture that pushes the team to work "Agile," and, finally, tools to help you to focus on your business and be free of many technical worries.
Introducing Windows Azure
Windows Azure Platform