The author of this article will introduce some of the leading cloud computing platforms and provide guidance on use cases that these cloud platforms can handle.
Platform as a service (PaaS) is often considered to be one of the three major cloud computing service delivery models, and the other two are infrastructure, service and software. It accelerates cloud application development, provides managed infrastructure, simple and flexible resource allocation, and rich tools and services to help achieve efficient code and Run-time performance.
However, the term hides the broad diversity of the cloud platform. In a rough look, there seems to be little commonality between windows®azure™ and Google App Engine or force.com. Amazon Web services™ (aws™) is moving from IaaS to PaaS in a completely different way. Private platforms, such as those provided by VMware®, meet additional requirements. This article will introduce some of the leading cloud computing platforms and provide guidance on the use cases that these cloud platforms can handle.
History
PaaS is formed by merging two trends:
IaaS is not the ideal cloud computing platform. The evolution of Web applications.
Infrastructure services offer a number of advantages for customers who want to extend or migrate their applications to a cloud environment, but infrastructure services typically run on platforms designed for desktops or traditional client-server environments. They may now be virtualized, but not optimized for the cloud.
The second notable trend is the evolving Web hosting site. GeoCities has provided HTML hosting services in the mid 1990s; however, the number of Web hosting services has grown at an alarming rate, and these services support a variety of Active server-side components, including microsoft®asp.net and Java™ technologies, and PHP, Python, and Ruby on Rails scripts. Compared to infrastructure services, these platforms reduce the storage requirements of each application and simplify deployment.
Considerations
What are the basic options for cloud application developers, cloud migration specialists, or administrators implementing the cloud when choosing a PaaS cloud?
Open Cloud, proprietary cloud or hybrid cloud (and blending mode) ... Understand some of the concepts in each category. Managed structures and constraints: what content is supported, what is not supported, and so on. Resource allocation: Degree of automation, easy to develop (ease to tap), release of resource allocation as simple as allocation, etc. Data storage features and methods: persistent automatic storage or storage based on requests, and so on, supported development tools and management tools performance and transaction types and quantities. Security for various cloud components: how to achieve security?
Google App Engine
Google App Engine is one of the best known platforms at the moment. In addition to providing a basic run-time environment, it eliminates the system management and development challenges that can be encountered in building applications that scale to millions of of users. It provides tools to deploy code to clusters and provides features such as monitoring, failover, automatic scaling, and load balancing.
Google app Engine initially only supports the Python-based runtime environment, then adds support for the Java Virtual Rogue (JVM), so it can support applications written in Java and support the use of other JVMs Language-written applications, such as Groovy, JRuby, Jython, Scala, or Clojure. The Software Development Toolkit includes a complete local development environment that can simulate Google App Engine on a developer's desktop.
Google APP Engine has some limitations on programming languages. For example, the Python module must be a pure Python module because the C and Pyrex modules are not supported. Similarly, Java applications can use only a subset of the Java Runtime Environnement (JRE) Standard Edition classes;
Listing 1 shows a simple "Hello world" application in Google app Engine.
Listing 1. Google App Engine "Hello World"
From Google.appengine.ext import webappfrom google.appengine.ext.webapp.util import Run_wsgi_appclass MainPage (WebApp . RequestHandler): Def get (self): self.response.headers[' content-type '] = ' filetype ' self.response.out.write (' Hello, world! ') Creator = WebApp. Wsgiapplication ([('/', MainPage)] def main (): Run_wsgi_app (creator) If __name__ = "__main__": Main ()
The actual code used by different applications is significantly different. As the Python example in Listing 1 shows, if the application logic is small, the command is very simple. You need to import some of the modules included in the SDK and define a request handler MainPage, which processes all HTTP get requests to the root URL. This method can use the Self.response object to write an HTTP response. The Run_wsgi_app () function takes a wsgiapplication instance and runs it in the Common Gateway Interface (CGI) Environment of Google app Engine. If you don't have a lot of demand, it's enough to use the code.
The Google App Engine data store uses optimistic concurrency controls (optimistic concurrency control) to support queries, sorting, and transactions. This is a highly consistent distribution tree database that is based on low-level BigTable data storage systems and adds some additional functionality. The Google App Engine query Language (called GQL) is similar to a Structured Query Language (SQL) in a SELECT statement, but there are certain limitations. For example, GQL does not support JOIN statements, so only a single table query can be accepted.
Despite the limitations of the environment, it provides a rich application programming interface (API). In addition to the data storage functionality mentioned earlier, it provides a set of library functions:
Authentication. Applications can interact with Google accounts to enable user authentication. It directs the user to log on to the Google account and access the e-mail address, and displays the user name after the user completes the authentication. OpenID users can also create an identity at any OpenID vendor and use that identity to authenticate Google app Engine applications. Memcached. The Memcached service provides an application with a memory key-value pair cache that can be accessed by multiple application instances. It is useful not to use persistence and transactional features for temporary data, such as caching data locally for high-speed access. scheduling tasks. The Cron service allows users to schedule tasks that run at regular intervals, such as running daily or hourly. Applications can even perform tasks that are added to the queue itself. For example, it can submit a background task when processing a request.