What is a cloud application?
A cloud application, or cloud app, is a software program where cloud-based and local components work together. This model relies on remote servers for processing logic that is accessed through a web browser with a continual internet connection.
Cloud application servers typically are located in a remote data center operated by a third-party cloud services infrastructure provider. Cloud-based application tasks may encompass email, file storage and sharing, order entry, inventory management, word processing, customer relationship management (CRM), data collection, or financial accounting features.
Benefits of cloud apps
Fast response to business needs. Cloud applications can be updated, tested and deployed quickly, providing enterprises with fast time to market and agility. This speed can lead to culture shifts in business operations.
Simplified operation. Infrastructure management can be outsourced to third-party cloud providers.
Instant scalability. As demand rises or falls, available capacity can be adjusted.
API use. Third-party data sources and storage services can be accessed with an application programming interface (API). Cloud applications can be kept smaller by using APIs to hand data to applications or API-based back-end services for processing or analytics computations, with the results handed back to the cloud application. Vetted APIs impose passive consistency that can speed development and yield predictable results.
Gradual adoption. Refactoring legacy, on-premises applications to a cloud architecture in steps allows components to be implemented on a gradual basis.
Reduced costs. The size and scale of data centers run by major cloud infrastructure and service providers, along with competition among providers, has led to lower prices. Cloud-based applications can be less expensive to operate and maintain than equivalent on-premises installations.
Improved data sharing and security. Data stored on cloud services is instantly available to authorized users. Due to their massive scale, cloud providers can hire world-class security experts and implement infrastructure security measures that typically only large enterprises can obtain. Centralized data managed by IT operations personnel is more easily backed up on a regular schedule and restored should disaster recovery become necessary.
How cloud apps work
Data is stored and compute cycles occur in a remote data center typically operated by a third-party company. A back end ensures uptime, security and integration and supports multiple access methods.
Cloud applications provide quick responsiveness and don't need to permanently reside on the local device. They can function offline, but can be updated online.
While under constant control, cloud applications don't always consume storage space on a computer or communications device. Assuming a reasonably fast internet connection, a well-written cloud application offers all the interactivity of a desktop application, along with the portability of a web application.
Cloud apps vs. web apps
With the advancement of remote computing technology, clear lines between cloud and web applications have blurred. The term cloud application has gained great cachet, sometimes leading application vendors with any online aspect to brand them as cloud applications.
Cloud and web applications access data residing on distant storage. Both use server processing power that may be located on premises or in a distant data center.
A key difference between cloud and web applications is architecture. A web application or web-based application must have a continuous internet connection to function. Conversely, a cloud application or cloud-based application performs processing tasks on a local computer or workstation. An internet connection is required primarily for downloading or uploading data.
A web application is unusable if the remote server is unavailable. If the remote server becomes unavailable in a cloud application, the software installed on the local user device can still operate, although it cannot upload and download data until service at the remote server is restored.
The difference between cloud and web applications can be illustrated with two common productivity tools, email and word processing. Gmail, for example, is a web application that requires only a browser and internet connection. Through the browser, it's possible to open, write and organize messages using search and sort capabilities. All processing logic occurs on the servers of the service provider (Google, in this example) via either the internet's HTTP or HTTPS protocols.
A CRM application accessed through a browser under a fee-based software as a service (SaaS) arrangement is a web application. Online banking and daily crossword puzzles are also considered web applications that don't install software locally.
An example of a word-processing cloud application that is installed on a workstation is Word's Microsoft Office 365. The application performs tasks locally on a machine without an internet connection. The cloud aspect comes into play when users save work to an Office 365 cloud server.
Cloud apps vs. desktop apps
Desktop applications are platform-dependent and require a separate version for each operating system. The need for multiple versions increases development time and cost, and complicates testing, version control and support. Conversely, cloud applications can be accessed through a variety of devices and operating systems and are platform-independent, which typically leads to significant cost savings.
Every device on a desktop application requires its own installation. Because it's not possible to enforce an upgrade whenever a new version is available, it's tricky to have all users running the same one. The need to provide support for multiple versions simultaneously can become a burden on tech support. Cloud applications don't face version control issues since users can access and run only the version available on the cloud.
Testing cloud apps
Testing cloud applications prior to deployment is essential to ensure security and optimal performance.
A cloud application must consider internet communications with numerous clouds and a likelihood of accessing data from multiple sources simultaneously. Using API calls, a cloud application may rely on other cloud services for specialized processing. Automated testing can help in this multicloud, multisource and multiprovider ecosystem.
The maturation of container and microservices technologies has introduced additional layers of testing and potential points of failure and communication. While containers can simplify application development and provide portability, a proliferation of containers introduces additional complexity. Containers must be managed, cataloged and secured, with each tested for its own performance, security and accuracy. Similarly, as legacy monolithic applications that perform numerous, disparate tasks are refactored into many single-task microservices that must interoperate seamlessly and efficiently, test scripts and processes grow correspondingly complex and time-consuming.
Testing cloud application security includes penetration and data testing. Potential attack vectors, including advanced persistent threats, distributed denial of services (DDoS), phishing and social engineering, must also be examined.
Cloud applications must be tested to ensure processing logic is error-free. Test procedures may be required to conform to rules established by a given third-party provider.