Faster Development with Cloud Foundry: Going the PaaS Way
Today, the complexity of information systems is growing day by day. They are becoming more and more complex not only inside, as the program code, but their architecture is getting significantly more complicated. It takes more time to spend on their creation and support.
First of all, this refers to the significant amount of work that needs to be done with the infrastructure part of a web application, if at some point the application stops coping with the load, it is necessary to deploy additional servers, install correct environment on them and, accordingly, support it. Most often, this is done using tools such as Chef / Puppet, by automating the creation of servers and the necessary environment on an IaaS—but all this requires additional efforts to maintain the application infrastructure and sufficiently high qualification of a developer or DevOps engineer.
In this brief post, we’ll look at the key limitations and requirements that must be observed when developing an app using PaaS and Cloud Foundry in particular. Cloud Foundry is an open-source Platform-as-a-Service (PaaS) that can run in a private environment.
Struggling with app complexity
Every day, applications and their architecture are becoming more complex and multi-component. That is why in the development of an architecture of a modern app it is required to invest significant time and financial efforts. This entails a decrease in the speed of development and its further rather non-trivial support. This is due to a significant amount of effort on the part of DevOps specialists when creating and maintaining scripts for installation.
It becomes increasingly difficult to test various aspects of the program’s behavior in production, because a developer does not have direct access (with the possibility of changes) to environments similar to production.
However, most of these problems can be easily solved with a Platform as a Service:
—Easy application deployment with a large number of copies (horizontal scaling)
—Significant simplification of the development of all stages of the app development (staging, testing, production) by creating a single environment
—Simple configuration of an app in all environments
—Minimal intervention of a system administrator or DevOps to the operation of a PaaS
Things to keep in mind
Constraints in the development of applications on PaaS are essentially the same as for any app that uses horizontal scaling in its work:
—It needs to be kept in mind that more than one instance of an application is involved into the development of the system.
—Each instance of the application must minimize the caching of operational information, because it is difficult to maintain the cache coherency for different instances of the same application.
—Each instance of the application must be independent of others, stopping it or crashing it should not affect the entire application, or even the integrity of the application’s data.
—As the number of application instances increases, new instances must work without additional settings and, of course, independently of earlier instances.
In order to provide the work of the two latest points from the list, it is necessary to ensure the first three. Only in this case, changing the number of instances of the application, for example, to increase performance, will not affect the functionality of the entire application as a whole.
So, a PaaS (and Cloud Foundry in particular) enables to:
—Essentially simplife and structure the approach to the development of fairly complex, complex application architectures
—Significantly reduce the time for the entire cycle of development, testing and output to applications in production
—Reduce the cost of creating and increase the reliability of the architecture of the application being created
A PaaS in general and Cloud Foundry in particular can also provide high availability of the application: if some parts of the application fail, the remaining ones take on additional load, and the failed ones are restarted.
This brief technical presentation will introduce you to:
1. The history of Cloud Foundry
2. Why Cloud Foundry matters?
3. How to work with Cloud Foundry: deployment, application scaling, and services
4. Developing with a PaaS: workflow for developers, DevOps, and system administrators
5. The architecture of Cloud Foundry