Central Desktop Blog

 

The Solid Central Desktop Infrastructure Stack

Image of Data Center Infrastructure

LAMP



We often describe our system architecture as being based on a modified LAMP stack. Most technology-proficient people familiar with open source software have a basic understanding of what that stack is comprised of and the features and benefits that it yields.  At Central Desktop, we've closely mirrored this common stack but switched out a couple of the elements. You could call our stack a FAPP stack.  Following is what the letters of that acronym stand for and the role each plays in our infrastructure.

FreeBSD


Starting with the Operating System, our stack is mostly comprised of FreeBSD.   FreeBSD was originally chosen due to the Central Desktop founding employees familiarity with the operating system and prior experiences in previous successful data center stacks. It's a rock solid server operating system that has earned industry respect due to it's stability track record. FreeBSD is the free OS most often listed near the top of Netcraft's list of the most reliable hosting operating systems. The FreeBSD project has gained in momentum lately with it's support for ZFS. As engineers and IT folk deal with ever growing data sets and how to best manage them the benefits of ZFS are bringing many new people to FreeBSD. Linux can't natively support ZFS due to licensing issues so, it is losing out on this amazing piece of technology. FreeBSD 8 just went into beta with a release date scheduled for August and we're excited and already testing what we can do with the new features.

Apache

Next in the lineup is Apache. Central Desktop experimented with Lighttpd in the past but did not see enough performance benefit to justify managing 2 different web servers. Apache has overall great performance, is well maintained, has a battle tested security record and there's a huge community of resources for any issue or need that may arise. Central Desktop makes extensive use of Apache's mod_rewrite to make clean URLs, support our permalink feature, and point users to the correct company or team plan URL.  This apache feature combined with our wildcard DNS setup allows us to give every team plan account it's own personalized URL subdomain such as http://mycompany.centraldesktop.com.


PostgreSQL


PostgreSQL is the software stack choice that I'm most pleased about.  Several years ago when Central Desktop was in it's infancy, the free Database software getting all the press was MySQL.  This continues today even though there is some uncertainty due to the pending Oracle purchase, the founders of MySQL forming their own new company, and the fear of project forks.  But several years ago when this choice was made we evaluated several Databases. Even though we didn't need some of the more advanced features in the early days, it was great knowing that this was a database that we could grow into--which we certainly have over the past couple of years as we add new features such as our shared folders feature for Enterprise plans.  The PostgreSQL project contributors have just released version 8.4 with continued performance enhancements and new features. Other database vendors may get certain features sooner, but the PG developers tend to do it the right way.  This means fewer changes later and a more stable system that you can count on.

PHP


PHP is a great project with a lot of critical mass. The Central Desktop Software as a Service (SaaS) application that you interact with on a daily basis is almost entirely written in PHP. In the early days of Central Desktop there was a lot of open source PHP code that we could leverage and learn from. This community, this wealth of knowledge and examples, has both inspired and contributed to our ability to rapidly implement new features. It's support for features such as memcached, APC, pecl extensions and more has enabled us to tackle performance issues as they arise with new features and rapid customer growth. PHP 6 is on the horizon and it will continue to improve the Central Desktop experience.  As our codebase grows, features like namespaces will help us keep our own code well organized. PHP 6 also will have improved Unicode support which will help Central Desktop with future internationalization projects as we increase our global business.

In general I prefer that the system software we choose has a community with a solid foundation and a real desire to do things the right way--a community that doesn't necessarily care about making the release on time; rather it's released when it's right.  As everything is a balance and no software of any complexity is ever perfect, this can't be taken to extremes or you'd never ship anything.  Still, perfection is an admirable goal and one that we take from these communities and do our best to drive into our own software.

Post a comment

0 TrackBacks

Listed below are links to blogs that reference this entry: The Solid Central Desktop Infrastructure Stack.

TrackBack URL for this entry: http://cdblog.centraldesktop.com/cgi-bin/mt/mt-tb.cgi/288