The very first question asked when talking about clouds – what is cloud computing? In fact, we need to look a little broader and determine what is cloud computing and what are the products that are based on this technology (including cloud hosting). A broad but strict definition of cloud hosting is adopted at the National Institute of Standards and Technology USA. It includes five basic principles that any product must match to be called cloudy.
Let’s consider the defining principles:
“On-demand self-service” is the principle of accessibility of any volume of services. The user can buy any volume of services of a cloud product independently, the purchase and activation of services should not take much time. In the original “renting takes minutes”, that is, the purchase takes several minutes. “Ubiquitous network access” is the principle of network accessibility. Cloud solution should be available from any computer or phone anywhere in the world at any time. “Metered use” is the principle of payment as per usage. The cloud product should accurately calculate the amount of services consumed at each moment, while this volume of services should be paid for. “Elasticity” is the principle of purchasing flexibility. The user can order as a very small number of services and use them for a long time (for example, ten months), and order a large amount of services (ten times as much) and use for a shorter period of time (month). “Resource pooling” is the principle of independence from the “iron”. The user does not know and it does not matter what hardware node of the cloud his virtual machines are running now (or the applications provided to him are running, for the case with SaaS). If one hardware node fails, users should not experience inconvenience or inoperability of services (the regional product should not depend on the operability of one particular hardware node).
Make a note that clouds differ from traditional hosting solutions:
Unlike dedicated servers, installation and configuration of which takes a lot of time, cloud services should be available for use immediately after purchase. The same goes for most classical data center services; Unlike shared-hosting, in the clouds there is an opportunity to increase the volume of purchased capacities instantly, without contacting the operator’s technical support service; Unlike everything that was on the hosting market before the clouds, cloud products provide a payment plan for the fact (I really like “pay as you grow”), that is, pay only for the power that the user really uses with a fairly short interval of charging. These are the five basic principles by which you can clearly distinguish cloud products. However, as I wrote above, they are quite broad, albeit strict. In the concept of a cloud product, there are three types of delivery of the product to the user according to the degree of flexibility are stacked. This is the provision of infrastructure as a service (for rent), a platform as a service or an application as a service.
What are IaaS, PaaS, and SaaS?
Cloud hosting is renting a service for certain site or application in compliance with the above-mentioned principles. But in fact, IaaS, PaaS, and SaaS are completely different products, created for different purposes.
The rental infrastructure is the type of cloud service that is closest to developers, administrators and other technically savvy people involved in the architecture and development of web applications (or enterprise applications). It is suitable web hosting for complex, large and heavily loaded applications that need to use all the customization options of traditional operating systems that need maximum control over the environment. Infrastructure as a service means providing the user (customer) with an interface (software and/or web interface) for purchasing and managing any number of virtual dedicated servers the customer needs (do not forget the first and fourth principles). In this case, the user has full control over the purchased virtual machines and additional services. In this case, the principle of post-payment is that a user, as a rule, can order a certain amount of resources for his virtual machines and pays only for these resources.
The platform as a service is a solution one level above the infrastructure one. It allows you to “pour” the code of your application on some platform on which the application will just work. At the same time, the platform itself calculates how much resources are spent, and expose the desired account in a certain unit of time. The user does not have access to the operating system, but fully controls, develops and configures the application hosting the platform. Typically, the platform is narrowly specialized for a particular type and category of applications.
The application as a service is the most high-level version of cloud products. It implies that the user has access only to setting up his account in some application (or setting up the application, but not changing the application code). The rest is taken care of by the provider of such cloud services (cloud management, management of operating systems, administration, development and rollout of the application).
What is scaling?
So, above, I described in detail what cloud products and services are. Now let’s move on to another important detail of cloud services – infrastructure scaling. When you use PaaS or SaaS, scaling for any load is completely invisible to you, the allocation of capacity is included in the zone of responsibility of the service provider. But when using IaaS-services, the problem of changing the number of purchased capacities for the current load becomes a serious issue. The standard of the cloud product provides the opportunity to purchase additional capacity at any time, pay for them exactly for such a period of time as they are needed, but it does not provide that the capacities will be allocated automatically. More specifically, IaaS simply does not provide load monitoring for user virtual machines, so it cannot provide automatic scaling. In order to effectively monitor the load, which in this way cannot be affected by the user (by mistake turn it off, transmit erroneous data about the load), we at MilesWeb had to spend a lot of time and nerves. But we did it all the same and our cloud provides a service of automatic vertical and horizontal scaling. In the clouds, there are two types of scaling, vertical and horizontal. In general, they are similar to the models of the economic development of the enterprise: intensive and extensive.
The idea of horizontal scaling is the following algorithm:
- Traffic does not fall directly on the user’s servers, but passes through a load balancer;
- In case the load is too high, the balancer will apply scaling, while one or more servers will be turned on, identical to the running user’s server, and the load between them will be distributed evenly;
- In the event that the load has decreased, and an excessive number of servers are running, unnecessary servers will be shut down, the remaining servers will serve the current load on the user’s servers.
The above figure shows a rough outline of such a scaling model. At the same time, it is logical that each server on the stack has enough serious performance reserves (for example, machines from MilesWeb cloud). Pros of this approach:
- Virtually limitless scaling within the cluster that a service provider can provide;
- Large scale step;
In the vertical scaling scheme, the load balancer is not used, and the load information is collected directly on the customer’s virtual machine. With the growth of the load on the machine, instead of increasing the number of identical machines, the amount of resources of one particular machine increases. Directly “on the fly”, without reboots, “lags” or any other “brakes”, simply increases the amount of RAM and the width of the channel on the Internet. When the load decreases, the amount of resources of the virtual machine decreases again.
Hybrid Scaling Cloud
I began to apply the term “hybrid scaling” to explain that if it is necessary, a complex web system can apply both vertical and horizontal scaling in tandem (Similar to Hybrid Cloud). This is a fairly complex task from the point of view of developing an application, and therefore it will have to spend a certain amount of resources, including monetary ones, for its development at the moment. However, the hybrid system is able to combine the advantages of horizontal scaling (unlimited scaling) and vertical (maximum savings).
Instead of concluding
I told what the “cloud” is, what IaaS, PaaS and SaaS are, told you what scaling is. If you think that some of the information in this article is incorrect, please write about it in the comments, we will find the truth together. I have been repeatedly asked about all this, which means that the overall level of awareness of both customers in the Internet business and developers is quite low. But we are talking about real technologies that can already be used today and which for a certain percentage of companies are able to begin to reduce their costs for the web infrastructure tomorrow.