In recent years another mode of Internet usage has been gaining popularity. So called cloud computing and cloud storage refers to the practice by companies of using massive server clusters in large data centers for storing and processing data. Providers of such services, such as Amazon and Google maintain and run software that creates virtual servers and database for individual clients to store and process their data.
While there is a higher risk that confidential data may be accessed by unauthorized parties, the benefits of having a low-cost, flexible, and powerful computing and storage environment that does not require in-house IT support outweigh those risks in many cases.
Cloud computing is related to "software as a service" (SaaS), where software is no longer installed on a local computer. Instead application software is run remotely through so-called thin clients that enable users to run software remotely similar to remote desktop functionality.
The Linux Origins of the CloudThe rise of the Internet coincides with the rise of the Linux operating system. But this is no coincidence. Linux enabled the setup of low-cost computers that can communicate with each other though networks. Linux was designed for the relatively inexpensive personal computers of the 1980's and 1990's and provided a free and open operating system that quickly adapted to new demands such as scalability through the contributions of thousands of programmers around the world.
Given that the Internet is powered by operating systems based on the Linux Kernel it is not surprising that Linux drove the advent of cloud computing. The large data centers that constitute the "cloud" are comprised of thousands of physical servers running Linux. Virtualization software is used to dynamically allocate computing resources to customers. This means the computing resources are generally well utilized enabling the data centers to offer very low-cost rates compared to the traditional model where in-house computers are used that are generally underutilized.
Software AppliancesCloud computing requires simple and efficient methods to load software applications that a customer may want to use. In order to be able to quickly load and relocate jobs requiring a particular application, cloud computing architectures use so-called software appliances that package applications with operating system level software so that any dependencies are delivered along with the application, effectively providing a portable installation.
Key AdvantagesThe key advantages for organizations to use "the cloud" instead of in-house computing infrastructures are:
- Customers don't need to acquire, maintain, and administer computing resources, which can reduce IT costs significantly.
- Subscribing to a remote computing platform (cloud) offers a variety of access modes. This includes the option to use applications by accessing a web page through a browser, where the web page implements a user interface to the application. It includes the option to run software appliances on a remote platform, and the option to use a remote platform through a "remote desktop" type interface ("thin client").
- Simplified software licensing and updating. In general the customer doesn't need to worry about the licenses required for the applications used.
- Fast scalability. Customers can immediately increase the computing resources such as CPUs, RAM, and disk storage, when needed; for a price of course, but fees are generally low, and the allotment can be scaled back, when no longer needed.
- Flexible access. The computing platform can be accessed from any location with internet access, which can be a key factor for collaborative projects.
DisadvantagesThe two main disadvantages of using a cloud computing platform are limited data security and network dependency. Having your data stored at a remote location where other people can access it without your authorization limits what kinds of data you can process and store in the cloud. Top secret data are not part of it. Inventions and intellectual property may not be safe either. Similarly, while server and network downtimes are relatively rare, you may not want any mission critical applications be dependent on servers and connections that you do not have complete control over and that do not have reliable backup systems.
Minor disadvantages relate to lack of control over software updates. A data center system administrator needs to install updates for applications at regular intervals in order to eliminate security vulnerabilities, maintain compatibility, remove bugs, and add new features. Such updates may disrupt a customer's product release plan, cause an application to break, and require adjustments in related software, scripts, etc.