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.
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
- 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.
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.
How to deploy applications to Cloud Foundry
Deploying an application to Cloud Foundry consists of seven steps:
- Prepare the application for deployment to the cloud
- Determine your user credentials and the target URL
- Configure application domains
- Determine deployment options
- Push the application to the cloud
- Configure service connections
- 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 .
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.
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.
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!