If you are building an application and selling it to your customer as product, you need a place to host it. Now you can consider hosting it in your datacenter or customer’s datacenter. The question comes to us in terms of management. Apart from that there are quite a few challenges. If this application is internet facing then not only your datacenter should be responding to it but you need a high bandwidth internet connection for the datacenter. Also you need to make sure that the datacenter is up and running all the time. There are a lot of logistical challenges which directly proportionate to money. Now for a simple portal like HR application no company would be ready to invest that much amount. It does not really make sense, unless you have few other apps which will use the same datacenter.
From the above discussion couple of points comes again and again which are classical in nature.
1. Highly Available
2. Expandable (Elastic)
Any standard cloud solution provides all of them. So in your budget you can easily cut the cost of your application hosting to zero. And whenever it starts it will bill you based on the usage. It is like electricity at your house. If the appliances are switched off then you are paying only the minimum amount and if you have used them heavily the bill will shoot up. You don't need to worry about the power grid or coal supply. Even if there is a damage in supply it will be fixed by the electricity company – not you.
Now, many companies consider it a security threat. They assume if their data is shared between multiple customers. No it does not. This basic sandboxing mechanism is must for a cloud vendor. Even today there are banks who moved to public cloud. So security is well managed.
Yes, there are few valid concerns like if the data should travel across geography. For example, if my customers are in Europe the policy might dictate not to store data outside of Europe. Hence you will choose your datacenter location in Europe.
Now there are different way how you package your software. The packaging also considers how and where you will deploy them
Now from the above
The legacy software which comes in DVD has some pre-requisites and then installs in the actual hardware box of customer location
When it moves to cloud the nature of application ownership varies where you deploy.
One of the biggest pushback comes from development teams. For them this is an unknown territory and they don't want to explore it. If it is brand new application the things becomes easy, but when we need to club it with any existing apps then the concept of Hybrid comes to the place. This allows not only flexibility to maintain legacy apps but bring new undocumented challenges.
Cloud is the future and I see it as next thing to be considered while designing apps. As an Architect, Developer you need to think about it. Not only your new or upcoming apps but your apps which are running for years.
Have a cloud vision for a successful mission.