Service-oriented architecture (SOA) has been dominating the enterprise IT world for the past few years by promoting the idea of loosely coupled services. Cloud computing is the latest IT trend that is changing how enterprise applications are deployed and delivered to consumers.
Visit any software vendor’s website and you will notice that it is decorated with clouds. If you have recently interviewed for a job, your prospective employer would be shocked if you had not heard of this jargon. In this article, I will provide an introduction to cloud computing and offer a few best practices for building an application that you plan to deploy in the cloud.
What Is Cloud Computing?
It is very difficult to define cloud computing or come up with a definition that everyone will agree on. However, here is how the National Institute of Standards and Technology (NIST) defines it:
“Cloud computing is a model for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction.”
From a business owner perspective, he or she does not need to worry about building and maintaining computing resources such as hardware, middleware, databases, or applications — these are offered as services via the Internet. Also the availability, reliability, scalability and performance of the resources are the responsibilities of the cloud vendor. As a developer, you focus on building applications while the other concerns are addressed by the cloud provider.
Characteristics and Benefits of Cloud Computing
Several characteristics of cloud computing benefit IT organizations. Some of the main characteristics and benefits are:
- Pay per use — One of the most important characteristics of cloud computing is its rental and pay-as-you-go model. This greatly lowers startup costs and total cost of ownership. You do not have to worry about purchasing expensive hardware and software licenses nor worry about availability, scalability, reliability and security aspects of your infrastructure, platform or application. You will be charged by the cloud vendor based on the actual usage of resources. This helps companies to focus on innovation and greatly reduces the time required to launch new products.
- Computing resources available on the Internet — The hardware and software resources are available on the Internet. These can be accessed by either developers to build and deploy applications or end users to perform their regular work.
- On-demand and self-service — The services are available on-demand and users can provision their services themselves. For instance, if you are a developer and you need an application server instance such as WebLogic Server for building and deploying your Java application, you can start a virtual machine running WebLogic Server from a self-service portal within a few minutes. You do not have to worry about locating hardware and installing software. This greatly improves productivity and leads to customer satisfaction.
- Resource pooling, multitenancy and virtualization — One of the important concepts of cloud computing is treating the hardware as a resource pool and using it based on demand. Virtualization helps effective usage of computing resources by treating them as a resource pool and promoting multi-tenancy. Multi-tenancy promotes the ability to share the same computer by multiple organizations without compromising their security and privacy. This leads to effective usage of hardware resources and lowers cost of ownership.
- Elastic in nature — Cloud computing encourages elasticity in the application platform. By elasticity, I mean the actual resources used by the application may grow or shrink based on the load on the application. For example, the number of instances of virtual machines running an application may dynamically grow during the peak load and may shrink automatically in the off-peak hours. This provides automatic scaling of applications without intervention from the application administrator and leads to effective usage of resources based on demand.
Best Practices for Building Cloud Apps
Here are a few best practices that you can use while choosing a platform or building an application that you plan to deploy in the cloud.
- Do not jump on the cloud bandwagon without doing proper research. Check whether the application you want to build makes sense for deploying in the cloud. Use public cloud for consumer-facing applications, whereas private cloud is well-suited for large internal/enterprise applications that require integration with lot of local data and applications.
- Security and privacy are big concerns for many applications, and these may mandate that your applications cannot be deployed in a cloud environment. Ensure that the cloud platform you plan to use addresses these security concerns before building and deploying the application.
- Performance and scalability are also concerns for applications that may be available globally. Ensure that your cloud provider has the capability to deliver those applications all across the globe.
- Building cloud-based applications is different from building applications on-premise. Some applications may not be suitable for the cloud. Design your application for performance and scalability, and build it so that it can benefit from the cloud’s elastic computing nature. Typically, a stateless application can scale better by adding server instances.
- Use a standard for building applications and plan to use IaaS. This will enable you to change between cloud providers or between private and public cloud.
- There is no standard for PaaS-based applications, so choose your platform based on your enterprise needs. Use a platform that provides a standard API for building applications and avoid lock-in to retain the option to move to another platform if required.
- Explore alternative persistence technologies for database persistence if your application requires dynamic search, scalability and storing of both structured and unstructured data.
- If you are planning to build a private cloud, use cloud management software instead of reinventing the wheel to manage your cloud platform.
Cloud computing is changing the way applications are built and deployed. In this article, I provided an introduction to cloud computing and provided some insights on different cloud platforms.