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.
Contents
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
- 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.
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.
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!