Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cloud Foundry explained

So I've been reading up on Cloud Foundry and yet I'm still confused as to what it is. Here is my take anyway on PaaS on CF, and hopefully you guys could tell me if I'm wrong and explain it a bit better.

A traditional PaaS offering like Microsoft Azure or Google AppEngine provides a full platform to develop, test, host and manage your web app. You must however use their API and are restricted to the services that they offer and languages/frameworks that they support.

Cloud Foundry seems to be some kind of "middle-man", whereby it allows your app to use services from many public clouds. How does it accomplish this? Is there a single API that you use, something like LibCloud or JCloud? Can you use one service from one provider, and another service from another provider, for example? And does Cloud Foundry itself offer any services, or is it merely a middle-man allowing you to easily migrate from one platform to another, and use different service combinations from different providers in a single app?

like image 204
Amoeba Avatar asked Apr 29 '13 14:04

Amoeba


People also ask

What is difference between Cloud Foundry and AWS?

Cloud Foundry makes it faster and easier to build, test, deploy, and scale applications. AWS CloudFormation can be classified as a tool in the "Infrastructure Build Tools" category, while Cloud Foundry is grouped under "Platform as a Service".

What is Cloud Foundry architecture?

Cloud Foundry has an open architecture that includes a buildpack mechanism for adding frameworks, an application services interface, and a cloud provider interface.

Is Cloud Foundry a server?

Cloud Foundry manages user accounts through two User Account and Authentication (UAA) servers, which support access control as OAuth2 services and can store user information internally, or connect to external user stores through LDAP or SAML. For more information, see User Account and Authentication (UAA) Server.

What are the products of Cloud Foundry?

Cloud Foundry's container-based architecture runs apps in any language on your choice of cloud – Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP), OpenStack, VMware vSphere, SoftLayer and more.


2 Answers

I'm a developer on Cloud Foundry -- and yes, Cloud Foundry is indeed a bit nebulous (no pun intended). Hopefully I can help clarify things a bit.

Cloud Foundry is a platform as a service, but it needs an infrastructure as a service underneath it. Cloud Foundry supports vSphere, vCloud, OpenStack, and Amazon AWS as infrastructures through the BOSH tool. Most web application developers don't care about any of that, but this is really cool for people who have to worry about large IT infrastructure.

Say you're in charge of IT for AcmeCorp. You've got 50,000 employees who all use your internal web service, Fizzbuzz, to help them do their jobs. To support all the employees, you need dozens of instances of the Fizzbuzz application running on several machines with powerful processors and lots of memory, and you need massive amounts of disk space to store information generated by the Foo, Bar, and Baz applications you use internally, too. You've moved well beyond what you would care to manage on your own blade servers, so you decide to lease a datacenter.

Unfortunately, AcmeCorp is horribly dysfunctional. The finance department has a huge say in what datacenter you use, and every couple years they make you switch from one datacenter to another. Every couple years, you have several weeks of downtime while your engineers try to fix bugs in Fizzbuzz exposed by switching between vSphere, vCloud, OpenStack, or whatever.

If your engineers had written Fizzbuzz, Foo, Bar, and Baz against Cloud Foundry rather than directly against the underlying infrastructure, your downtime would have been minimized. You wouldn't have to worry so much about being locked in to a particular datacenter, because that layer of hosting has been abstracted away by Cloud Foundry. Cloud Foundry does support a certain set of services too, including PostgreSQL, MySQL, Mongo, Redis, and RabbitMQ, to name some. If Foo, Bar, and Baz use those services provided by Cloud Foundry, that's one less thing to worry about when you migrate between infrastructures.

Later on down the road, you realize that you can make a fortune by selling Fizzbuzz as a service to other large businesses. You're in really good shape for this: because your engineers rearchitected Fizzbuzz to run on Cloud Foundry, you can simply deploy Cloud Foundry to AWS for as long as it's needed. Customer tried it for six months and decided not to renew the service? No problem, you don't have any datacenter leases to worry about -- just terminate all those EC2 instances and move on. You can easily have one deployment of Cloud Foundry for each instance of Fizzbuzz as a service so that your customers' data is totally isolated from each other.

The icing on the cake is that Cloud Foundry is open source. If you find that it isn't quite suited to your needs, you don't have to just email support and wait around for the Cloud Foundry engineers to implement your dream feature -- you've got the source too, so you can make any changes you need. And it's available under the Apache 2.0 license, so pull requests are gladly accepted, though not required.

I hope that paints a picture of the kinds of problems that Cloud Foundry solves. Feel free to ask for more details in a comment, or you can check out the Cloud Foundry mailing list if that makes more sense for future questions.

like image 82
Mark Rushakoff Avatar answered Oct 13 '22 06:10

Mark Rushakoff


I'm a Developer Advocate for Cloud Foundry and want to add a little to Mark's answer to focus on some of the other details you mentioned in your original question.

Firstly, you mention GAE and Azure. Both of these have certain limitations - GAE limits you to specific languages and APIs, for example. Neither are Open Source. CF is extensible (the new version has buildpack support for example, enabling you to choose "any" language runtime), and you can choose to run it where you want.

Mark mentions 4 IaaS providers we can run CF on today, but assuming that the IaaS in question (let's say we include Azure, CloudStack, Google Compute Engine etc as future targets) can support a small number of what we call Cloud Provider Interfaces (CPIs) then you can deploy Cloud Foundry onto those infrastructures too.

You ask how it is possible to use services from different providers. Like Heroku, the forthcoming version of Cloud Foundry (.com) will support a "marketplace" where you can plugin functions from additional vendors, and if you are running your own Cloud Foundry instance you can choose which services to deploy and connect to your apps.

It's pretty cool :-) come talk to us on the mailing list if you want to know more!

like image 26
Andy Piper Avatar answered Oct 13 '22 04:10

Andy Piper