Explore cloud computing and the various cloud platforms offered by key vendors such as Amazon, Google, Microsoft® and Salesforce.com. In part 1th of this three-part series, we'll give you a typical example of an enterprise application that uses a JMS queue, and look at what will be involved in using a part of this JMS infrastructure in the cloud.
Introduction
Over the years, we have become accustomed to using a cloud (especially a cumulonimbus) to represent the Internet in a network diagram. A cloud image is often used to denote something that is not fixed, but which must be included in the diagram. The only function of a line on a network is through the cloud to represent data across the Internet. On a security-centric chart, this line through the cloud may also have a padlock next to indicate that the connection is safe.
Common Acronyms
ajax:asynchronous JavaScript + XML API: Application Programming Interface (Creator programming Interface) HTML: Hypertext Markup Language (hypertext Markup Language) HTTP: Hypertext Transfer Protocol (hypertext transmits Kyoto) jms:java™ Messaging Service (java™message service) REST: Representational State transfer (representational State transmits XML: Extensible Markup Language (extensible Markup Language)
Now the cloud has played a major role in the Network diagram. Applications can use the cloud to invoke added values, such as storage, queues, and host applications. The application itself can also be hosted on the cloud. Now the line is no longer simply passing through the cloud, but connecting to the cloud and using the cloud as part of the application. This gives the cloud a more practical meaning.
In this three-part series, we'll explore all aspects of cloud computing. Cloud computing providers are relatively small, with each provider focusing on different directions and offering different services. Programming languages vary from Python to C # to Java or other proprietary languages. The interface to the cloud is also different, and although the lightweight REST interface is preferred, it is not now provided by every cloud provider.
In the 1th part of this series, we will focus on a hybrid example, a dedicated application that uses cloud computing services and infrastructure for enhancements. Learn about the utility of cloud computing by studying this hybrid application. To do this, you need to explore its origins and the capabilities that the main provider of cloud computing currently offers. The 2nd part of this series will cover the development of this hybrid application designed in part 1th. Part 3rd will focus on security and management issues with this solution.
What is cloud computing?
IBM defines cloud computing as an emerging computing paradigm in which data and services are located in scalable data centers and accessible by any connected device on the Internet. It provides the application with considerable scalability (in the case of Amazon elastic Computing Cloud-often referred to as Amazon EC2) and can host the application itself.
Cloud computing does not work for all situations, but the cloud is attractive to an organization that needs different computing power at different times. If an organization's requirements for processing and storage capabilities are uneven, such as batch processing at midnight every Saturday, it makes sense to use the cloud instead of using a data center that is idle for most of the time.
Cloud computing is also especially good for companies that are just starting out. The founders of these companies may not be unfamiliar with the problems raised by investment capitalists, that is, "How does your technology scale?" "Cloud computing is a good answer to this question. However, as you can see in the sections later in this series, cloud computing also brings up ownership, security, and cost issues.
The formation of clouds
Before cloud computing was widely used, we used grid computing and utility computing. The main difference between grid computing and cloud computing is that the grid computing environment is mostly made up of different machines, while the cloud computing environment is more controllable and the backend machines are usually the same. Utility computing refers to a business model that is paid for by data flow or application usage. The concept of "resilient" growth in services is not so prevalent, and the ability to increase (or decrease) capacity as usage changes is an important part of cloud computing.
From early 2000 to 2000, Google and Amazon independently developed their own cloud computing architectures to run their respective businesses. Having developed this infrastructure, both found that their own infrastructure was a service that could be sold to developers on a per-use basis. Amazon is more aware of the key value of its platform, so that it fully believes that one day Amazon will be famous again for its computing platform, just like its online retail web site. Amazon realizes that it can sell its platform in the form of a service (i.e., Platform as a services, abbreviated as paas-and Software as "a service like SaaS"). As a result, Amazon is often seen as a pioneer in the commercialization of cloud computing, particularly in billing and usage models.
There are few professional successful vendors in the design of cloud-based computing environments, including Amazon and Google. Recognizing this, Google, IBM and several universities have formed a research cloud to provide a cloud computing environment for students engaged in cloud computing to develop new cloud computing technologies and applications. Although its size cannot be compared to Amazon's infrastructure with Google, the project provides a good environment for students to study cloud services. The results from this project will help to further develop cloud computing, such as creating a dedicated cloud on the basis of an organization that creates conditions.
Hybrid model emerges
It is not advisable to discard all local applications and use only the cloud, or, conversely, to ignore the cloud by relying on local applications, and the most popular approach is to use local applications in conjunction with the cloud. The so-called hybrid model. This allows a company to use cloud computing when necessary, while maintaining control over its critical applications. For example, many companies have found it more economical to use Amazon's simple Storage Service (S3) to store pictures, videos, or documents. Hybrid models also help with incremental methods.
Even if you think it makes sense to turn most or even all of your applications into clouds, it's not recommended, because it's too risky to do this at once. With a hybrid model, you can turn easy things, such as file storage, into the cloud. Then, after you get used to the deployment model, turn the more important part of the application to the cloud. This is the way I use this series. Next, let's take a look at this application that is mixed by transferring some of the infrastructure.
Designing a Hybrid Application
This sample hybrid application is an asynchronous e-mail notification system. It can be a subsystem in a workflow system. When a new behavior is committed and awaiting approval, an e-mail message is sent to the principal who can make the approval or reject the decision. This system can be used in a system that fulfills orders. When the order is shipped out, an email will be sent to notify the relevant person of the order in transit. It is not difficult to imagine that this system can be used in a variety of applications. E-mail is inherently asynchronous, so an asynchronous mechanism that generates e-mail is an effective way to satisfy such use cases.
Suppose there is a ready-made application that already has this system somewhere in the application, and there are many ways to implement such a system, but a relatively elegant way is to use a JMS. The JMS specification is an important part of the j2ee™ technology stack. Currently, there are many proprietary or open source implementations for this standard. It is easy to imagine a system that sends notifications to a JMS queue, while another system periodically reads the JMS queue and generates e-mail reminders for each message.
For a hybrid model, you can move this JMS queue to the cloud first. In other words, you replace it with a service running in the cloud. What kind of service is this? How can I change an application so that it interacts with this service? This depends on the cloud platform you are using. Next, let's take a look at the various platforms and how to use them to implement or reuse the functionality of a JMS queue, as in this example.
Amazon Web Services
As a commercial cloud-computing first-body, Amazon offers a range of mature services that developers are interested in. Amazon's best-known cloud service is EC2 (elastic Computing Cloud) service. It allows you to build virtual machine instances (known as Ami-amazon Machine Images) that can be run on Amazon's own infrastructure. Some might say that EC2 is closer to a hosting provider's service than using a real computer and charging for traffic charges rather than charging a machine.
Amazon's S3 service is an online storage service that is especially attractive to start-ups that need to expand their storage capabilities. It can be used as an add-on to other Amazon cloud services, such as EC2. This means that an AMI, or a Linux™ computer running PHP, can use Amazon S3 as its data store. With the growth of data flow, S3 service? Also expands flexibly. Amazon's SimpleDB is a fast and simple cloud-based database that provides indexing, storage, and access. Obviously, it's a lot simpler than a full-featured relational database because it doesn't require a pattern, it can automatically index data, and provides APIs for storage and access.
Amazon's SQS (Simple Queue Service) provides a queue, similar to JMS, but has a RESTful interface. You can also use SQS with Amazon's other cloud services, or as part of any application that can connect to it with a simple HTTP get or POST. For this hybrid application, it is a good alternative to the JMS queue. It can be accessed through its RESTful XML interface and can be easily integrated with an existing application. SQS may be the most straightforward choice for such a hybrid application.
Many software providers have worked with Amazon to help their customers make full use of EC2. For example, IBM and Amazon have collaborated to develop many of IBM's most popular enterprise software, such as db2®, informix®, and websphere® on EC2.
Google
Google is known for its fast and accurate search, and for many users, it is the best embodiment of Arthur C Clarke's dictum that "any technology that is sufficiently advanced is indistinguishable from magic." Because technology turns magic into reality, Google is the best choice for a cloud computing platform. The prospect of running apps on Google's platform is incredibly exciting for developers, which is understandable.
Google offers a cloud computing platform called App Engine, based on the underlying platform that Google built up early on. This platform includes GFS (Google File system) and Bigtable (a database system built on GFS). The programming in Google App Engine uses Python. Programmers write applications in Python and then run them on the app Engine framework. Languages other than Python will be supported in the future. For development purposes, you can download a local emulator for the APP Engine environment. APP Engine is free to use and includes up to MB of storage and enough CPU bandwidth to meet 5 million page views per day.
Google App Engine provides some useful infrastructure, such as data storage from GFS and a memcache implementation. However, it does not provide an out-of-the-box queuing mechanism. However, with such a pure Python programming environment, you can easily create your own JMS replacements on top of the App Engine. This data store is ideal for mixed applications, and can be built into a RESTful interface for your queues with minimal Python programming.
Microsoft Azure
As you would expect, Windows® and. NET are the main features of Windows Azure. Microsoft has provided a development environment in which applications written with Visual studio® can be hosted and run on Windows Azure environments. The Azure platform offers many services, such as infrastructure-oriented services for file storage and data access, as well as more specialized services such as search and contact management. It also includes NET Service bus. This is a typical Microsoft implementation of the Enterprise Service Bus (ESB) design pattern. One of the simplest uses of an ESB is Message Queuing, which can act as an alternative to JSM queues. NET Service bus or developer friendly. It supports both lightweight RESTful interfaces using XML and a more lightweight, SOAP-based interface that includes all implementations of the WS standard. Both interfaces support the ease of interoperability between existing applications and NET Service bus.
Salesforce.com
Salesforce.com provides a model through which developers can access Salesforce.com services using their Apex development language. SalesForce called Apex "the world's first programming language on demand." On demand, the main manifestation is that the Apex code is hosted by the SalesForce force.com Cloud service and runs in that context. In syntax, Apex is similar to the Java or C # language.
Apex code is used to generate WEB pages that serve the Visualforce layer, which is the actual user interface. It also uses the Model-view-controller (MVC) model. This is very similar to the generation of ASPX pages in. NET using C #. These visualforce pages can contain HTML, Ajax (XMLHttpRequest objects), and Adobe Flex.
Visualforce lets developers create different variants on the Salesforce.com Web interface. This is useful for companies that like Salesforce.com but want to add functionality to them. Rather than requiring Salesforce.com to build this functionality, let Salesforce.com users achieve the same goal by creating Visualforce pages and writing them to the Salesforce.com backend with Apex code.
Salesforce also provides a controller to connect the page to represent the underlying data from the Salesforce database, including standard routines such as Edit or Save. The force.com cloud has achieved great success. Not only does it provide developers with the means to build applications on the cloud, it can also be used to charge users for the use of these applications through a direct release model. However, it is a very specialized cloud. It is not very appropriate for incremental methods. It is usually necessary to build the force.com cloud.
Concluding
In this article, we learned about the various capabilities that different cloud service providers can bring to us, as well as how to use these cloud services to replace the JMS queues and how to transform an existing application into a hybrid cloud application. In the next two articles, we will look at how this hybrid model of application and cloud services is implemented. We will also look at important issues that can affect the security and management of cloud computing.