One of my favorite new features of Apprenda 5.0 is Application Bootstrap Policies.
The ability to add functionality to guest applications, a process we call bootstrapping, has been a defining characteristic of Apprenda since its inception. With our latest release, Apprenda 5.0, we’ve opened that power up to our customers as well. Through this feature, customers can inject functionality, monitor deployments, and even enforce policies for the apps running on the platform. This is a huge boon to developers and operators alike and allows our customers to customize their Apprenda environment in ways that could never happen in a public environment.
How does it work?
While bootstrapping holds great power, the concepts behind bootstrap policies are very simple. The primary factor in bootstrapping is the implementation of a simple interface that we refer to as a “bootstrapper.” When a component is deployed, the bootstrapper is invoked by Apprenda and grants it access to a directory containing the component’s files and relevant metadata about both the component and the application it belongs to. The bootstrapper then uses this information to perform its work and returns a success or failure response. When bootstrapping is successful, the platform will use the component’s directory (including any modifications the bootstrapper may have made) in the deployment of that component. If the bootstrapper fails, it is able to return errors that will be displayed for the developers so they can resolve the issues.
The other factor in bootstrapping is the bootstrap policy itself. Using the same custom properties as our Application Deployment Policies feature, operators define the conditions under which a particular bootstrapper will be used. These policies are evaluated whenever a new instance of a component is deployed. When a policy matches a component, the bootstrapper attached to that policy is invoked as I described above.
What is it good for?
One of the most significant benefits of this feature is that we are able to use it within Apprenda itself to implement other features. Take an additional feature we added in 5.0 as an example: the ability to define token replacements in an application’s manifest. In the past, we would have needed to add code to the deployment pipeline for each component that implemented this functionality; with bootstrap policies, we simply wrote a bootstrapper that performs this. As we are planning features for our next release, we continue to find places where we say “that can just be a bootstrapper.” In fact, this is now my preferred method of adding functionality to applications running on Apprenda. For me, this is real proof that bootstrapping places power–once exclusively in Apprenda’s hands–directly into our customers’ hands.
In addition to our own usage, we have customers using this feature to implement a number of custom capabilities. One customer is using it to configure applications for monitoring through their enterprise monitoring system. Another customer is using it to allow developers to define maven dependencies for their Java components that are resolved at deployment time. A third customer is using it to add modules to their web apps that will recreate headers originated by their legacy, single sign-on authentication, so that apps do not have to be changed to work with Apprenda’s authentication and users are not prompted multiple times for their credentials. All of this has happened in just the few weeks since Apprenda 5.0 was released. I have no doubt that over time we’ll see many other use-cases, some anticipated and some that we never expected.
As I said in my previous post, deployment is just the tip of the iceberg for PaaS. I’m really excited about this feature because it exposes the interior of the iceberg to our customers. By customizing your Apprenda environment, you let developers work on the real business value in their apps by making it easy for them to add all of the general functionality using bootstrapping. This improves developer productivity, application conformity, and compliance with internal (or external) rules and regulations.
In short, developers win because they get to focus on what they do best, operators win because they don’t have as many oddball applications to deal with, and management wins because they can be assured that their apps are (and will remain) in compliance. What’s not to like?
If you’d like to see these bootstrap policies in action, feel free to watch our on-demand Apprenda 5.0 Webinar!