什么时候应该使用以下软件: Amazon EC2,Google App Engine,Microsoft Azure 和 Salesforce.com?

我问的是一般意义上的问题。从云供应商和云消费者的角度来看。这个问题也不适用于任何特定类型的应用程序(事实上,我们的目的是了解哪种类型的应用程序/域可以适用于哪种云平台—— SaaS PaaS IaaS)。

到目前为止,我的理解是:

IaaS: 原始硬件(处理器、网络、存储)。

PaaS: OS,系统软件,开发框架,虚拟机。

SaaS: 软件应用。

如果 Stackoverflower 能够分享他们对云计算概念的理解和经验,那就太好了。

编辑: 好的,我会把它放在更具体的方式-

Amazon EC2: 您无法控制硬件层。但是你可以选择 OS 映像,Dev Framework (。NET,J2EE,LAMP)和应用程序,并把它放在 EC2硬件。你能在 EC2上部署一个用 GoogleAppEngine 或 Azure 构建的应用程序吗?

Google App Engine: 你不能控制硬件和操作系统,你需要一个特定的开发框架来构建你的应用程序。您可以使用任何现有的 Java 或 Python 应用程序并将其移植到 GAE 吗?反之亦然,是否可以将构建在 GAE 上的应用程序从 GAE 中取出并移植到任何应用服务器(如 WebSphere 或 Weblogic)上?

Azure: 你不能控制硬件和操作系统,你只能使用一个特定的开发框架来构建你的应用程序。你能把现有的。NET 应用程序并将其移植到 Azure?反之亦然,基于 Azure 构建的应用程序是否可以从 Azure 中取出并移植到任何应用服务器(如 Biztalk)上?

11839 次浏览

Good question! As you point out, the different offerings fit into different categories:

EC2 is Infrastructure as a Service; you get VM instances, and do with them as you wish. Rackspace Cloud Servers are more or less the same.

Azure, App Engine, and Salesforce are all Platform as a Service; they offer different levels of integration, though: Azure pretty much lets you run arbitrary background services, while App Engine is oriented around short lived request handler tasks (though it also supports a task queue and scheduled tasks). I'm not terribly familiar with Salesforce's offering, but my understanding is that it's similar to App Engine in some respects, though more specialized for its particular niche.

Cloud offerings that fall under Software as a Service are everything from infrastructure pieces like Amazon's Simple Storage Service and SimpleDB through to complete applications like Fog Creek's hosted FogBugz and, of course, StackExchange.

A good general rule is that the higher level the offering, the less work you'll have to do, but the more specific it is. If you want a bug tracker, using FogBugz is obviously going to be the least work; building one on top of App Engine or Azure is more work, but provides for more versatility, while building one on top of raw VMs like EC2 is even more work (quite a lot more, in fact), but provides for even more versatility. My general advice is to pick the highest level platform that still meets your requirements, and build from there.

My cloud experience is currently limited to Salesforce.com

For standard business operations and automation it provides a significant number of features that allow us to get apps up and running very quickly. We are particularly benefitting from the following:

  • Security (Administrators can control access to objects and fields)
  • Workflow & Approvals
  • Automatic UI generation
  • Built in reporting and dashboards
  • Entire system (including our custom changes) is accessible via web services
  • Ability to make the data in the system available through public sites (e.g. eCommerce)
  • Large library of third party apps to solve standard problems

The platform does NOT solve every problem.

I would not use the platform to model a nuclear power station or build the next twitter.

This is an excellent question. Full disclosure as I am partial to Azure but have experience with the others.

Where I think Azure stands out from the others is the quick transition from on prem to the cloud. For example -

  • SQL Azure - change connection string, upload DB, go!
  • Queues work a lot like MSMQ.
  • Blobs are pretty much blobs any way you shake them but they scale like crazy.
  • The table storage component is good because it provides incredible scalability for name/value pairs - but takes some getting used to.
  • Service Bus is my favorite of the services because it allows for a variety of communications paradigms. Two SB endpoints first try to connect to each other, if they cannot, then they route through the cloud - makes for very secure and scalable processing when firewalls tend to get in the way.
  • Access control list - paired typically with the service bus to make sure the right people access the right things - think SAML in the cloud.

I hope that helps!

Now how about Free Amazon EC2 for a year to do a better comparision. Check this out.

http://www.buzzingup.com/2010/10/amazon-announces-free-cloud-services-for-new-developers/

The major points of cloud computing is to save on costs by paying for usage and enable immediate deployment of computing resources.

The costs are not purely x amount of cents per instance per hour. The costs include maintenance, development, administration, etc. The huge benefit of cloud, in my mind is to liberate the customers from having to manage anything that is not within the realm of their core business competency. If I am an insurance business, I want my developers to concentrate on my insurance problems that help solve needs of my claims, rates, etc. I would rather avoid dealing with problems of email servers, file servers, document repositories, and administrating OS patches, service packs, etc.

Thus, in my opinion, the biggest benefits are derived from the SaaS and PaaS cloud offerings. One should go to IaaS only when PaaS or SaaS have serious restrictions to specific needs (i.e. I need to install a set of proprietary COM components and Azure does not support them).

SaaS is good for commodity type of applications that are not the core line of business for the client, but are more of a utility. These are your typical Messaging systems, Portals, Document Repositories, Email systems, CRMs, ERP's, Accounting, etc. etc. etc. Why reinvent the wheel by writing your own when you can customize a well supported third party product.

PaaS is great for core line of business software that supports companies' main business offering. Abstracts clients from having to deal with OS management and lets clients concentrate on the business system development - something that noone else can do for the client.

One can also take advantage of the benefits of PaaS (let's say, Google App Engine) and extend it, at times and if necessary, by pulling out some virtual machines from IaaS providers (e.g. Amazon) to do some number crunching then just send back the output to Google App Engine.

This way, you get the best of both worlds -- you can rapidly develop scalable apps in GAE, then you can always augment it by running any program you want from Amazon virtual machines.

This keeps changing, now Windows Azure also supports VM, so it is also an IaaS provider now.