When we start talking about cloud, several common questions come to mind:
What do you mean by “cloud”?
What standard requirements need to be fulfilled before moving to the cloud?
Is my data secure on the cloud?
What about application quality?
Is it easy to push my application on the cloud?
I will be examining these questions and their answers in a series of posts around cloud.
The original goal for the cloud was to reduce the cost of IT infrastructure by allowing customers to utilize an infrastructure managed by a third party that contains physical and virtual machines, disk space for storage, and other resources remotely. This type of service model is termed Infrastructure as a Service (IaaS).
The cloud advanced to the next level by offering more than just the hardware. Cloud vendors started to offer the complete environment (for development and production) including the operating system, programming platform, databases, and web servers for hosting ‘N’ applications. This offering is called Platform as a Service (PaaS).
Today, we hear almost every article or blog referring to Software as a Service (SaaS) as the most popular cloud offering. In SaaS, the cloud vendors will install, host, and manage your software application on the cloud, and the end-users (referred as cloud users) can gain access to their application using specific cloud clients.
Moving to the cloud has its own risks and benefits like every new technology or innovation that is on the market. However, it will be interesting to understand what it takes for an application to be considered cloud-ready.
Based on my experience, I have put together the seven most crucial requirements for a cloud compatible application.
- Multi-tenant architecture. Refers to a principle in software architecture where a single instance of the software runs on a server, serving multiple client organizations (tenants). This is achieved by ensuring a unique key for referring or accessing any record in the database. Everything is linked to this key, thus helping the cloud user have their own view of the intended application or service.
- Sign in/sign out. Apart from the legal bindings, there has to be a definite workflow with an appropriate level of authentication for every user to securely sign in and sign out of the cloud environment or application, as we are uploading the user data into the cloud environment. The same holds true for signing off so that we do not store the active data of the user once they sign off.
- Logging. Another important requirement is the ability to constantly monitor and log every action, transaction, and task performed in the cloud environment (mainly databases and application servers) by the user. There is also a need to have a load balancing and fail-over system in place in case we are dealing with crucial applications.
- Easy maintenance. The application must allow an easy and quick way to backup and restore the data in case of a crash or corruption. And even that backup plan needs a good maintenance routine to perform these cleaning tasks (including logs and disk space cleanup) for our application.
- Hosting your application. If we plan to host our application on our own private cloud, we need a well-designed cloud landscape with the relevant servers, load balancers, firewalls, and proxy servers in place. Unless we decide to host our application on a public cloud, like Amazon, then we need not worry about infrastructure design details.
- Data privacy and security. Assuming that the user will enter his data into our cloud environment, we need to ensure data privacy by fulfilling major security requirements around SQL injection, cross-site scripting, architecture, logins, and passwords to ensure that the user’s data is secured.
- Data transfers. Whenever we upload or download data from the cloud, in the form of reports or other flat file exchanges, we must ensure the use of standard encoding or encryption techniques and perform these operations via secured FTP or HTTPS connections.
The standard requirements around usability, scalability, and performance also apply depending on the business needs or type of application.
If you plan to push your application or product from your local environment to a cloud infrastructure, you will need to fulfill the above requirements for your respective application. Please remember that these requirements will also have an impact on the quality of your application.
Do you think your application has what it takes to move to the cloud? Share your thoughts in a comment below.