Cloud computing can be characterized as the utilization of high-end remote servers and other virtually hosted network services over the web to efficiently manage, process and store information in a highly versatile manner. Cloud computing makes it feasible for enterprises to utilize extremely computable network remote infrastructure and fully scalable atmosphere for mission critical complex business applications. Resources like virtual machines (VMs), storage units, shared utilities and intelligent applications are some of the computing resources provided by the cloud computing environment.
Cloud computing is emerging as a major industry trend in IT modernization and digital transformation strategies among enterprises. As per the recent global cloud (SaaS software) study, Software-as-a-service (SaaS) and infrastructure-as-a-service (IaaS) activities were the top cloud computing trends for 2016. The revenues also showed a remarkable growth in cloud adoption across large to small enterprises.
As per the recent Gartner’s report on Top Cloud Platform Providers, below are the top cloud leaders.
In the event that we can deploy or migrate our existing enterprise’s applications specifically, without rolling out real improvements on the cloud (public/private cloud platform), such applications are known as “cloud ready” applications. Due to architectural design constraints,
However, it is not virtually feasible in most cases. If we discuss about legacy enterprise business applications, ordinarily, they are built on top of standard two or three tier architectural design principals with insignificant concentrate on network topologies, optimal file systems, generic session management techniques, common protocol oriented design, OS independent approach, DevOps-oriented automation and infrastructure independence, which are eventually key architectural considerations for building any cloud-ready application infrastructure.
Consequently, most applications fail in their cloud migration stage and fall under the non-cloud ready category. On the other side, businesses are attempting to move their existing applications to a cloud or are quickly adjusting to cloud-ready apps. The greatest concern is how can we ensure and confirm cloud readiness for existing or new enterprise applications.
For this, let us have a look at some of the best practices or general guidelines along with suggestions which will help to make our new or existing enterprise app cloud ready
Guideline #1 − Avoid using any specific topology for application code and deployment.
Suggestion − Try to build your application as generically and stateless as possible since network attributes like IP address, host details, a number of app nodes etc. can change anytime, and hence, you can’t rely on them.
Guideline #2 − Do not rely on local file system, storage or cache data – they may disappear.
Suggestion − It is highly recommended to build and store such valuable data remotely using any SQL or NoSQL database so that it will prevent reluctant and inconsistent data.
Guideline #3 − Never use manual installation, configuration and deployment options for your application.
Suggestion − Always use OS-specific build scripts or automation platforms like Jython scripts for IBM WAS or use automation platforms like Puppet, Chef Etc.
Guideline #4 − Avoid using any low-level platform-specific API feature (e.g. Java thread Pool, JMX) in applications.
Suggestion − Use generic loosely coupled infrastructure for such APIs, while the PaaS environment should be preferred in this use case. Let us move low-level platform-specific APIs on PaaS (Platform as Service) and consume them as an independent service.
Guideline #5 − Never store session state in your application’s local file system or local memory.
Suggestion − Avoid using HTTPSession, HTML5 storage, cookies or any other kind of local session memory storage. Instead, it is highly recommended to use distributed caching store mechanisms like Memcached, Redis or any external distributed SQL or a NoSQL database.
Guideline #6 − Let us not build an app using non-standard deprecated protocol (e.g. IIOP).
Suggestion − We always require specific kind of configuration and tuning, instead of generic configurations, which create problems when you move to cloud. The guideline is to migrate from the legacy protocol (e.g. IIOP) to newer generic HTTP-based configurations with the maximum use of REST or even SOAP WS-based service specifications so that your application could be cloud-ready with minimal migration effort.
Guideline #7 − Never bank on Operating System-specific core features (e.g. OS-specific task schedulers, batch jobs, event-driven services, timer services etc.)
Suggestion − Avoid using any such platform (Java, UNIX, Windows, Solaris) during application development. Rather, it is better to use an open source platform independent of generic API’s.
Guideline #8: Avoid using a local file system configuration for application logging purposes (Server side logging).
Suggestion − It is better to use open source or commercial PaaS platform log recorder or log aggregators. They can redirect critical real-time information which will be the best-suited option for any dynamic cloud platform.
Guideline #9 − Specific infrastructure dependency can create problems – avoid it.
Suggestion − It is highly discouraged to inject any specific dependencies in the application codebase and configurations like hard coding of hostnames, IP addresses, port numbers, hosted or consumed services like URLs, URIs, Endpoints, CORS (Cross Domain Resource sharing) configuration etc.