[Gllug] Mature (web)app deployment/management frameworks?

Walter Stanish walter.stanish at saffrondigital.com
Tue Oct 13 17:39:39 UTC 2009


After many years of manual deployment / maintenance / upgrades of 
(web) applications (ranging from simple to extremely complex with many
dependencies), I now need to start getting in to automated deployments
of fairly complex web systems.  Fairly complex meaning - database 
state, numerous version-sensitive system-level package dependencies,
multiple daemons, external server RPC dependencies, etc. 

If anyone on the list has positive experiences with any solutions in
this area I'd like to hear them.

To give you an idea where I'm coming from:
 - the target environment is two platforms, 90% Gentoo Linux + 
   10% FreeBSD (normal FreeBSD, not Gentoo-FreeBSD)
 - have been doing LAMP stuff >10 years 
 - culturally I favour configurability/flexibility/longer learning
   curve over straight-jacketing tools (just FYI - please no distro
   wars - I migrated to Gentoo from Slackware some years ago, after
   trying many other distros (no names!) and finding their package
   management painful, broken or insufficiently flexible)

My goals for an automated deployment/configuration management system,
in rough order of priority.
 - deploys cleanly to either a new (or existing) virtual machine, 
   Supporting both virtual hosting or single HTTP domain configuration
 - automated dependency resolution (ie: should probably integrate with 
   the system-level package manager).  Some of the web systems I work
   with integrate with subsystems as diverse as email/VOIP/SMS/payment/
   XMPP/image + video transcoding/shared auth databases/etc... too
   much to approach efficiently without automation, so this
   is an absolute requirement.
 - ideally allows rapid addition/remote management of custom
   configuration options, including real-time validation + adequately
   verbose error reporting (save time locating the cause of issues)
 - ideally able to control services after setup (configuration editing,
   daemon start/stop, potentially even debugging/statistics) 
 - ideally the ability to auto-generate a (filesystem for, or complete)
   virtual machine that can be instantiated automatically for testing
   via xen (or similar) ... an achievable pipe dream! :)
 - ideally not tied to one HTTP daemon
 - probably as a separate system: the ability to auto-generate
   deployable VMs or package(-collection)s after particular versions
   of code have passed testing and are deemed to be stable.  Ditto
   for test-environments.
   
If anyone has any recommendations on anything in this area I’d be glad
to hear them.  I'd assume that autobuild systems for larger pieces
of software may include something along similar lines.  Maybe the open
source vhosting (VHCS/ispconfig), configuration management (puppet)
and network monitoring tools (nagios/SNMP) would also offer some subset
of required functionality.

Right now I'm thinking something along the lines of...
 - convert webapps to Gentoo packages, which will handle system level
   dependencies very well and provide a mature install/upgrade script
   environment
 - use the Gentoo webapp-config tool (I haven't been using this in the
   past due to the infrequent + custom + complex nature of my webapp
   installs, plus I'm not sure how complete/maintained it is these days.
   I'm *very* interested in alternatives here, maybe open source vhost
   management tools that don't make too many distribution or OS-level 
   assumptions?)
 - use Xen for virtual machine creation with virtual networking for any
   generated VM (<buzzword>rapid provisioning</buzzword>)
 - use rrdtool / nagios for statistics + monitoring
 - use sshkeys to automate remote deployments/upgrades/queries with
   custom tools which will be developed as required
 - potentially write a separate packaging server to bridge existing
   SVN environment to new, stable/deployment-ready package database
   (probably another SVN server), then bridge this to clients via
   Gentoo's emerge 'overlay' feature.
... however the above will scratch FreeBSD as a platform.

As this is a fairly major infrastructure decision I would like to make
ASAP I'd like to hear feedback/experiences/recommendations/curses from
fellow list members who are using systems that are operating in any
(subset of) related areas.

(Sorry for the slightly vague description.  I suppose network level
systems automation / management is one of those fairly large, time
saving, habit altering 'jumps' that experienced list members will
recognise in their own journey through UNIXland :)

Looking forward to some interesting comments/experiences/recommendations,
Walter
-- 
Gllug mailing list  -  Gllug at gllug.org.uk
http://lists.gllug.org.uk/mailman/listinfo/gllug


More information about the GLLUG mailing list