Cloud computing (English “cloud computing”, also used the term “cloud data processing”) is a data processing technology in which software and / or hardware is provided to the user as a service.
A cloud is a remote server on which virtual environments and software are deployed. The user does not have direct access to hardware, and the Internet is usually used to access servers. In cloud computing, several types of services are distinguished, for convenience, the abbreviation “as a service”, that is, “as a service” or “as a service”, is used in their designation.
SaaS (Software as a service; software as a service) is a software delivery model in which a provider develops and manages a web application, giving users access to it through the Internet.
PaaS (Platform as a service; platform as a service) is the provision of an integrated platform for the development, testing, deployment and support of applications as a service. The cloud has a certain set of programs, basic services and libraries on the basis of which it is proposed to develop their applications. In addition, PaaS also means individual parts of complex systems, such as database or communication systems.
Iaas(Infrastructure as a service; infrastructure as a service) is the provision of hardware resources, usually combined on the basis of virtualization, as a service. IaaS consists of three main components – hardware (servers, data storage systems, client systems, network equipment), operating systems and system software (virtualization, automation tools, basic resources management tools), and middleware for the management of hardware and software.
CaaS (Communication as a service; communication as a service) – it is understood that communication services are provided as services; usually it is IP-telephony, mail and instant communications (chats, IM).
Waas (Workplace as a service; a workplace as a service) is the provision of a workplace as a service, a special case of infrastructure, as a service.
Cloud computing architecture
The cloud is built on one or more servers interconnected by virtualization systems. Virtualization technologies also allow you to divide the hardware capacity into parts that correspond to the current needs of users who turn to hardware as a service. As a result, the user moves from the acquisition, management, and amortization of hardware resources to the purchase of server time, disk space, network bandwidth, necessary to perform his tasks.
Separate software and hardware virtualization. Software virtualization currently prevails over hardware because processor manufacturers have been unable to properly support virtualization for a long time. The process of introducing new technology into processors required a major change in their architecture, the introduction of additional instructions and operating modes of processors. Despite the fact that software platforms have made great progress in terms of speed and the provision of virtual machine management tools, hardware virtualization technology has some undeniable advantages over software:
- Simplify the development of virtualization platforms by providing hardware management interfaces and support for virtual guest systems. This contributes to the emergence and development of new virtualization platforms and management tools, due to a decrease in the complexity and time of their development.
- The ability to increase the performance of virtualization platforms. Since the management of virtual guest systems is carried out using a small intermediate layer of software (hypervisor) directly, in the future it is expected to increase the performance of virtualization platforms based on hardware techniques.
- The ability to independently launch multiple virtual platforms with the ability to switch between them at the hardware level. Several virtual machines can operate independently, each in its own space of hardware resources, which will eliminate the loss of performance to maintain the host platform, as well as increase the security of virtual machines due to their complete isolation.
- Detaching the guest system from the host platform architecture and implementation of the virtualization platform. Using hardware virtualization technologies, it is possible to run 64-bit guest systems from 32-bit host systems, with 32-bit virtualization environments running in them.
The approach to cloud systems differs in the degree of control over the low level that is provided to the client.
IaaS – in the “infrastructure as a service” model, a virtualized environment is provided based on some clustered servers. In fact, the user is provided with a virtual machine that runs on the provider’s systems, inside which there is every opportunity to install the OS first, and then configure the necessary software. Provided hardware resources can be flexibly and almost instantly changed up or down. It is also possible to take as a service several of these virtual servers; accordingly, you can create your own local network between them. The user is not granted access to a level lower than the virtualization layer (the most commonly used is Xen or Vmware).
PaaS – the “platform as a service” model has the maximum flexibility and extensibility, but this results in the provision of not just a virtual machine or some resources, but entire libraries and APIs. The user is given the opportunity to run their own applications, often seriously limiting the choice of a programming language and additional libraries. But such an application will be able to flexibly receive resources upon request. In this model, the user does not have access not only to the hardware, but also to the operating system and virtualization environment. All that the user works with is API calls and libraries provided by the service.
There is a dependency: the simpler the language and API within which the programs work, the easier and more flexible they are to scale. Therefore, it is extremely difficult to find resources familiar to web developers in cloud systems, at least in a standard form, for example, traditional SQL-relational DBMSs are extremely poorly suited for scalable systems (with rare exceptions, such as Oracle or DB2). Instead, they use their own development as well as third-party open source solutions. One of the most popular solutions was the key-value of data storage and systems based on Google BigTable, as well as its open counterparts. This is very similar to a regular cache – the application writes any data to the storage, associating it with some key, a digital or simple string, then retrieves or deletes it by specifying the key. More advanced systems implement whole data structures, lists, queues, and even allow SQL-approximate selections with sorting and filters. Often, access to the file system also changes, which is replaced by the likeness of the usual storage, supplemented by the map / reduce system for processing large amounts of data.
SaaS – in the model “application as a service”, the user has access only to a specific application. The user does not have access to the API or the program code of the application. All that is available to him is a software environment, usually in a browser window and file storage for his documents. A vivid example of such a service can be called Google Docs for working with office documents and Adobe Air for working with images.
Key benefits of cloud computing:
- The user pays only when he needs a service and precisely for what he uses. This flexible pricing scheme allows you to significantly reduce costs.
- Lack of costs for the acquisition, support and modernization of software and equipment.
- Scalability, fault tolerance, virtualization and security – automatic allocation and release of necessary resources depending on the number of users served by the application. Servicing of the provided resources rests with the provider. Updates to all provided software resources occur on the cloud side, more regularly and in a timely manner.
- The ability to create documents or programs and share it within the development team greatly improves the productivity of creating applications. The ability to define, modify and track timelines, tasks, areas of responsibility, roles (designers, developers, testers, QC based on access rights).
- Remote access to cloud computing – in fact, you can work with cloud computing from anywhere on the planet where there is Internet. To work with the cloud usually does not require any specialized software, just a browser.
The disadvantages of cloud computing.
- The cloud provides weaker legal protection – data in the cloud is less protected in case of any actions taken by law enforcement and other structures. State authorities or lawyers conducting investigations may well receive such data without a search warrant.
- The user does not own hardware – companies that want to audit their providers and conduct their own testing need to remember that the hardware does not belong to them. Scanning for vulnerabilities or thorough testing requires explicit permission from the cloud service provider. Otherwise, it will be equivalent to the fact that the client is trying to get unauthorized access to the provider’s systems.
- Strict work rules and user training are needed. The constant readiness for service from any point connected to the Internet means that the phishing attacks to which employees at home are exposed can also threaten the company in which they work.