Pages

Saturday, June 18, 2011

Notes and Links

Note 1: Separation of Concerns: One of the best articles i have read on separation of concerns may be found at http://bit.ly/sepofconcerns

Note 2: Using Services oriented architecture and component based development to build web services applications http://ibm.co/webservapps

Saturday, June 11, 2011

Part 3: Road to a Multitenant app, An Evolution!

[Thanks to all of you who have emailed whether i will cover about the frameworks we may use while SaaS-ifying. I might not be able to cover frameworks for all the technology platforms myself but i am pretty sure the contributors to this blog definitely would! 


I would request all of you to post your questions as blog comments here instead of mailing me. :)]


Now on to todays' post...


Today, i am going to start discussing on one of the most "hyped" concerns which most of the saasification teams have to handle - The Multi-tenancy.


Almost all the stakeholders are concerned about 
"What does it really take to convert an app to a multitenant one?"


Multiple ways to Multitenancy
Woefully, Multi-tenancy has multiple routes and that is what is creating the whole confusion in the current market. Everyday you would hear sure shot ways to "automatically" convert an app to a multitenant app. 


While some of the solutions being offered, ingeniously scan your code and try to "hook" your application to their Multitenant Servers (WORM-Write once read many approach), while others offer APIs to your re-engineering teams for the purpose. Still others use patterns for redirecting the service requests to the relevant modules in your code representing the various tenants. 


While some of the multitenancy providers offer just server virtualization as the solution (to start with), others redirect you to heavily verbose set of articles demonstrating how scores of their middleware servers could eventually enable multitenancy for you in an easy way!


All of these solutions have their own pros and cons and i plan to discuss these in my blog here, though not today [later]! Today i really want to start off with the evolution of Multitenancy for your product/application. 


The Evolution
Yes! Its an evolution path which most of the successful conversion projects are taking. Re-Engineering itself is an evolutionary concept where you can bulldoze your way through factoring and refactoring various engineering elements as per the comfort level of the engineering team and the agility by which you are sometimes "coaxed" to release the code to the market!


Those who plan to take an EXPRESS ROUTE will have to find easy though bit risky a route - in the Multi-Tenant Server approaches which a few companies are providing. 


Preparing your existing app for the evolution
Separation of concerns, decoupling (or loosely coupled system), layering are the most important architecture principles required as a first step towards readying your application to multitenancy. 


Best practice is to use MVC (or its variants) architecture pattern where some frameworks(Eg: Athena) which provide a very effective ORM model which at the core try to enable multitenant db access.


will be continued...

Saturday, June 4, 2011

Part 2: Cloud Computing: A Re-Engineering perspective!

It does'nt really make any sense for enterprise's / ISV's developers to write all the SaaS-ification components all by themselves! SaaSifying an app is a huge task and requires lot of thinking and re-thinking, since now the app needs to cater to the cloud aspects of programming. 


A few main questions a re-engineering team needs to answer are

  • What level of Multi-tenancy a SaaSified app need to be at to maximize the benefits of cloud?
  • What to do to minimize cloud PaaS vendor lock-in?
  • What instrumentation and management components need to be written? Can somebody else help?
  • How to make a SaaS app extensible, flexible, auto-scalable(more on this later?), resilient(this too bit later?)...?
  • Which parts of the application could be outsourced? Can they really be outsourced without leaking my precious concept? Does this too require any architecture consideration?
  • What are other such big ticket questions?

You got that right this time! There are so many such questions which all need to get answered for this humongous task!

Scared? No use... lets find way(s) tackle these one by one!

[If you too are the one who thinks "what the hell is this blog talking here!?!", please have patience for a bit. Promise, it will all make sense in a few posts... Hope "Re-Engineering" is really one of your concerns and you work closely with at-least one such team, otherwise it might never make sense!]

The Head Node...

There has been lot of hype around cloud computing and its various layers in the past couple of years. The world seems to have settled down now and looking forward to delivering real apps for the cloud! Today, there are a lot of tools and frameworks available for engineering a cloud application from scratch but seems none for re-engineering!

This calls for understanding -

What does it take to re-engineer a normal web app into a full SaaS application?

In this blog i plan to address host of issues related to re-engineering the applications, the architecture differences and the need to change it, etc.

I will need all your support in maturing this blog into a one-stop reference!

Happy indulging!!!