Cloud infrastructure provides a highly reliable and scalable infrastructure for deploying web-scale solutions, with minimal support and administration costs, when compared to in-house infrastructure. Developers have a wide array of technologies that promise to increase the resiliency of applications upon deployment.
One of the most fundamental capabilities of the cloud is what is called ‘elasticity’. Elasticity enables a cloud based solution to scale-up or scale-down on computing resources, based on the dynamic needs of the business. Without the cloud, businesses were caught between one extreme of heavy capital expenditure to meet surge in traffic demands, and the other extreme of a dissatisfied user community whose requests they could not meet.
In a cloud computing environment, infrastructure elasticity is achieved in an automated manner. For the benefits of automated elasticity to benefit businesses considering cloud deployment, there are a few best practices that businesses should consider.
1. Choose the right deployment mode
Depending on the nature of the business application, one can choose between Software as a Service (Saas), or Platform as a Choice (PaaS).
Is your application a generic business application that could functionally be part of a larger business? Take for instance, accounting. Regardless of the nature of business, accounting is a functional area that is an essential part of any business.
In case the application meets this requirement, it would be ideal to deploy it as a SaaS application.
At the other extreme, you could have business application that caters to the needs of a niche business segment. For instance, if your application specifically caters to the needs of precision engineering components, you could look at deploying that as Platform as a Service.
2. Factor your cloud application to work seamlessly in an environment of independent apps
If your app is an accounting module, it is most likely required to accept data from external applications. These could either be deployed on the cloud, or they would be an enterprise application.
Does your app provide a robust set of connectors/APIs to accept such data exchange? The best approach is to assume that your app WILL interact with third party apps, and build connectors for them from the design stage itself.
3. Whether SaaS or PaaS, build for failure
This ensures that the cloud application development is robust in the event of failure. There are several ways how we could factor failures into the design:
- Automating back up and recover procedures
- Developing the cloud application with threads that resume on reboot
- Develop the cloud application as a set of coupled modules, as opposed to building them as a set of tightly integrated modules
4. Store application database on the cloud by its utility
Where the application needs to access data from a relational database, it would be ideal to store the relational database also in the cloud. This avoids the cost of shipping huge amounts of data to and from the cloud, apart from having an impact on response time due to latency.
The best rule of thumb here is: dynamic data is kept closer to the app, and static data is kept closer to the user eco-system.
5. Manage security
Your cloud application instance needs to be a member of one or more security groups as provided by the infrastructure provider. These security groups are named sets of rules that specify which ingress (i.e., incoming) network traffic should be delivered to your application instance. You can specify TCP and UDP ports, ICMP types and codes, and source addresses while managing security.
Security is by itself a vast topic, but a wide variety of tools/approaches feasible
- Software based firewalls
- Regular download of patches from any third party components used in your application
- Developing test scripts that periodically test the security settings of the app
Cloud application development services will need to take into account the above factors, to have a successful and scalable implementation.
Deploying applications in the cloud calls for careful considerations of the factors above. In this era of ‘tera’, the benefits of cloud computing have reached the doorstep of businesses both big and small. Applications on the cloud will see scorching growth in the years to come, an opportunity that application developers cannot afford to miss.