A recent prospective customer asked us to compare Amazon EC2 and Google App Engine. We just finished two relatively large projects on EC2 and Google App Engine, therefore, it is necessary to make a summary.
I plan to compare the two cloud computing platforms from three perspectives: technology, business, and future development trends.This article is a technical comparison. OK. Prepare coffee. Let's get started!
If you score by platform type, you may already know that Google App Engine belongs to PAAs (platform as a service), while Amazon EC2 belongs to IAAs (Infrastructure as a service ), amazon EC2 provides you with a "box" for operating systems. you can install applications on your own, or use Amazon machine image (AMI ), if you want to build a highly complex custom application, Amazon EC2 is the best choice. It allows you to control environment parameters, underlying operating systems, storage and network requirements. Technically speaking, it is a very underlying service, and you can adjust most of what you need.
Google App Engine provides you with a complete platform, including the complete SDK (and Eclipse plug-ins) and services. You can build and deploy your own applications, however, you cannot control operating systems, hardware, and storage, such as writing file systems and using threads, this design aims to ensure that the platform will not be kidnapped by an application.
Simply put:
IAAs: Raw hardware (processor, network and storage)
PAAs: operating system, system software, development framework and virtual machine.
The following two platforms are compared from the technical point of view.
1. Services provided
Google App Engine beat Amazon EC2 with a variety of services. The services provided by Google App Engine allow developers to quickly enter the development status. Services such as blobstore, images, mail, memcache, multitenancy, oauth, task queues, URL fetch, users, and XMPP need to be installed on Amazon EC2, assume that you have already set up the infrastructure for memcache, mail, and multi-Tenant Services to see how long you have used the installation on EC2. I am willing to bet that you will spend more than an hour using the Google App Engine, these services are all ready-made, just like the fruit with a toothpick in the Fruit tray, and you can enjoy them at any time.
2. Management
Google App Engine wins again, because once your application is successfully deployed, it almost does not need to be managed. When your application load increases, you do not need to inject new instances into the service. Google App Engine can freely expand the load capacity. New instances are stripped in real time. When using Amazon EC2, you must keep track of communication traffic at all times (now you can track traffic automatically through scripts). New instances are stripped from your configuration. Therefore, if my peak load is 2x + y, I need to strip more than two application servers.
In addition, when Google App Engine is used to upgrade the application server instance and install a new Server Load balancer, there is no management overhead, which is automatically executed.
3. Abstraction Level
Closely related to the previous one is the abstraction level. Google App Engine is well abstracted. You only need to care about your applications and business logic, so you don't have to worry about underlying infrastructure management, as Nick Johnson said, The abstraction level should be used as a basic principle for choosing a cloud computing platform. What you need to do is driving, and you do not need to study what falls under the hood. In my opinion, if your core business is cargo transportation, you should buy a truck which can efficiently transport your goods from A to B. On the contrary, you should not consider how to buy parts and assemble a truck by yourself.
In the field of software development, we can see frameworks such as grails and Ror, which are very popular because they provide high-level abstraction. If you are a bricklayer, they are like scaffolding, you can step on them to do your job.
4. Reliability
From my personal understanding, both of them are very reliable. From the perspective of the number of users, you can know one or two. Users can always view the status of Google App Engine, which is transparent, however, from historical data, the normal running time of Amazon EC2 is better than that of Google App Engine.
5. Portability
From the perspective of the underlying operating system and development framework used, Amazon EC2 has better portability, but do not worry that you will be locked by Google App Engine. Google has provided a migration guide, it guides you how to migrate from the Google App Engine platform, including all your data. There are also apps such as appscale that can help you transfer programs on the Google App Engine to amazom EC2 or other cloud platforms. appscale supports EC2, eucalyptus, xen, and KVM.
6. Storage
Google App Engine currently relies heavily on bigtable. developers need to understand and learn it from a completely different perspective, especially for those very familiar relational databases, people bound by relational database theory need to be brainwashed. It provides a JPA & JDO access interface, but it does not support all JPA & JDO functions, especially the relationship part, recently, Google also announced that it would enable Google App Engine to support traditional SQL databases. Amazon EC2 already supports SQL databases. You can use Oracle, MySQL, and other relational databases you are familiar.
7. Application maintenance and upgrade
For Google App Engine, application maintenance and upgrade are a breeze. It provides a detailed management panel for various applications, including Log Viewer and data viewer, A program can have multiple versions. When the new version is tested and can be used in the production environment, you can set it as the default version, and Amazon EC2 is much more troublesome, because it belongs to The IAAs type, you must do everything related to maintenance and upgrade.
8. development restrictions
When using Google App Engine, you must be restricted by the platform. If your query is frozen, it is difficult to kill it. In addition, Google App Engine has no threads, the provided sdks are also restricted. Some classes and functions are blacklisted, so they cannot be used or written to the file system.
On the surface, these restrictions are unreasonable, but if you want to provide a PAAs platform one day, you will be able to understand why Google has made these restrictions, in this way, the applications running on the platform will not violate the rules of the platform. Otherwise, the platform may be kidnapped by applications and thus become unavailable, other applications on the platform will be implicated.
Even with these restrictions, 90% of commercial applications can still run normally on Google App Engine, but for applications that want to use threads or write file systems, it is best to choose Amazon EC2, because it provides all the underlying access and control.
9. Language Support
Up to now, Google App Engine supports Java and python, but any programming language that can be converted to bytecode and executed on JVM can be run on Google App Engine, if you like other programming languages, you 'd better choose Amazon EC2, because you can install the Language Runtime Environment on its operating system, and you have almost complete control over hardware and operating systems, what else can't be done? Amazon EC2 also hosts a lot of interesting C #,. net, Asp. the net MVC/Visual Studio project is ironic that, despite Microsoft Azure, many projects developed with MS technology are hosted on Amazon EC2.
In summary, Amazon EC2 is an early starter in cloud computing. It uses Internet standards and open platforms to create a very flexible cloud computing platform, google has used its research results in large-scale databases and some of its internal technologies to create a powerful, but more restrictive cloud computing environment. In terms of core technology, Amazon EC2 allows you to expand any computer instance to multiple instances, so you have full control of each virtual box. Google App Engine is abstracted from the operating system, there is no concept of a computer instance. If your web application does not require OS-related functions, Google App Engine is undoubtedly the best choice. If you need to better control your system environment, especially for operating system-related controls, it is best to choose Amazon EC2.
Original article: Comparing Google App Engine and Amazon EC2 on technology Author: Vikas Hazrati
This article is the use of b3log solo from the simple design of the art of the original article: http://88250.b3log.org/ec2-vs-gae.html