Cloud Foundry is an open source platform as a service. There are various commercial variations of Cloud Foundry like Pivotal Cloud Foundry, IBM Blue Mix etc. Cloud Foundry runs on top of an Infrastructure as a service, which should be installed separately. For instance, a customer can install Open Stack and deploy Cloud Foundry on top of it (This is an On-Premise solution).
Cloud Foundry integrates with the underlying ‘Infrastructure as a Service’ platform to provision resources and a variety of IAAS solutions like Open Stack, VM Ware Vsphere, AWS are supported.
Features of Cloud Foundry:
Cloud Foundry provides a run time environment for applications based on the application type. For example, if the application is Java based, it would provide a JVM environment, if the application is Python based, it would provide a Python run time etc. The developers have to just focus their effort on building the application and a single command like ‘push’ would push the application to Cloud Foundry, setup the run time environment and get it up and running. Also, there is no hard tie up to any Cloud Foundry API within the application. The same application, which would be built for any other environment could be used for Cloud Foundry as well.
2. Marketplace Services:
Cloud Foundry provides market place services like, databases, Message queues etc., as managed applications within Cloud Foundry. For instance, if an application has to connect to a database, we just have to bind the application to the database service which is offered through marketplace. The services could be hosted services on Cloud Foundry platform and managed by Cloud Foundry or it could be services which are provided by third party vendors.
3. Logging, Scaling:
Cloud Foundry also provides a lot of other features, like scaling (based on memory or CPU), logging features etc.
Thus with Cloud Foundry, we can get an application from cradle to production very quickly, without the hassles of environment setup, infrastructure setup etc.
Components of Cloud Foundry:
Following are some of the components of Cloud Foundry:
Every application which is deployed to Cloud Foundry will be mapped to a hostname (IP address and port). A router (known as 'Go Router') component redirects incoming traffic to the application and takes care of load balancing across multiple instances of the application.
2. Diego Cell:
Cloud Foundry creates containers (known as 'Diego Cells') internally and deploys applications on these containers.
Cloud Foundry uses a component knowns as 'UAA' for authentication and authorization. This module helps in authenticating and authorizing users to Cloud Foundry Platform itself.
4. Service Brokers:
Cloud Foundry uses 'Service Brokers' to make services available in the marketplace. Each service broker would take care of provisioning required resources for each service and initialize necessary credentials. Attaching a service to an application is achieved through a process known as 'Binding'. For example, a service broker for MySql database, would create a new database and create a new user for that database. Thus when a MySql service is binded to an application, the service broker would provision the necessary resources for use.
5. Cloud Controller:
'Cloud Controller' component is the most crucial component of Cloud Foundry and it will take care of managing the other components of Cloud Foundry and also performs regular health checks of ther other components. Most of the communication to the various interfaces exposed by Cloud Foundry platform happens via the 'Cloud Controller'.
The BOSH layer takes care of release management of the Cloud Platform components and it is used in deploying the platform itself. Also, BOSH is used in interacting with the underlying IAAS layer to provision infrastructure.