Cloud Foundry is an enterprise standard open source platform for developing and deploying cloud applications. This article gives readers an overview of it, discusses how it differs from Kubernetes and why it should be used.
Cloud Foundry is an open source, multi-cloud, multi-language application platform that supports non-stop delivery. It can be used on an individual deployment infrastructure or on any IaaS like Amazon Web Services, Azure, VMware, or vSphere, and can be deployed using the BOSH deployment system. Cloud Foundry permits an environment to run, scale and maintain applications easily. It supports most of the languages and environments like Java, NodeJS, Ruby, Python, etc. Pivotal has a business instance of Cloud Foundry called Pivotal Web Services on the AWS cloud.
Some of its features are:
- User management
- Middleware and OS management
- Logging and metrics
- Health management
- Scaling for high availability of platforms and applications
The concepts of Cloud Foundry
- Users are the users of Cloud Foundry who can manage org/space/app.
- Roles are the privileges assigned to different users like Org manager or Space manager.
- Orgs are at the top level of the platform, and can be used by different users to group apps together. Each Org has one or multiple spaces.
- Space is where apps can be deployed and where configurations can be shared. Multiple apps can be deployed in a single space. Single or multiple spaces constitute an Org.
- Application is each and every individual application that runs inside Cloud Foundry.
Differences between Cloud Foundry and Kubernetes
Kubernetes is a management service for containers (Dockers) like the ECS in AWS. It doesn’t perform application management. It takes care of the managing, allocating and diving tasks between containers.
On the other hand, Cloud Foundry is an application management service. It makes the whole enterprise or application platform-independent. It manages the application entirely by putting a wrapper on it to get it executed on any cloud platform independently, which gives a feeling of platform independence.
When, where and why one should choose Cloud Foundry
If you have a cloud related application and you don’t want to worry about operations, Cloud Foundry is the right choice, because of the following reasons:
- Cloud Foundry favours using build packs instead of Docker containers. This means the rootFS will be updated by the platform. The developers don’t have to worry about updating the Docker image with regard to security patches.
- Some people say that Kubernetes is better in running legacy systems and that one should use it for applications that don’t run on Cloud Foundry. I can’t provide an example application, or a description of how such an application looks like. It might be that everything that requires a file system runs better on Kubernetes. There is also a possibility of mounting persistent volumes on applications on Cloud Foundry, but this is not supported by the majority of Cloud Foundry setups.
- Cloud Foundry is more opinionated than Kubernetes. So the latter may provide more flexibility but Cloud Foundry is easier to use. For instance, Kubernetes Pots allows optimisation of a microservices setup to reduce network latency but it is harder to configure.