CA Development Lifecycle…Episode 1
Happy New Year! I hope everyone had a joyful and triumphant holiday season. Only 4 short weeks remain before it is no longer socially acceptable to keep those Christmas lights shining brightly in the front yard. Fight the power!
In today’s blog I wanted to start off a new series that focused on how we actually develop software here at CA. I’m not referring to specific algorithms or architectures, but rather the overall Software Development Lifecycle.
| Why on earth would you care about that? Well, if you ever had a bug you wanted fixed (and of course our software has no bugs, right?) or a feature you wanted added to the product, it’s empowering to know how we approach software development to better understand what and when changes can be delivered. This is a big topic with lots of facets to cover, so I’m going to split this into 3 parts. Think of it as a trilogy if you will. Hopefully you’ll find the plot to be interesting and the acting better than that of Hayden Christensen. | I’m good…no wait I’m evil! |
Software as a Service
Although this is likely blatantly obvious to many, it’s worth reviewing as it’s critical to understanding our development process: all ChannelAdvisor products, including Pro, Merchant, Search, Shopping, and more, are what the industry calls Software as a Service (SaaS) solutions. SaaS products are typically web based and are expected to be available 24 hours a day, 7 days a week, 365 days a year (we take leap day off, j/k), with some small exceptions for occasional early morning maintenance windows. SaaS solutions have tremendous advantages to our customers: all you need is a web browser to use our tools anywhere in the world, any time of day or night. No need to install from a CD or get the latest patch, you’re always guaranteed to be on the latest and greatest version with no effort on your side required. If there’s a bug that needs to be fixed or a new feature people are screaming for, we just push out that change to our production server environment and (Bam!) everyone gets the change. This is good stuff.
Of course it’s not all peaches and cream as the reverse is also true: if there’s a bug in our software and we deploy it to the production environment, (Poof) everyone sees the bug instantly. If one of the servers dies or the Internet connection is severed, suddenly productivity grinds to a halt. This is the tradeoff the modern business world is learning to accept as the pros usually outweigh the cons, as long as the duration and impact of problems can be minimized or eliminated. This is what is commonly referred to as the “reliability” (likelihood of being bug free) and “availability” (likelihood of being online and accessible) of a system. I talked about this a lot in a prior posting so won’t belabor that here.
Environments
When you fire up a web browser and point it at http://pro.channeladvisor.com, http://merchant.channeladvisor.com, http://searchtraq.channeladvisor.com, etc. your request is actually routing to a server in what we call our “Production” environment. There are many servers networked together in that environment (another prior blog talked more to that) which have the latest and greatest code level running on them in concert. This constitutes what you see as the “ChannelAdvisor Software”.
What you don’t see, however, is that we also have scaled down “copies” of those environments to develop and test our software before it reaches your eyes. As good as our developers are, they still need a place to try out the new software and fix any defects before it goes “live” to our production environment and your web browser.
Specifically our environments break into the following categories:
So the lifecycle of our software typically flows from Development to QA to Staging to Production. To further complicate matters, we also have the concept of “Short Term” changes and “Long Term” changes, each with their corresponding versions of the “Development” and “QA” environments (e.g. “Long Term Development”, “Short Term Development”, “Long Term QA”, “Short Term QA”). I’ll get more into that in my next posting.
In the Next Episode
So now that you better understand the nature of our software and the environments it lives in, I’ll launch into the mechanics of how we deliver that software in my next 2 postings. Specifically, I’ll be looking to cover the following topics:
If I missed anything or you’re particularly interested in some specific areas, feel free to post some feedback and I’ll endeavor to address those questions as best I can.
See you next time!

January 13th, 2007 at 1:10 pm
[…] CA Development Lifecycle…Episode 2 Sat 13 Jan 2007 | Posted by Mark Isham under Uncategorized , ChannelAdvisor Stores , ChannelAdvisor , Education , Software , Architecture Greetings! This is my second post in a series I recently started discussing the Software Development Lifecycle we use here at ChannelAdvisor. If you have not yet read my prior posting on this topic, you may want to do so now. It’s a fascinating tale of pirates, danger, monkeys, and death defying software development on the high seas! […]
February 4th, 2007 at 4:32 pm
[…] 5. Validation and Deployment The features are built and unit tested, now it’s time for the QA team to shake the beams and make sure everything is working as originally intended in the requirements. This is done in the QA and Staging environments as discussed in the first post. Inevitably problems will be found and corrected. Once the new code looks rock solid, it’s deployed to our production environment where you, our handsome, happy, and healthy customers can then use for the immediate benefit of your business. […]
February 19th, 2007 at 10:06 am
ChannelAdvisor Technology
Capturing some key points on how our technology beats the pants off of our competitors: Methodology. We have a very structured development life cycle spanning concept, design, development, testing and deployment….