|
Over the past several months, I networked with companies who had implemented Agile (primarily smaller ones) and asked them what some of their Agile challenges were. Interestingly enough I heard from several companies saying that getting their infrastructure set up was a challenge while trying to get Agile going since Agile had instant demands on the infrastructure. I immediately had a flashback. In 1998, I had a similar experience when implementing Scrum. The ScrumMaster had the developers coding in the first sprint (as is expected). However there was no real infrastructure or CM system to speak of and what was there was clunky at best. Coding was quite the mess and after the first release came out, the next release had a lot of regression. This all revolved around the lack of focus on infrastructure. Interestingly enough, even after 10 years, the infrastructure challenges persist. Given that when applying Agile, you start coding almost immediately, how do you get the infrastructure set up quickly? Even when you implement an iteration 0, it still does not leave you with much time. When you are in an established company, this may seem like a no brainer since it may appear that infrastructure is plentiful. However, even in established companies when resources are tight, getting infrastructure set up for a new product is challenging. When you are small company and have little to no funds, then what are your options? By moving the development action to the beginning as Agile does, you squeeze the time it takes to get your infrastructure set up. What do you do now? This article focuses on this area and what I believe to be a gap in the coverage of topics for Agile methods. While it is not an Agile practice or method per se, this article attempts to support Agile teams (particularly the new ones) by offering considerations and options for establishing infrastructure on new product lines where none previously existed. Considering your options All of these options come with a set of advantages and disadvantages. While there are many factors in determining the best choice for an organization, there are two driving factors. The first is how much budget exists for the product team. This includes the ability to purchase the infrastructure that is needed including servers, software, data center space, and staff. The second factor is how much control a product team or organization wants to have on their infrastructure. This includes how much perceived sensitivity there is to the product under development and data therein, and how much direct control is desired over access to the infrastructure. Based on your budget and ability to buy infrastructure and the control level you want, it will provide input to the more suitable approach. With the advent of Agile methods, there is now a third driving factor that may drive the choice. I have seen many Agile projects, particularly those focused on brand-new product lines, struggle with getting their infrastructure up and running. Much of the reason is the time and effort that is needed to get infrastructure established far exceeds the time it takes to start development using an Agile method, effectively the first iteration. With these new cloud infrastructure and co-location options, the "establish product infrastructure" game has been changed. So, the question is, should you physically own infrastructure, rent space and own servers, or rent infrastructure in the clouds? It is important to better understand each option and assess your circumstances and needs before formally deciding on an approach. Owning Server and Renting space (aka, Co-location as a service) You would utilize this option because you want to have the ownership and control of the box and content therein but do not have the budget to establish a physical datacenter on premises therefore minimizing expenses. This includes not having to hire and manage datacenter staff for to support this facility. This approach can be particularly advantageous when you are a small company or start-up organization that has a website that you rely on for revenue but you are not in a position to establish a data center on-premises. Other advantages of a co-location service are that they typically provide scalability bandwidth based on your need, generator backup, and remote console access. A distinct advantage for those who are Agile proponents in a startup or small company, is that you do not have to spend time establishing a datacenter, but instead focus on the development of the project. It allows you to minimize datacenter infrastructure debt and scale to the space needs over time. The biggest disadvantage is that there may be security and control concerns. Any servers you own are in someone else's datacenter. It is important to ensure there is rigorous security access into this facility. However, because it is the primary business of this service provider, there will most likely be fairly extensive security access control. You also want to ensure the datacenter staff are experienced troubleshooters and quick to resolve connectivity and network performance problems. Finally, it is important to gauge the profitability of the co-location service provider you select. If this service provider goes out of business, it may be difficult to get your server out of the service provider datacenter. Understand how portable the data on the server is and ensure backups are readily available from another site, especially if this server is hosting production data. Some companies that provide co-location services include ColoSpace, I/O Data Centers, Colocation.com and Peer1 amongst others. They all provide either strictly collocation services or co-location as part of their set of services. Since co-location is most advantageous when the service is within your location, it is best to perform a search on "co-location" and possibly your city or state. Renting Infrastructure in the Clouds The advantage of renting the cloud infrastructure is that it helps you minimize capital expenses and lower upfront costs since you do not have to buy hardware, software, and other components. Effectively the infrastructure (e.g., servers, software, etc.) becomes more of an operating cost instead of a capital expenditure. Another advantage of this approach is that you do not have to establish and manage the infrastructure. This includes not having to hire and manage IT staff for maintenance and upgrade work. However, with this being said, it is important to have people on your staff that knows how portable the data is that is being hosted and how easy (or challenging) it is to get it off the cloud should the service provider go out of business. This infrastructure will include the same type of infrastructure and network components that a locally owned infrastructure would include and in some cases have servers that have some of the database and tools already installed. This approach can be particularly advantages when you are a start-up organization that has not yet released a product or are early in the product business. It may not be right for mission critical applications and in a situation where data is highly confidential. In general, the size and newness of company and product line is a factor where renting the cloud can be advantageous. A distinct advantage for those who are Agile proponents, is that the cloud infrastructure provider approach enables users to only use what they need, something that is directly in line with Agile. This "use what you need" approach minimizes infrastructure debt and allows the product team to adjust and scale to their need in a just-in-time manner. The biggest disadvantage is that there may be security, control, and privacy concerns. Remember, when renting space in the cloud via a provider service, all of your product code, data, and documents will effectively be sitting on someone else's systems (e.g., the service or platform provider). It is important to ensure there is security related software, network, and protocol that support this service from authentication to access control. Interestingly enough because cloud service providers know this is a concern for many, security measures are often well managed in these environments. Finally, it is important to gauge the profitability of the cloud infrastructure service provider you select. If service provider goes out of business, it may be difficult to get your data converted and hosted by another provider. Understand how portable your data will be to another platform and ensure you have backups readily available in another location. Other disadvantages with this approach is that the ability to customize the infrastructure and software therein is reduced, many of the integration issues may remain if there is a high degree of complexity in the working environments, and that there is less control over the skill level of the support staff meaning sometimes they will be experienced and quick troubleshooters and other times they will not. When using this approach, it is important to ensure that the cloud infrastructure provider being used has prescribed service levels, established backup, recovery, and fail-over processes, is able to meet regulatory compliance standards, has the ability to allow you to scale up, provision, and instantiate quickly, and other factors for support, load balancing, and performance. Other factors that should be considered before selecting a cloud infrastructure provider is their financials such as their cash position, spend rate, profit margins, etc. When using either the physically owned or rented cloud approach, you should have an application architecture and network diagram established which includes the platforms, operating environments, interfaces, services, locations (physical or cloud). The specifics of the design will help you in defining the physical infrastructure to purchase or the cloud infrastructure to rent. With owning the physical infrastructure, there needs to be more in-house expertise in establishing the architecture, infrastructure, and network design. With renting from a service provider in the cloud, in most cases the provider can help you with this and walk you through the process of your design needs. Some companies that provide cloud infrastructure include Force.com, Right Scale, Rackspace, GoGrid, and Caspio Bridge. Not all provide the exact same set of services, but they each provide aspects of cloud infrastructure services. Consider performing a search on "cloud infrastructure" for more service providers. Owning On-premises Owning on premises does not mean you have to set up the full infrastructure (servers, datacenter, etc.) each time a new product is envisioned for development. Organizations can use strategies similar to "in the Clouds" options. This can include hosting a provisioning model, implementing an internal Platform as a Service (Paas), and sharing common support services (e.g., common Configuration Management or Testing environments and tools). In the PaaS option, there are new choices where you can establish the platform locally. One such choice is the Agile Platform by Outsystems which provides an on-premises solution that equips the team with all of the required tools to integrate, assemble, deploy, and operate web business solutions using agile methods. It is wise for organizations to share space in existing datacenters much like the co-location as a service option. Also, some organizations may utilize a renting in the local cloud option meaning that the organization can establish infrastructure co-ops that can already has many of the infrastructure needs of a product team. The reality is, most product teams have fairly similar infrastructure needs (platform, development environment, CM tools, test environments, etc.). Organizations would be wise to deploy an infrastructure service model to make it quicker and easier for new product lines to get their infrastructure established. This can be particularly advantageous to new product lines utilizing Agile methods. Summary About the Author Mario Moreira is a Columnist for the CM Journal, a writer for the Agile Journal, an Author, and has worked in the SCM field since 1986 and in the Agile field since 1998. He has experience with numerous SCM technologies and processes and has implemented SCM on over 100 applications/products, which include establishing global SCM infrastructures. He is a certified ScrumMaster in the Agile arena having implemented Scrum and XP practices. He holds an MA in Mass Communication with an emphasis on communication technologies. Mario also brings years of Project Management, Software Quality Assurance, Requirement Management, facilitation, and team building skills and experience. Mario is the author of the SCM book entitled, “Software Configuration Management Implementation Roadmap”. It can be found at www.wiley.com, www.wileyeurope.com, and www.amazon.com (search for Mario Moreira). It includes step-by-step guidance for implementing SCM at the organization, application, and project level with labor-saving templates on CD. Mario is also in the process of writing a new book entitled “Adapting Configuration Management for Agile Teams”, another Wiley project that is tentatively due out in the Fall of 2009.
Set as favorite
Bookmark
Email this
Hits: 2381 Comments (2)
|
| Last Updated on Tuesday, 23 June 2009 17:56 |
Agile Marketplace - Announcements and Special Offers
Rally Software Extends Agile ALM Platform to Meet the Unique Needs of Global Organizations
Rally Unlimited Edition – Promote Agile practices throughout your organization by providing a complete system-of-record of each product's status, progress and quality across the full idea-to-deployment lifecycle. Sign-up today for your free trial!
iPhone iPad Developers Conference
The iPhone iPad Developers Conference, September 27-29 in San Diego, is the world's premier independent event dedicated to building and marketing apps for Apple's iPhone, iPad and iPod Touch. The format includes 45+ technical classes, workshops and breakout classes. It will also be the first major developer conference after the release of iPhone OS4. CMC subscribers can receive a $100 discount off the Full Event Passport and/or gain free admission to the exhibits (first time registrants only - cannot be combined with other offers) by inserting the code MEDIASPONSOR when prompted on the eRegistration page linked from www.iphonedevcon.com
AgilePalooza - Serious Learning in a Fun Atmosphere
AgilePaloozas are community events sponsored by VersionOne and Agile Journal. These one day conferences provide serious learning in a fun atmosphere. Two tracks are included: Learning Agility and Advancing Agility. Speakers include internationally recognized agile coaches and trainers. The next seminar will be held August 27th in Dallas, TX – use discount code agilejournal and save $20!
Register Here
CollabNet Subversion Edge Improves Governance, Security, Administration
Quickly configure SVN, Apache, and ViewVC with one certified stack, fronted by a powerful UI.
Try our beta version and let us know what you think!


Over the past several months, I networked with companies who had implemented Agile (primarily smaller ones) and asked them what some of their Agile challenges were. Interestingly enough I heard from several companies saying that getting their infrastructure set up was a challenge while trying to get Agile going since Agile had instant demands on the infrastructure. I immediately had a flashback. In 1998, I had a similar experience when implementing Scrum. The ScrumMaster had the developers coding in the first sprint (as is expected). However there was no real infrastructure or CM system to speak of and what was there was clunky at best. Coding was quite the mess and after the first release came out, the next release had a lot of regression. This all revolved around the lack of focus on infrastructure. Interestingly enough, even after 10 years, the infrastructure challenges persist. 
