The content of the article:01: What hangs Cloud Computing?
02: SaaS, Paas ... Chur, do not swear!
03: What color is Cloud Computing?
04: Programs riding on a cloud
05: Amazon and Google
06: What should I build a cloud?
07: From heaven to earth
In fact, cloud computing is a data processing technique, in which software is provided to the user as an Internet Service. The user has access to its own data, but can not control the operating system and the software itself, which works (take care of the infrastructure, it is also not necessary). Directly "cloud" refers to an Internet that just hides many technical details. This is in a nutshell. Now let's look at all the little deeper.
What hangs Cloud Computing Service Models?At the heart of Cloud Computing Service Models are several approaches.The first is available over the Internet . Of course, there are closed systems, but as a rule, all you can touch through the network (in this case, "outside" cloud lends itself as a normal server). The second important point, this is virtualization. With virtualization, users get as much resources as they need (and, of course, how many can afford to buy). What is required on the server side, and how it can allocate these 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 a service. In the 60 years of computer time I had to pay and wait for the free hours. The Cloud Computing uses a similar approach. Let stand in line do not need, all services and are paid separately. Cloud to the user, it is a set of services that are consumed and paid for, at times without the slightest idea what it is used internally.
Take a very simple example - Hosting for 5 GB of data and access to them via HTTP REST API. Buying this service, no one thinks, which physically stores data, which drives and RAID are used, etc. The main thing is that there is the right amount of data that is always available with the help of user-friendly interface.
Hot Topic of : Main Advantage of Red Hat Cloud StrategyThe fourth point is oddly enough, simplicity and standardization . Yes, although clouds and stands at the forefront of computer technology, it is one of its most important properties. Here you are no new languages, complex configuration files and hours of sessions in the terminal for setting all the demons. All that is offered in the cloud, is available through the most simple API calls and protocols. The huge popularity won the so-called REST protocol, by which all the operations on the data can be performed through the http-queries. However, used are many other solutions, moreover, are available ready library for different programming languages.
Now, a simple question is, why is all this necessary? I answer. For small, in general, the money you get access to a robust infrastructure with the necessary you performance. Uptime commercial systems are generally guaranteed at three to five nines (99.9% and higher), which means no more than a few minutes, hours downtime per year. No need to be a rocket scientist to use this system, it uses a simple and well-described protocols and API. And more importantly - virtually unlimited scalability! By purchasing a regular hosting, you can not jump over your head and a sharp spike in load risk to get the fallen service for a few hours. In the cloud , additional resources are available on the first request. And if your script password cracking suddenly require to calculate a couple of processors and gigabytes of memory (girlfriend also read our magazine and closed the photos password), it does not become a problem. And yet relish in the fact that such resources do not need to buy once, paying bills wild - functionality can grow at any time. That is why Cloud Computing - a real godsend for startups, whose owners can not anticipate: shoot their project or not.
Cloud Computing Service Models - SaaS, Paas, do not swear!Variants of computing power are very different. All that concerns Cloud Computing, commonly referred to as a word aaS (aaS, two letters A, not what you think!). Stands just, "as a Service", it is "as a service" or "as a service".
Of SaaS (Software-aaS) , or applications in the form of services is an option under which you propose to use some specific software such as enterprise systems, as a service subscription. For example, the enterprise has no ability or desire to host an internal Exchange-server for mail, calendars, etc. And it can buy it remotely, taking into account all the necessary specificity. Often, whether such services are available only in the browser? And you use Google Docs? This is SaaS, only free.
The PaaS (the Platform-aaS) is unlike of SaaS, intended more for the end-user version for developers. In a cloud operating a set of programs, basic services and libraries, on the basis of which they are encouraged to develop their own applications. The most striking example, a platform for creating a Google AppEngine application. In addition, as understood by PaaS and parts of complex systems, such as a database system or communications.
HaaS (the Hardware-aaS) is one of the first term, meaning the provision of some basic "iron" of functions and resources in the form of services. But instead of a direct lease hosting virtualization is used. So when it comes to specific hardware, to understand some abstract entity, similar to a real iron (space for storage, CPU time in terms
of any real the CPU, bandwidth).
The IaaS (Infrastructure, aaS), it considered that the term has replaced HaaS, lifting it to a new level. For example - this is virtualization, load balancers, and similar systems underlying the construction of other systems. SaaS (the Communication-aaS) - means that as services are provided communication services; typically IP-telephony, e-mail and instant communication (chat, IM).
What color is Cloud Computing?Not so simple in the cloud kingdom, and now exists in the market a lot of decisions that call themselves "Claudia". Consider the types of architectures, to make it easier to understand what it is.
The approach to the cloud systems of different degrees of control over the low level, which is provided to the client. That is, if for the lowest (zero) option, we will take the personal server at the provider site, where you can even rhinestones on the front panel to hook, then on all is not so.
The VDS / the VPS, it is not just hosting, but still could not Cloud. Of course, the typical VDS (Virtual Dedicated Server) has the most cloud attributes: you provide a virtualized environment, where you can deploy your application or even the operating system, resources are also limited only to your wallet. But the similarity ends - server resources are limited opportunities Iron server on which everything revolves. You pay monthly you, too, as if suddenly every Friday night you need to quickly expand the server to receive crowds of visitors, no one cares.
Cloud Computing Service Models
can be created between your network. You still do not know that there are lower level than the virtualization layer (most commonly used Xen or VMware), but further you can do whatever you want. Expansion of resources may also vary - the easiest option when you are not limited in 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, however, is not for you - if the application is not able to scale and add new servers on the fly.
"Most cloud" option implies a kind of slider (like volume control), with which you can change the amount allocated
to your server resources. It took 12 GB of RAM - moved the slider, and after a few seconds the server resources are greater.
In the market the company's work (for example, rackspace.com), with a cloud server, and other services, such as file storage or conventional, but highly reliable hosting. Also note Apatana Cloud, developers of one of the best IDE, Stax.net, it only if you need a scalable hosting Java-based applications, or Engine Yard, if you love to indulge in Ruby.
The developers of so-called Web-OS often position themselves as clouds, although they only provide some applications (SaaS-model) - if not normal, say, a word processor, and a whole family of applications combined in a common, similar to the desktop operating system interface. This virtual desktop is available always and everywhere, was the browser! Usually, WebOS operating on the basis of AJAX-technologies or Flash. Among the interesting systems note Cloudo (www.cloudo.com), the eyeOS ( eyeos.org , also available as OpenSource) and Jooce (jooce.com).
Programs Riding on A CloudThe third type of clouds have maximum flexibility and scalability, but it turns out not only the provision of a virtual machine or some resources, but of entire libraries and API. They give you the ability to run their own applications, often severely limiting in choice of language and other libraries. But this application will be able to realize the "dream come true all the clouds" and flexibly receive resources on request. Virtual machine restrictions you can not see; moreover, unaware of its existence: everything that runs the program - this API calls and libraries provided by the service. It would seem that, unless something can be done in such circumstances? And how! In general, this degree of abstraction is now a fashion trend in IT.
There is a correlation: the simpler the language and the API, in which work programs, the easier and more flexible to scale them. Therefore, it is difficult to find in the cloud systems familiar to web developers resources, at least in the standard form. Get at least a database. Traditional SQL-relational database is very poorly suited for scalable systems (with a few exceptions, such as Oracle or DB2). Instead, they use their own development, each of which usually is very interesting technically and - third-party open solutions. One of the most popular solutions have become key-value data store, and systems based on Google BigTable, and its public counterparts. This is very similar to a conventional cache - any application writes data to the repository by associating them with some key, digital or a simple string, and then retrieves or deletes, indicating the key. More advanced systems implement the whole data structure, lists, queues, and even allowed close to the SQL sample with sorting and filters. Often it gets and the file system, which replaced the likeness of the usual storage, supplemented by a system map / reduce for processing large amounts of data.
These characteristics require the revision of the architecture of existing applications, when you want to deploy them to the cloud environment. It is not easy to move from ordinary database data, particularly if used only did what I wrote in PHP and MySQL!
Amazon and GoogleWith the advancement of technology have the opportunity to hide behind the virtualization layer and intermediate libraries, so the programmer to the actual application does not have to think about what is there under that server is spinning. Think about it, because all the major languages of modern times have long been performed on their own virtual machines! Developers broke away from the iron and come back to it is not very much and want. If the cloud infrastructure is well designed, and the language is selected correctly, just enough to make the most of the programs (note: not all) were able to work and to scale almost linearly. In this case the developer and the user will not know anything about how you launch in all a dozen virtual servers, each of which runs on a pair of real. The appearance of the first serious and affordable cloud-hosting on Amazon-and has created, in fact, an entire industry, 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", a limited and very specific API system services. "Sandbox" is limited in several languages - currently is Python and the Java, but resource constraints sufficiently liberal to you even for a long time did not think about them (stated that the service is available for free for sites with up to 5 million hits per month; more precise restrictions, see documentation). The service works as a beta, so only recently become possible to register everyone. Prices for the service for commercial purposes or those few limits are reasonable and comparable with competitors (as usual - the payment of some hours or abstract resource units).
Ironically, the same service has released another "evil empire" the Microsoft the Azure. It is based on a special version of Windows Server 2008; the other services available to the developer, based on the already-proven technologies - .NET Runtime, SQL Service, Live , SharePoint, Dynamics CRM. Applications have access to all services via abstracted from the API details via HTTP, REST, SOAP. Judging by the inclusion in the cloud common business platforms, the system will be mainly focused on the construction of enterprise applications and services. While there is a test, you can get totally free access to all materials.
Amazon is one of the largest and most ambitious players in the market cloud systems. Its services are used by many companies, almost all - start-ups, for example, the sensational Twitter has decided to scale the problem is with the help of Amazon's the EC2 . It stands for Elastic Compute Cloud, and today it is the most affordable and reliable option in the market. But mind you, that you have to pay for all the resources (transmission data, processing time, data storage), and the possibility of expanding each particular server is still limited. Also, the real work must take into account a lot of nuances, for example, that if you turn off the virtual machine (instance) does not store data, and loses its IP-address.
All Amazon's cloud services are provided under the brand of Web Services and include, in addition to EC2:
- SimpleDB is a database service with a simple interface and SQL-like features;
- Simple Storage Service or S3 to store large amounts of data and REST-API to access;
- CloudFront is distributed network storage and content delivery;
- Simple Queue Service is message queuing system for creating distributed applications;
- Elastic MapReduce is processing system and analyze large amounts of data on the basis of an open Apache Hadoop.
What should I build on a cloud?Do not think that cloud things are only available to those who have a lot of money. Although you are far from the truth, as almost all companies do not offer anything for free and popular service at least an hour, you have to pay. There are pleasant exceptions, such as Aptana Cloud, where it is possible without investments in the period of 30 days to use the smallest virtual machine. But if you can not wait to try something to make out with your hands, I will talk about a couple of projects that allow free, then there is nothing to create at home analogs Google AppEngine and Amazon EC2.
As you remember, AppEngine is such an environment for the execution of the programs (in Python-e), where your script is running in the cloud in a special sandbox and interacts with the world through the API. Resources are allocated dynamically and it is very flexible. It is ideal for a variety of research projects, and to quickly build web applications, then just can not be afraid of overloading and digg-effect. Open implementation AppScale and called on it, you can run the same program as in the original Google-the craft.
If you have a powerful computer, you can deploy this system on multiple virtual machines, simulating a cluster, or simply borrow from friends several system units and collect the cluster in a single room. AppScale delivered already configured Linux-system image, which is placed or on the Xen virtual machine, or on a bourgeois Amazon EC2, but for the most intelligent, working on the basis of open counterpart, of Eucalyptus, which below.
To consider that it is necessary, at least 4 servers, which means that the computer must be powerful, very desirable - 64-bit. And - more memory, because Xen-4 and will eat resources with excessive appetite! Detailed instructions how to install and run quite heavy, so read it on the official website:
If it happens, you will have your own cloud, where you can experiment with a variety of programs in Python. Then, if you really want, you can transfer them and on Google. They should work exactly the same way, despite the fact that AppScale based on open technologies Google release counterparts (and not the fact that in all works the same way).
Python If you do not like, and you want to try something else, you can try to build a cloud hosting virtual machines is the same as that of Amazon's the EC2, where you and friends can install their own operating system and do anything there. For this purpose, another open development - EUCALYPTUS, which is not a tree, but 's Elastic the Utility
Computing Architecture for the Linking Your the Programs the To Useful Systems. If briefly is a staging environment, which runs on multiple computers (cluster), and provides a web console and the ability to upload your own image of the virtual machine, and manage them to obtain the same Amazon, only for free. It is said that even the utility and API is similar amazonovskim steal, so you can first practice on them, and then go to Amazon, if scary at random to throw so much money. By the way, the same AppScale works perfectly on top of Eucalyptus-well, saving you from having to khimichit with Xen and images. Just I took it and ran!
If you need to manage multiple virtual machines, forming one single or a few clouds, try to open another development - Enomalysm (www.enomaly.com). It is a platform that allows you to combine both commercial virtual machines (the VMware, the KVM, the Xen and others), as well as cloud-based systems such as Amazon EC2 in one large virtual data center, managed by a single web console. Access to the platform of your application is very simple and is based on standard protocols, the XMPP, the REST, the JSON.
From heaven to earthMost importantly, you need to understand cloud system is a means for receiving a medium, which can work as a regular virtual machine with the user OS, and the whole platform for the execution of applications. An important advantage of the Cloud and is independent of the hardware and flexible scaling, although in this direction is still much that can be done. Usually placed in the clouds young projects that have Dunno, shoot or not. Therefore it is better to pay for all the resources (CPU, for every gigabyte of traffic, for a place in the vault) on the clock. This is different from the usual host, where the money must pay once a month. The second advantage is the SLA, the level of service is usually much higher than standard hosting, and cloud offers a level of reliability at 99.999. So, the failure of any system or even the entire server / rack does not drop the your site!
If you do not want to bother with installing the operating system, virtualization and other sisadminskimi details choose cloud systems, providing the platform immediately in your favorite language (a choice, usually - or Java or Python). You will be limited to pre-defined the API, is often not to be missed the usual services and applications, primarily SQL Database, but when you get used, you can make applications that withstand millions of hits, and break the fuck who will manage! Cloud systems tend to be much better protected, and even before the final OS hard to get, because there can be multiple levels of virtualization, monitoring and security systems (try, however, you can...).
INFOIf you want to develop serious applications, and you know Java, try GridGain (www.gridgain.com). This is one of the most powerful tools for creating applications, ideally working in the clouds.