Tuesday, October 20, 2009

The Chicken (CM) or the Egg (Agile)…

What came first, Configuration Management (CM) or Agile? On the one hand, I've seen articles over the few couple of years that seem to indicate that trend toward Agile creates a new type of CM (e.g., Agile CM) although they seem to be subsiding. On the other hand, I’ve seen CM professionals (CM’ers) adapt their CM practices for an Agile methodology like Scrum.

I think CM'ers have been establishing CM systems that can handle any type of methodology (e.g., waterfall, hyrid waterfall, incremental, or iterative) needed for ages way before Agile became popular. Do you want builds to occur every day, every hour, continuously? It’s a simple cron job edit and now there are specific build tools to help. Do you want to have yearly, quarterly, monthly, or weekly releases? CM can handle that.

Agile certainly can provide a focus on the iterative and incremental nature of a development process by bringing something more tangible to look at sooner than later. This is very valuable. It gets you closer to what you want. Let’s hear from some other CM experts have said on this in the past:

Mark Bools said, “Configuration Management, when implemented correctly, defines interfaces that can be "plugged" into any development process.”

Brad Appleton said, “I agree that CM has always been able to deal with iterative development and frequent (e.g., daily) integration. And I think that when there is misalignment between the two, and development is "Agile", and CM is not on board with the corresponding value-system, then the CM implementation needs to be adjusted (but development needs to "give" some too - it can't be all one way). So, where shops were previously used to non-agile development and non-agile values, when they go to "Agile", the CM implementation will most likely need a big adjustment. it does create a new mind-set for implementing CM in such an enviornment (even if the tools & techniques already existed).”

Bob Aiello said, “CM has been around a long time. Process needs to be as thick (or as my Agile friends say - have enough ceremony) as necessary to get the job done and avoid mistakes. Your process needs to help us get the job done right each and every time without wasting our time on silly practices that happen to work well at the last show that we were in.”

Note: For more on Agile and CM, consider reading the book “Adapting Configuration Management for Agile Teams” found on both Amazon.com and Wiley.com.

Tuesday, July 21, 2009

What is a CM Tool?

Does this title sound silly? I mean, doesn’t everyone know what a Configuration Management (CM) tool is? Isn’t a Configuration Management CM tool something that provides version control functionality? Well, the short answer is yes (in part) but only in its most simplistic form. CM as a discipline goes well beyond simple version control. It is important to look beyond what vendors define as classic CM tools and consider CM in terms of the full practice and processes they offer. CM at its very essence covers identification, control, audit, and report. Many would expand control to include version control, change control, change management, build management, and release engineering. Now the answer to “what is a CM tool” becomes complex.

Agreeing on exactly all of the CM capabilities is not the point. The point is to ensure you are clear on what possible CM (or CM-related) capabilities there are and then deciding which ones are important to you. By first identifying and understanding the capabilities, provides a good starting point to identifying your needs and then further drilling down to capture requirements for a CM tool evaluation. More details on this topic can be found at: http://www.cmcrossroads.com/article/what-cm-tool.

Thoughts? Feel free to share with others.

Monday, May 18, 2009

Infrastructure for Agile Teams - Who are some "in the Clouds" service providers?

Unlike the past where organizations and product lines spent considerable time and large amounts of capital to establish local infrastructure, the future presents us with other options. They include (but not limited to) renting infrastructure "in the clouds" (e.g., in the internet), owning the server and renting space "in the clouds" (hosting service provider), and owning everything locally and on-premise (within your company). Focusing on "in the clouds", there are several types of "in the Clouds" service providers that allow teams to quickly get infrastructure set for Agile teams.

For those wanting to rent or lease a cloud infrastructure, this is a more recent concept and option that some organizations are utilizing where the infrastructure (servers, software, etc.) is effectively in the internet cloud. This service is sometimes known as cloud computing but have a variety of other names each with slightly different focuses and approaches including software as a service (SaaS) sometimes known as the application service provider (ASP) model, platform as a service (PaaS), application infrastructure provider (AIP). 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.

For those wanting to avoid the cost of having a secure datacenter on premises, then can rent a space in the clouds. Co-location as a service refers to renting space in the clouds by a service provider in order to physically host your server or servers. This is slightly different from cloud infrastructure where you rent a service that provides you access to infrastructure without necessarily knowing the details behind it. For 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.

As you consider each of these approaches, take a good look at the amount of your budget, need for control, and even the development methodology you are considering. These factors can help you better evaluate the best infrastructure model that is best for your needs.