Skip to main content

How relevant it is to consider deployment architecture during the design stage of the application?

During the recent assignment, I encountered this question and I decided to answer through this post.

In the olden days of implementation, deployment architecture was the last hurdle before pushing the application to production mode. I sincerely believe that, the equations have changed now a days. Mainly, because, we are moving away from traditional deployment options like purchasing the hardware and managing the data centers or outsource the data center management to some hosting service provider. 

Today, we have deployment options as commodities. I would probably go one step ahead and say, if you are considering to host your application on platforms like GAE, Force.com you do not need to even worry about usual problem scenarios of scalability, availability and fail-over. Be assured that your hosting platform takes care of these aspects.  But PaaS has its own limitations. However, I am in favor of infrastructure services as a commodity as it gives you the control of your infrastructure. You still design your own infrastructure.

Why I would consider the deployment aspects during my design? Does not it take away the abstraction away?
I do not believe in the paradigm anymore, when I used to claim, write your software once, and run anywhere. Because today, even simple applications require handshakes across many applications/infrastructures and built with many technologies.

The cloud options are the prime business drivers. Organizations already know how and where the ir applications are going to be deployed. Your application design should leverage the advantages of this option.  
For example, When I know my deployment is on AWS cloud, I would choose S3 bucket as my storage option, because, I do not need to worry about the fail-over design separately. More over, there will be certain issues involving around S3 towards my content security. Designing the general solution may not address the problem, I opt to design the solution specific to problem, so that I can keep it simple.

It does not take the abstraction away. The solutions should address the issues, quickly and importantly, in a simple manner. If making the solution more abstractive makes the solution complex, then I would not even try that.

Another example I can cite is, say you need a shared file system and your general application design may consider NFS. In AWS, there are options like Gluster, with which you get shared file system with other deployment advantages that you will have to consider separately and address, if you design the system around NFS.

However,  some deployment aspects like scalability, availability, fail-over are common issues to be addressed, why to keep it for last. You may get better options or better way of dealing with it, if you include it in the application design stage. At least you would get good time to analyze!

Welcome your comments.

Comments

Popular posts from this blog

Key to adopt open source product

Friends, I am working on business solution implementation on open source product called Kaltura. Kaltura is a media management solution and has loads of features that compel any business to take a peek into it. More-over this is the only complete end-to-end open source software available to handle digital assets. But it comes with its own head ache. Considering its open source, its understandable. I feel, handling these would ensure you the success in your open source product implementation. 1. In my opinion, before adopting any open source software, build the capability to deal with the inconsistency bundled in the open source software. 2. I would avoid involving external consultants for 2 reasons.      a. I am not sure, they would bring necessary expertise on to table      b. I fear that there would be little ownership, they will not see big picture of my business (neither I am interested to share it all) 3. Alternative to that is to build the tea...

Socialism Vs Capitalism

I was discussing sociallism vs capitalism with my father, who is a retired economics professor. Found some interesting facts ... Sharing them ... Socialism believes in distributing wealth equally. For example: If there is INR 10000 and 10 people in the pool, every one gets INR 1000. Wow, that sounds great in a diversified society like ours. Will this work? My take is NO. Because, the focus is only on sharing the wealth. If every one gets equal share, high acheiver will downgrade himself or herself and low acheivers will still downgrade themselves. This is a chain reaction and will reach a point where you will not have anything to distribute. The opposite side is 'Capitalism' where only the acheiver gets the rewards for his or her efforts. India adopts hybrid policy of Socialism and Capitalism, where the distribution of wealth happens through public sector enterprises and wealth creation happens through private sectors. The policies will be made in such a way that private se...

Plan your hosting options - CIR or Monthly transfer?

This blog provides an insight to plan your hosting options. Calculating CIR What is CIR? In simple terms, it is the quantity of bandwidth measured as Committed Information Rate in megabits. CIR allows you to channel as much web traffic as possible within a given bandwidth. CIR calculation will help you to model your deployment option, whether to avail hosted model, or host the application in one's own dedicated server, or avail hosting provider service for monthly transfer or avail hosting provider service in pro-rata basis. What are the important parameters one needs to consider? One important parameter is, total number of simultaneous sessions that your web application is expecting. With this value, we can derive certain other parameters that would help us in arriving at CIR. Do not mean that simultaneous sessions imply simultaneous connections. This only means that, if we assume each session represents one user, we have that many users using the application at any gi...