A recent post from Francois Zaninotto has been getting a lot of attention recently. It's his look at what would be needed to design a complete CMS and the full architecture behind it.
When faced with the alternative between an off-the-shelf CMS or a custom development, many companies pick solutions like ezPublish or Drupal. In addition to being free, these CMS seem to fulfill all possible requirements. But while choosing an open-source solution is a great idea, going for a full-featured CMS may prove more expensive than designing and developing your own Custom Management System.
He breaks it up into sections that look at the hidden costs behind custom development, what components it takes, the environment to build in and some of the fundamental questions you need to ask before even getting started.