Everybody’s up in the air about clouds, but few seem to really know where they’re heading. Most existing applications aren’t ready for the cloud quite yet, especially since the realization seems to be sinking in that building security into the cloud is no trivial pursuit.
Cloud computing is about to change the way software is written. Up till now, applications were programmed with scant regard to what they would actually be deployed on-promise.
Clear expectation from a cloud enabled platform is:
– System shall have uptime of 99.999
– Applications & Infra shall be able to scale on demand.
– Business shall not worry of hardware & infrastructure
– There shall be pro-active monitoring & alarms.
– There shall be provision of active DR.
Compared to on-promise deployment, moving to cloud will simplify infra management and business continuity.
Few basic fundamentals for application developers for cloud enablement are:
– Deployment of application shall be automated: Application shall be deployed in fully un-attended manner without any human intervention for cloud enablement.
There are of course many, many ways to go about automating the deployment of your application. In a cloud environment, it’s common to use a configuration management system (like Chef or Salt).
More recently, Docker has been gaining significant momentum for that purpose too (look out for an upcoming blog post on this topic here!).
– All application component shall be stateless:
In Auto scaling, Cloud compute machines are use and throw and created and destroyed based on workload. For applications, to enable auto-scaling, they must be stateless (Even web applications). There are techniques to make web applications stateless. One approach can be to use external memory cluster to store use session data.
– Application shall not write any thing on local machine :
Since machines can be destroyed, application must not write logs to local storage. Applications can use to write in cloud storage (like S3 service of AWS) or use centralized logging implemented.
– Applications shall not use local IP and shall not refer other application node IP.
Application shall not be dependent on other application node of same service layer. Instead of Local IP, application shall use localhost.
These basic measures are must to migrate on Cloud. If you are on cloud and not following it, you are not truly not cloud ready.