This post is from the CollabNet VersionOne blog and has not been updated since the original publish date.
Agile In Action with Cloud Computing
Agile and Cloud computing are how software applications are delivered today. These trends are the result of advances in technology, ranging from increased processing power (which made virtualization a reality), and increased sophistication of storage area networks (which made storage seamlessly scalable), ubiquitous high-bandwidth network access, and the increased security and reliability of the Internet.
Agile development processes optimize the opportunity provided by cloud computing by carrying out software releases iteratively and getting user feedback more frequently. With agile development, the application is constantly subject to the reality check of actual users putting it through its paces. As a result, developers are less likely to get ahead of themselves by guessing what people will want. Nor are programming teams forced to estimate what they can deliver months in advance—an unattainable feat. Instead, R&D is more likely to build features people actually want. And because developers are looking ahead for weeks, not months, major new releases are far more likely to be delivered on time. Developers using this methodology call the process “continuous improvement.” For the organizations that have made this process work for them, there is no turning back.
But for much of its history, agile development was missing a crucial component: an ALM software development platform that supports, rather than thwarts, the rapid development cycles that make the methodology work. In traditional software environments which lack such a platform, new software distribution is an ordeal that requires patches, re-installation, and help from the support team. In such an environment, months, or even years are needed to get a new distribution into the hands of users. Incorporating their feedback into the next release then requires comparable time.
It is here that cloud computing makes a substantial difference. Cloud computing eliminates the cumbersome distribution requirements that can bring agile development to a crawl. There are no patches to distribute, and no reinstallations are needed. With cloud computing, new distributions are installed on hosted servers and made available to users immediately. As a result, it’s possible that the application you run today was modified just the night before.
Agile methodology refers to a disciplined project management process encouraging frequent inspection and adaptation. In early stages the Agile methodology approaches of software development tended to be slow, bureaucratic and inconsistent creating the need for a more adaptive method of software development. Agile methodology encourages teamwork, self-organization, and accountability. Most agile development teams comprise 5-9 employees and a single customer representative that work in a single open office to promote teamwork and cooperation.
- Working software delivered frequently to customers
- Software is a measure of progress
- Late changes are welcome
- Constant cooperation between business people and developers
- Self-organizing teams
The Emergence of Agile Development
Out of necessity, development teams began shifting to frequent releases. At first, these iterative methods went with small cycles, but remained with a fixed schedule ahead of time (i.e. fixed budget, strict plan, and predetermined feature sets). So instead of the one major release, several minor releases would be scheduled.
This concept would be taken a step further: Iterative releases, with no fixed plan! Here, each release adds a bit of value, allowing for better decisions as to what features would be included next. Development now works in small cycles – planning and designing only far enough ahead to keep the flow working. With this increased flexibility, the burden of excessive formal documentation was greatly alleviated. Now testing is incorporated into each step of the process, not just at the end of each release.
Cloud Computing: An Agile Approach in IT
Cloud is not a single product, but rather a way to provide IT services. Learning how to securely virtualize IT assets into consolidated, easy to manage pool of servers and storage resources that can be provisioned as needed to support a wide range of applications and data types from a single, integrated infrastructure that is secure, reliable, scalable, cost-effective and agile in the face of changing demands.
Agile Development in Cloud
Advances in technologies such as virtualization, storage, and high-speed network access, as well as a growing comfort with Internet security and reliability, have led to increasing adoption of Cloud Computing. Cloud Service simply means the types of services can be provided to customers. Different models apply to different kinds of requirements, and can achieve different business objectives. A simple search and you may find internet hits with dozens of Cloud * as a Service, where * can be replaced by any one of the following: Desktop, Security, Data, Software, Platform, Infrastructure, IT, Testing, Hardware, Computing, Database, Storage, etc.
Service Models for Cloud:
- SaaS (Software as a Service)
- PaaS (Platform as a Service)
- IaaS (Infrastructure as a Service)
SaaS: The Service Provider has very high administrative control on the application and is responsible for update, deployment, maintenance and security, while the consumer is free of any worries and hassles related to the service. The provider exercises final authority over the application. For Example: Service providers such as CollabNet TeamForge, Google, ZOHO and Amazon are all in SaaS and we are consumers for these products. Through the image below, we can understand behavior of Saas model for Cloud.
PaaS: In plain English, PaaS is a platform where software can be developed, tested, and deployed, meaning the entire life cycle of software can be operated on a PaaS. This service model is dedicated to application developers, testers, deployers, and administrators. This service provides everything you need to develop a cloud SaaS application. A PaaS typically includes the development environment, programming languages, compilers, testing tools, and deployment mechanism. In some cases, like CollabNet CloudForge and Google Apps Engine (GAE), the developers may download the development environments and use them locally in the developer’s infrastructure, or, the developer may access tools in the provider’s infrastructure through a browser.
Pic2: PaaS Model for Cloud
IaaS: Cloud infrastructure services, also known as “infrastructure as a service” (IaaS), deliver computer infrastructure – typically a platform virtualization environment – as a service, along with raw (block) storage and networking. Rather than purchasing servers, software, data-center space or network equipment, clients instead buy those resources as a fully outsourced service. Suppliers typically bill such services on a utility computing basis, or the amount of resources consumed will typically reflect the level of activity. For Example: Farmville and Mafia Wars are two of the most popular Facebook games created by Zynga.com. They have more than 230 million monthly users running more than 12,000 servers on Amazon AWS. Amazon is the pioneer of IaaS.
Pic3: IaaS Model for Cloud
Differences in SaaS, PaaS, and IaaS:
The difference between IaaS and the other two models of Cloud (SaaS and PaaS) is that the software that executes them is essentially yours. In practical terms, the model is based on the same principles of virtualization that we are all familiar with in the context of server partitioning or flexible storage. Rather than running a virtual image on a partition existing on a physical server in your data center, you spin it up on a virtual machine that you have created in the Cloud.
Antiquated software development processes such as the waterfall process, don’t exactly fit into this brave new world of Cloud and are increasingly being replaced by the Agile software development processes. According to a Gartner report titled “Predictions 2010: Agile and Cloud Impact Application Development Directions,” 80% of software development projects will utilize Agile development methods. Agile development methods – with their focus on frequent release and user feedback – align well with the Cloud computing paradigm, combining faster application delivery with collaborative, iterative development.
Next-Generation IT (Cloud Brokerage): Why We Need A Cloud Middleman, what Gartner has called a cloud services brokerage. Consumers and businesses have different needs. Gartner has said that cloud service brokerages now represent the biggest revenue opportunity in Cloud computing. As any software salesperson can tell you, ultimately it’s not about features and functionalities; it’s about changing how you do business. Cloud brokerages are already building the customer relationships that will make them the trusted partners for the duration of the public Cloud era. In the public Cloud-based model, three-year waterfall implementation plans have given way to three-month iterative plans. Experts are now valued not for their ability to select and install the right servers and storage devices, but instead for their knowledge and ability to navigate the Cloud vendor ecosystem. Core skills expected from service management providers are less about systems monitoring, and more about what it takes to keep applications running efficiently on cloud platforms.
What’s a cloud broker? Gartner defines it as “a type of cloud service provider that plays an intermediary role in cloud computing.” Perhaps better put, Cloud Brokers help you locate the best and most cost-effective Cloud provider for your needs.
If the user is looking for a storage-as-a-service provider, instead of going to the Cloud provider directly, they can use a broker for their requirements and find the best fit – in some cases this will be based on the best cost, availability, and performance.
There are two types of cloud brokers emerging: Passive and Active.
- Passive Cloud Brokers provide information and assist you in finding the right cloud-based solution. They may gather user requirements, understand budgets, and then pick the best cloud providers for user needs and cost. They even assist the user in signing up.
- Active Cloud Brokers may provide dynamic access to different cloud providers based on cost and performance data, and they may use different cloud providers at different times based on what best serves their clients. They may even multiplex cloud providers so that clients use a single interface serviced by many providers.
How Cloud Computing Benefits an Organization
Cloud computing is the new wave of IT infrastructure that allows businesses to run their applications on a shared data center space. Unlike traditional licensed software, cloud technology brings in efficiency by eliminating the cumbersome processes related to software development, testing, installation and failovers.
The major advantages of Cloud computing includes:
- No hardware or software is required for Cloud services
- Easy integration with other enterprise solutions
- Fast deployment, coupled with less probability of failovers
- Highly customizable environment
- Optimum utilization of in-house IT resources
How Agile and Cloud Computing Complement Each Other
Agile development methodologies and Cloud computing complement each other very well. Cloud services take pride in meeting user requirements rapidly; delivering applications whenever and to whatever extent they are needed. Agile methods give high credence to user collaboration in requirements discovery.
The agile system of software development aims to break down project requirements into small, achievable segments. This approach guarantees user feedback on every task of the project. Segments can be planned, developed and tested individually to maintain high quality standards with almost no bottlenecks.
Using agile development in conjunction with Cloud computing provides a highly interactive and collaborative environment. The moment developers finalize a feature, they can push it as a Cloud service; users can review it instantly and provide valuable feedback. Thus, a lengthy feedback cycle can be eliminated, reducing the probability of misstated or misunderstood requirements. This considerably curtails the time and efforts for the software development organization while increasing end user satisfaction.
Therefore, the major benefits of using agile software development in conjunction with the Cloud computing paradigm are:
- Increased quality of application
- Effective resource utilization
- Reduced time to market
- Cost savings
Working in agile methods with Cloud computing will enable organizations to strengthen their IT portfolio for better service delivery while lowering costs.
Scaling Agile – Enterprise Agility
In global organizations software developers work at multiple dispersed sites and use a wide array of agile and cloud development tools and processes. In many cases, even if the same technology and agile process is used, it can be deployed into the cloud and configured in different ways. Over time, enterprises end up with fractured development environments that include rampant amounts of “shadow IT”. This situation contributes to the inability of companies to follow best development practices, leverage software intellectual property, share knowledge, and identify problematic areas. This leads to increasingly higher costs of development, work duplication, slipping schedules, or worse, missed deadlines.
Today’s leading organizations seek to overcome this disparity and leverage their global teams and IP by bringing repeatable open, agile and collaborative development methods to global teams of developers – inside and outside of their company. One such approach is CollabNet’s Blueprint for Enterprise Agility.
Pic4: Blueprint for Enterprise Agility
Putting agile together with the Cloud dramatically accelerates an organization’s improvement pace. The working style of agile is tied to user involvement, thus drawing user’s right into the heart of the development process. Functionality is developed as the user wants it, how he wants it. As development cycle move along in cumulative steps (iterations), the features and benefits can be rationalized and re-prioritized as each project unfolds. There is no waste—either of time or money. And once everyone agrees that the application is ready, off it goes into the Cloud where everyone can start using it.
It’s no secret that agile in conjunction with Cloud computing is here to stay—offering the promise of everything from reduced complexity and unlimited scalability, to capacity on-demand. As Cloud computing continues to gain popularity, many enterprises are intrigued by the potential benefits it presents. The elasticity of the agile and Cloud partnership allows organizations to size their IT to fit their needs, rather than invest in equipment that they may not need. In uncertain environments and fast-changing markets, the Cloud’s dynamic provisioning lets IT organizations to concentrate on their day to day activities like, development, QA, software deliverables, and much more.
Agile development in the Cloud now provides organizations greater control over process innovation, giving them more competitive edge and opportunity across every vertical market. Today’s leading companies have overcome their organizational disparity and leveraged their global teams and IP. They have achieved overall enterprise agility and are deploying to clouds inside or outside of their company – by bringing repeatable open, agile and collaborative development methods to global teams of developers.