If the clouds are suspended in the atmosphere, condensation of water vapor in the sky are visible from the ground. What is cloud computing then? Cluster in the heavens?
In fact, the cloud computing is a technology of data processing, in which software is made available to the user as an internet service. The user has access to its own data, but cannot control the operating system and the proper software, you are working with (to take care of infrastructure, it is also not necessary). Directly to the “cloud” called Inet, which just hides many technical details. This is in brief. Now let’s look at everything a little deeper. Cloud Computing on the fingers.
Depends on what is Cloud Computing?
At the heart of Cloud Computing, there are a few approaches.
The first – via the Internet. Of course, there are closed systems, but as a rule, all you can touch through the network (in this case, “outside” the cloud lends itself as a normal server). The second important point is virtualization. With virtualization, users get as many resources as much as they should (and, of course, how many can afford).
That is required on the server side and how it can allocate those resources – all hidden behind the walls of virtual machines, they can run on hundreds or even thousands of servers, and often – and even in different data centers.
The third point: Cloud Computing – is the service. In the 60 years of computer, time had to pay and wait for free time. In Cloud Computing similar approach is used. And let stand in a queue do not need – all services are also billed separately. Cloud for the user – is a set of services that are consumed and paid for, sometimes without the slightest idea what it uses internally.
Take a simple example – hosting for 5 GB of data and access it via HTTP REST API. Nobody thinks for buying such service, where data is stored physically by using RAID drives and etc. The main thing that has the desired amount of data that is always accessible through user-friendly interface.
The fourth point – oddly enough, simplicity and standardization. Yes, even though clouds stands at the forefront of computer technology, it is one of the most important of its properties. Here, there are no new languages, complex configuration files and hours of sessions in a terminal to set all the demons. All that is proposed within the cloud, accessible via the most simple calls to the API and protocols. Immense popularity won the so-called protocol REST, through which all operations on the data can be made through the http-requests. However, can be used and many other decisions, moreover, ready-made libraries are available for various programming languages.
Now a simple question – why all this necessary? Answer. For small, in general, money you get access to reliable infrastructure with the necessary capacity. Uptime commercial systems tend to be guaranteed at the level of three to five nines (99.9% and above), which means no more than a few minutes – an hour of downtime per year. No need to be a genius to use this system – it uses simple and well-defined protocols and API. And what’s important – virtually unlimited scalability! Buying a regular hosting, you can not jump over your head and spike loads risking a crashed for a few hours of service. In a cloud of additional resources available on the first request. And if your script hack, password will be required for the calculation of a couple of processors, and gigabytes of memory (the girlfriend, too, read the magazine, and shut your pictures with a password), it would not be a problem. And after all relish in the fact that such resources should not buy right away, paying bills wild – the functionality can grow at any time. That’s why Cloud Computing is a real godsend for startups, whose owners can not predict in advance: shoot their project or not.
SaaS, Paas … do not swear!
Options for the provision of computing power are very different. Everything related to Cloud Computing, commonly referred to as word aaS (aaS – two letters of A, not what you thought!). Stands just – “as a Service”, ie. “as a service” or “as a service.”
SaaS (Software-aaS), or applications as services – an option which you propose to use some specific software, such as enterprise systems, as a service to subscribers. Say, the company has no ability or desire to host your internal Exchange-server for email, calendars, etc. And it could buy it remotely, taking into account all relevant circumstances. Do you use Google Docs? This is a SaaS, comes for free.
PaaS (Platform-aaS) – unlike SaaS, designed more for the end user, the option for developers. In the cloud operates a set of programs, basic services and libraries, on the basis of which are encouraged to develop their own applications. The most glaring example – a platform for creating applications, Google AppEngine. In addition, under the PaaS understand the individual parts of complex systems, like database systems or communications well.
HaaS (Hardware-aaS) – one of the first terms, means the provision of some basic “iron” of functions and resources as services. But instead of a direct lease Hosting uses virtualization. So when it comes to specific hardware, it refers to some abstract entity, similar to the real iron (a place for storage, processing time equivalent to a real CPU, bandwidth).
IaaS (Infrastructure-aaS) – it is considered that the term has replaced HaaS, lifting it to new levels. For example – this is virtualization, load balancers and similar systems that underlie the construction of other systems.
SaaS (Communication-aaS) – means that as the services provided with communication services, typically IP-telephony, email and instant communication (chats, IM).
What color is Cloud Computing?
Not so simple in the cloud kingdom, and now on the market, there are many decisions that call themselves “Cloud.” Consider the types of architectures, it is easier to understand what it is.
Approach to cloud systems vary the degree of control over the low level, which is available to the client. That is, if the lowest (zero) option, we will take a personal server on site at the ISP, where you can even rhinestones on the front panel of trailers, then everything is not so.
VDS / VPS – this is not just hosting, but also Cloud. Of course, the typical VDS (Virtual Dedicated server) has the most attributes of the cloud: they give you a virtualized environment, where you can deploy your applications or even operating system, resources are also limited to your wallet. But the similarities end and – the server’s resources are limited on which everything revolves. You also pay a monthly basis, and if I had every Friday night you need to quickly expand the server to receive crowds of visitors, no one cares.
The first level for this Cloud-and will provide a virtualized environment based on some standard “units” that the resource may be in some real server (purely for ease of comparison and counting). In fact, you’re given virtual machine that runs on the provider, but inside it has all the features to install first on any OS (the supported of course), and then configure the required software. Limitations of such machine, as already stated, are expressed in an approximation to the real hardware, but, in contrast to the VDS, it can be flexibly and almost instantly be changed up or down. Also allow one account to raise some of these virtual servers, respectively, we can create between their networks. You still do not know that there are lower level than the virtualization layer (most often used by Xen and VMware), but then you can do whatever you wants. Expansion of resources may also vary – the easiest option when you do not restrict the number of virtual servers, but their parameters are selected from several types of plans. Example – Amazon EC2, where you choose from five different types of instances. This makes it easier for the provider, but not for you – if your application is not able to scale and add new servers on the fly.
“The cloud” option implies a kind of slider (like the volume control), with which you can change the amount allocated to your server resources. It took a 1912 GB of RAM – moved the slider, and after a few seconds the server’s resources are greater.
Companies operate in the market (for example, esds.co.in), providing a cloud server and other services, such as file storage or conventional, but highly reliable data center services provider.
The developers of so-called web-OS often position themselves as clouds, although they only provide some applications (SaaS-model) – although not common, for example, a text editor, but a whole family of applications, united in common, similar to desktop operating system interface. This virtual desktop is available anytime and anywhere with web browser! Usually, vebOS work on the basis of AJAX-technologies or Flash.
Programs riding on a cloud
Clouds of the third type have the maximum flexibility and extensibility, but it turns providing not just a virtual machine or some resources, but the entire library and API. They give you the opportunity to run your own applications, often severely limiting the choice of language and additional libraries. But such an application can implement a “cherished dream of all the clouds and the flexibility to get resources on demand”. Restrictions on the virtual machine you can not see, moreover, unaware of its existence: everything from what the program works – it calls to the API and libraries that provide the service. It would seem that unless something can be done in such circumstances? And how! Generally, this degree of abstraction is now a fashion trend in IT.
There is a co-relation: the simpler language of API, in which the program works easier and more flexible than their scale. It is therefore extremely difficult to meet in the cloud systems familiar to Web developers resources, at least in the standard form. Take at least a database. Traditional SQL-relational database is extremely ill suited for scalable systems (with rare exceptions, like Oracle or DB2). Instead, they use their own design, each of which are usually very interested in the technical side as well – a third-party open solutions. One of the most popular solutions are key-value data storage and systems based on Google BigTable, as well as its public counterparts. This is very similar to a regular cache – any data that your application writes to the repository, associating them with some key numbers or a simple string, then extract or remove, enter the key. More advanced systems implement the whole structure of data, lists, queues, and even allow those close to SQL sample with sorting and filtering. Often goes to and the file system, which replace the likeness of the usual storage, supplemented by a system of map / reduce to handle large volumes of data.
These features require a review of architecture of existing applications when you want to deploy them in the clouds. It is not easy to move from conventional databases, particularly if previously wrote in PHP and MySQL.
Amazon and Google
With advances in technology the opportunity to hide behind a layer of virtualization and intermediate libraries, so that the programmer real-world applications do not have to think about. Think, for all the major languages of modernity has long enforced its own virtual machine. If a cloud infrastructure is well designed, and the language is chosen correctly, it is enough to make sure that the majority of programs (note: not all) were able to work and to scale almost linearly. However, the developer and the user will not know anything about how you run inside the top ten at all virtual servers, each of which operates on a pair of real ones. The appearance of the first serious and accessible cloud hosting from Amazon gave rise, in fact, an entire industry by revealing mere mortals the most advanced technology.
The most well-known system of this kind is the Google AppEngine, which provides a kind of “sandbox” quite limited to specific API and system service. “Sandbox” is limited in several languages – is now a Python and Java, but resource constraints sufficiently liberal to you for a long time thinking about them (claimed that the service is available free for sites with up to 5 million hits a month). Service is available as a beta, so only recently became possible to register for everyone. Prices of service for commercial use or those little limits are reasonable and comparable with competitors (as usual – Payment of hours or some abstract units of resources).
Ironically, the same service has released another “evil empire” – Microsoft Azure. It is based on a special version of Windows Server 2008, other services available to the developer, based on already proven technologies -. NET Runtime, SQL Service, Live, SharePoint, Dynamics CRM. Applications have access to all services through abstracted from the details of API, via HTTP, REST, SOAP. Judging by the inclusion of a cloud of typical business platforms, the system will be mainly focused on construction of enterprise applications and services. While there is a test, you can get totally free access to all materials.
How should I build a cloud?
Do not think that cloud stuff is only available to those who have a lot of money. While you’re far from the truth, as almost all companies do not offer anything for free, and you have to pay. But if you can not wait something to try to get in hands, I will tell you about something, that is a gift, a home-analogues Google AppEngine and Amazon EC2.
As you remember, AppEngine – it’s such an environment to execute programs (Python-e), where your script is running inside a cloud in a special sandbox and interacts with the world through the API. Resources are dynamically allocated and they are very flexible. It is ideal for various research projects and to quickly build web applications, then just can not be afraid of overloading and digg-effect. An open source implementation called AppScale can run the same program as in the original Google-crafts.
If you have a powerful computer, you can deploy such system into multiple virtual machines, simulating a cluster, or just borrow a few friends system and build a cluster in a single room. AppScale comes in the form of the image that is already configured Linux-based system that is put on a virtual machine, or Xen.
Keep in mind that we should have at least 4 servers, which means that the computer must be powerful, highly desirable – 64-bit. And – more memory, because the Xen-4 will eat resources, with an excessive appetite to build a cloud!