woensdag 27 april 2011

Multi-tenant Dynamic Staging

Multi-tenant ontwikkelen plaatst je voor nieuwe uitdagingen.
Vaak zie je dat uitbreidingen en aanpassingen aangevraagd worden door een enkele klant (tenant).
Deze uitbreidingen worden aanvankelijk klantspecifiek opgezet en getest. Op enig moment zal de aanpassing dan naar staging moeten worden gepubliceerd om te worden ingezet als een beta omgeving voor die ene klant.

Natuurlijk willen we niet de klant lastig vallen met speciale beta url's waar hij zijn nieuwe product kan beta testen. Dit zal in veel gevallen ook niet mogelijk zijn om dat de tenant's afnemers vaak de url hebben geautomatiseerd of hebben gebookmarked.

Een oplossing voor dit probleem kan zijn een dynamische staging/productie omgeving.
Per tenant kan eenvoudigweg door een instelling in zijn profiel te wijzigen on the fly (dus in productie) de route worden gewijzigd van productie naar staging en visa versa.
De klant test zijn product, bij falen kan er direct terug worden geschakeld, bij succes kan de nieuwe versie van de applicatie naar productie worden gepubliceerd zodat de overige tenants ook gebruik kunnen maken van de nieuwe functionaliteit.

Een belangrijk onderdeel van deze oplossing is de 'Reversed Proxy Server'.
Kom ik later op terug.




zondag 24 april 2011

Multi-tenant software architectuur.

Een multi-tenant (multi huurder) gebouw is een aanduiding die afkomstig is uit de vastgoed sector. Daar betreft het een bedrijfsverzamelgebouw bestaande uit bedrijfsunits waarin alle basisvoorzieningen benodigd voor algemene bedrijfsvoering zoals energie, telefonie, internet, sanitair, koffieautomaten maar ook vergaderzalen en spreekkamers centraal worden gedeeld door de huurders.
Het doel is om vooral startende ondernemers scherp geprijsde professionele bedrijfshuisvesting te bieden waarbij geen of weinig startkosten zijn gemoeid. De centrale kosten zijn in het huurbedrag verwerkt.

In softwareontwikkeling zie je een zelfde trent. In de vorm van software die als een enkele applicatie is ontwikkeld en centraal op een enkele server(omgeving) draait. De software is zo ingericht dat er per gebruikersessie wordt gekeken bij welke tenant (huurder) de gebruiker is aangesloten. Vervolgens wordt er een tenant specifieke omgeving getoond.

De techniek achter dit type software noemen we multi-tenant architectuur.
Bekende voorbeelden van multi-tenant applicatie’s zijn:
  • CMS systemen: Joomla, Wordpress of Dotnetnuke. 
  • Blogsites: Google Blogspot, Bloggy, Wordpress. 
  • Social media: Facebook, Hyves, Twitter. 
Deze applicatie’s hebben met elkaar gemeen dat je in meer of mindere mate je eigen omgeving virtueel kunt aanpassen naar je eigen wensen. Je bouwt als het ware je eigen website, echter achter de schermen deel je een enkele applicatie met andere deelnemers.
De voordelen van dit soort applicatie's voor de gebruikers zijn onder andere het flexibele en snelle opzetten van je eigen omgeving en natuurlijk ook de kosten.
De meeste multi-tenant applicatie’s bieden wel een gratis start omgeving waarin de basisfunctionaliteit wordt aangeboden.
Een ander voordeel is de schaalbaarheid en daarmee de exploitatiekosten. Aanbieders van multi-tenant applicatie’s kunnen bij succes eenvoudig de hardware uitbreiden naar meerdere of snellere servers. Er hoeft immers slechts een enkele applicatie opgeschaald te worden.
Uiteraard is er ook kritiek op deze techniek. De complexiteit van multi-tenant applicatie’s ligt in het algemeen gesproken hoger en ook de ontwikkelfase zal meer tijd in beslag nemen dan bij een traditionele applicatie. Echter dit zie ik als een nonissue. Een cloud applicatie zal niet uitgevoerd kunnen worden in een traditionele applicatie zonder een vorm van multi-tanancy.

Persoonlijk heb ik al een aantal jaren ervaring met multi-tenancy. Ik heb tal van modules geschreven voor CMS systemen en momenteel werk ik voor mijn huidige werkgever in de automotive branche voor een multi-tenant online catalogus.
Voor mij geeft deze architectuur een extra boost aan mijn motivatie omdat er nog veel ontgonnen gebied is op dit onderwerp. Daar bij geniet ik altijd weer van de verbazing van mijn opdrachtgevers als ik binnen een paar dagen een volledig nieuw ogende online catalogus kan aanbieden aan een van onze businespartners.