Logo
blank Skip to main content

Cloud Foundry: A Platform for Deploying, Running, and Scaling Cloud-Native Applications

What if we told you that thereโ€™s a universal platform for cloud app development that has no limitations on programming languages and ensures a high level of portability? And what if we told you that itโ€™s also fully cloud agnostic and is available through a variety of providers? Most of you probably already realize that weโ€™re talking about Cloud Foundry.

At Apriorit, one of our specialties is virtualization and cloud computing. Over the course of numerous projects, weโ€™ve faced the problem of application portability and development complexity. Thatโ€™s why weโ€™ve turned our attention to Cloud Foundry.

But is Cloud Foundry really as good as it sounds? In this article, we share our general thoughts on this open-source cloud application platform and tell you about its pros and cons as well as what you can expect when using it.

What is Cloud Foundry and how does it work?

What is Cloud Foundry? Itโ€™s an open-source project developed by VMware and governed by the Cloud Foundry Foundation. Basically, Cloud Foundry is a Platform as a Service (PaaS) solution. Developers can use this cloud-native platform for deploying their apps to different locations:

  • Personal computing infrastructure
  • IaaS solutions like AWS , OpenStack, and vSphere
  • Commercial PaaS solutions from certified providers

Cloud Foundry claims to be able to run any cloud-native application no matter what programming language itโ€™s written in. This means that developers arenโ€™t locked into a single framework or particular set of application services.

Cloud Foundry architecture

Cloud Foundry has an open architecture with a buildpack mechanism that allows you to add frameworks as well as cloud provider and application service interfaces. It also offers integration with the development tools youโ€™re already using and requires zero modifications to your current code.

The main components of the platform are:

  • A self-service application execution engine
  • An automation engine for deploying applications and managing their life cycles
  • A scriptable command-line interface (CLI)

For building and deploying applications, Cloud Foundry provides a code-centric platform called the Cloud Foundry Application Runtime. This platform allows you to execute code, manage your applicationโ€™s lifestyle, and monitor your application continuously. You can see the architecture of this platform in the image below.

Cloud Foundry Application Runtime Architecture

 

Figure 1. Cloud Foundry Application Runtime Architecture

The possibility to configure, deploy, manage, and upgrade Cloud Foundry on any IaaS provider is achieved by leveraging BOSH โ€” an open-source tool that can be used for engineering releases, deploying applications, and managing their life cycles. It also ensures continuous monitoring of distributed systems. But even though most Cloud Foundry deployments use BOSH, working with this tool can be difficult, especially if you donโ€™t have much experience. However, once mastered, BOSH significantly boosts the productivity of development and operations teams.

All Tasks and Long-Running Processes are managed through Diego, a self-healing management system for the Cloud Foundry Application Runtime. Diego keeps the correct number of instances running in Diego Cells in order to prevent possible network failures and crashes.

Cloud Foundry-certified providers

While thereโ€™s an open-source version of Cloud Foundry, deploying it yourself can be quite challenging. As an alternative, there are several certified providers who have turned Cloud Foundry into somewhat of an operating system for building cloud-native applications. These providers include:

  • Atos Cloud Foundry
  • Cloud.gov
  • Huawei FusionStage
  • IBM Cloud Foundry
  • Pivotal Cloud Foundry
  • SAP Cloud Platform

You can see the full list of certified Cloud Foundry providers on the projectโ€™s official website. Now letโ€™s talk about when itโ€™s best to use this platform and how to deploy applications to it.

Related services

Web Application Development Services & Solutions

How can you use Cloud Foundry?

What is Cloud Foundry used for? The platform is designed to solve the following tasks:

  • Improving application development and deployment processes<
  • Creating DevOps-friendly workloads
  • Reducing the risk of human errors

Who can use Cloud Foundry?

There are two groups of users who can find Cloud Foundry helpful: developers and operators.

Cloud Foundry for developers. The platform automates configuration, operation, and management tasks, allowing developers to spend more time writing code. According to the Cloud Foundry User Report 2018, nearly 25 percent of the platformโ€™s users report saving up to $500,000 per application development cycle.

Cloud Foundry for operators. The platform can help in reducing the operational costs and lifting the overhead burden on operations teams. The platform handles a significant amount of an applicationโ€™s resource management. According to Warner Music, one of the first adopters of the platform, switching to Cloud Foundry helped them significantly boost operator productivity and save more than $1 million per app.

Read also:
How to Build a Data Backup Service for SaaS

How to deploy applications to Cloud Foundry

Deploying an application to Cloud Foundry consists of seven steps:

  1. Prepare the application for deployment to the cloud
  2. Determine your user credentials and the target URL
  3. Configure application domains
  4. Determine deployment options
  5. Push the application to the cloud
  6. Configure service connections
  7. Troubleshoot possible deployment issues

Basically, developers need only to push their web application to the platform. Thereโ€™s no need to set up any additional infrastructure since the Cloud Foundry platform provides everything from the hardware to the application servers. When using a commercial version of the platform, you can also get access to additional services like databases and messaging systems.

Now, letโ€™s take a closer look at one popular commercial version of this platform โ€” Pivotal Cloud Foundry .

Using Pivotal Cloud Foundry for building applications

Pivotal Cloud Foundry (PCF) allows you not only to deploy existing applications to the platform but also to plan and build new applications from scratch. You can develop for Cloud Foundry with the help of Spring Boot, another Pivotal project. This tool can be used for building REST APIs, WebSockets, Tasks, and more.

PCF is best used for cloud-native applications, new applications, and applications with short lifecycles and frequent releases. Just like with an open-source version of the platform, all applications deployed to PCF are maintained by BOSH.

Finally, letโ€™s look at the challenges and benefits of using Cloud Foundry .

Related services

Cloud Computing & Virtualization Development

Pros and cons of Cloud Foundry

Cloud Foundry is marketed as the ultimate solution for deploying cloud-native applications without being limited to a certain programming language or cloud provider. However, universality and flexibility arenโ€™t the only advantages of this platform.

Main benefits of Cloud Foundry

  • Open-source format โ€“ Even though there are lots of commercial versions of Cloud Foundry, itโ€™s still an open-source project with a large international community and quite an impressive knowledge base. You can easily find Cloud Foundry tutorials and technical guides on the projectโ€™s website.
  • Support for different programming languages โ€“ This is perhaps the biggest advantage of this platform. Currently, it supports the most popular programming languages including Java, PHP, Ruby, Node.js, .Net, Go (Googleโ€™s Golang), and more.
  • Multi-Vendor support โ€“ The platform creates a healthy, multi-vendor environment where you can choose from several vendors.
  • Application portability โ€“ Applications deployed to the platform can be easily migrated from a private data center to the public cloud as well as from one IaaS provider to another.
  • Role-based access for deployed applications โ€“ The platform improves the security of applications by ensuring that only authorized groups of users have access to application data.
  • Ease of application deployment โ€“ Code can be deployed by executing just a single line from the CLI. At the same time, the platformโ€™s CLI includes a large variety of commands allowing for various operations on application instances.
  • Access to applications with SSH โ€“ You can enable or disable SSH access to your applications. When enabled, SSH access allows you to run diagnostics and view application code in real time. You can access your applicationโ€™s code by using either the platformโ€™s standard client, CF SSH, or other SSH tools such as SCP or SFTP clients.
  • Horizontal and vertical scaling โ€“ You can scale the capacity of the platform both horizontally and vertically by adding more Virtual Machines running instances and by adding disk space and memory, respectively.
  • Software vulnerability management โ€“ System updates and BOSH stemcells are released on a regular basis to ensure a high level of software protection and to patch the latest security issues.

Related services

Custom .NET Applicaion Development

Main drawbacks of Cloud Foundry

Aside from the common issues listed by the Cloud Foundry Foundation, there are several concerns about the platform, including:

  • No support for stateful containers โ€“ Unfortunately, the platform still doesnโ€™t support stateful containers.
  • Logging issues โ€“ While the platform supports showing logs, it doesnโ€™t seem to persist these logs anywhere.
  • Not enough focus on operational processes โ€“ Even though Cloud Foundry takes a lot of load off operations teams, the main focus of the project is still on developers.
  • Complexity of configuration and monitoring processes โ€“ Working with BOSH may be quite challenging, especially for less experienced workers.
  • Need to follow Twelve-Factor App standards โ€“ Despite claiming to be a universal solution and supporting numerous frameworks and languages, Cloud Foundry works best for applications that are built in accordance with the Twelve-Factor App methodology.

Conclusion

Cloud Foundry is a useful PaaS project that can help developers and operators boost their productivity and make cloud-native applications portable. Cloud Foundry includes a set of open-source tools that developers can use for running Cloud Foundry applications at scale. There are also several commercial platforms based on Cloud Foundry provided by large vendors like IBM and Pivotal.

While the platform has several weak spots, these issues arenโ€™t critical and we hope theyโ€™ll be solved in future.

At Apriorit, we have lots of experience in web application development. Feel free to contact us for more information on our services and weโ€™ll be glad to help you!

Have a question?

Ask our expert!

Tell us about your project

Send us a request for proposal! Weโ€™ll get back to you with details and estimations.

Book an Exploratory Call

Do not have any specific task for us in mind but our skills seem interesting?

Get a quick Apriorit intro to better understand our team capabilities.

Book time slot

Contact us