Plenty of companies from the banking industry are moving toward business process automation. The main reason for that is because it is pretty straightforward to understand a business process in the financially-focused sectors. A good example of that could be onboarding a new customer or performing an assessment of a client. Where there is a process, there is an opportunity for a solution like Camunda’s workflow and decision automation platform to be implemented.
Migrating to the cloud is another trending solution these days. The most important factor that causes many businesses to start cloud migration is elasticity, which allows to scale their infrastructure as needed. As a result, that increases business agility and accelerates the growth of an enterprise.
Combining process automation with migrating to the cloud allows you to unlock a large scale of possibilities. Here at Devapo, an official Camunda partner, we developed a solution for one of our banking sector clients, enabling development teams to quickly move to Azure Cloud with Camunda Platform 7. In this blog post, I will present this concept on a technical level as well as its business implications. But as they say, with great power comes great responsibility.
Introducing new tools into technical architecture can get really tricky sometimes, especially if your project is already live in the production environment. Moving your product to the cloud might be even more challenging, as this shift usually requires major changes in the existing implementation. But be encouraged that the benefits outweigh the challenges.
The platform makes an impact
The business case for this platform was rather simple. For the large organizations in the banking sector, with several dozen development teams, most of them decided to go for business process automation with Camunda Platform 7. Most of them faced similar challenges with setting up proper cloud infrastructure for Camunda Platform 7 and Spring Boot applications. In order to align with the developer standards in the organization, many custom Camunda Platform 7 features had to be introduced. This platform allows us to be on top of most of these challenges. It was a huge game-changer to enable projects with custom Camunda Platform 7 features on Azure Cloud within the blink of an eye! The whole project turned out to be a successful investment that reduced development costs significantly.
Now, not only was the initial challenge solved, but the platform’s ongoing existence also contributes to other projects and is used to place orders for new custom Camunda features. This allows them to be more concentrated on their external vendors’ particular business cases, while they no longer have to struggle with providing custom Camunda Platform 7 features on Azure.
One could say that this platform is extremely similar to the Camunda initializer, however, it is enhanced with custom Camunda-based features. Instead of only generating the zip archive, it also brings up freshly-generated projects, and it’s based on Azure infrastructure. How cool is that?!
How was the platform implemented?
The goal of the platform was to allow development teams to quickly move their Camunda Platform 7 products to Azure cloud. The platform mainly focuses on automating the processes of creating an Azure repository and pipelines, including the build, infrastructure, and deployment pipelines through an Azure DevOps REST API.
Its user interface allows the user to simply select the configuration and choose the particular features that interest them. This concept bridges the gap between integrating and bringing custom Camunda Platform 7 features to production.
Once the user accesses the front-end of the platform, authentication and authorization against the Azure AD service begins. After a successful authorization, the user is prompted with a form that allows them to select the project configuration. Among the different options, the user can choose from particular dependencies and their versions, custom features, and the environment’s setup.
The platform only allows for generating projects with the embedded edition of Camunda, however, the development effort is reduced significantly. The platform provides the following custom features:
- Camunda Custom Identity service
- Camunda with LDAP
- Camunda with Azure AD authentication and authorization
- Camunda with Azure SQL Database and automated database migrations
- Camunda event-driven by Azure Functions
- Camunda with secrets stored in the Azure Key Vault
- Camunda with process definitions stored in the Azure Blob
- Camunda delegates with Azure Service Bus connectivity and many more
The back-end does the trick
Once the user chooses the particular configuration of the platform, the front-end layer communicates with the back-end through an http POST that contains all of the configuration specifics that the user chose. The back-end layer is very simple – it is a Spring Boot application that implements the official Spring initializer project.
From a technical point of view, it contains three packages:
- Generator – Contains JavaBeans that implement so-called contributor classes provided by the Spring initializer and describes the way the project should be generated regarding the configuration in the HTTP Post request. It is also responsible for utilizing the logic based on the custom Camunda features that should be included in the project generation.
- Metadata – Holds the template of the project files which will be used in the project generation (like *Java files, *bpmn files, or any other static resources necessary for a Spring Boot and Camunda Platform 7 application). This package is also responsible for the generation of Spring Boot configuration, and it is used by the contributor classes called in the generator package.
- Web – Holds a bunch of controllers and is responsible for receiving HTTP requests. It also delegates the project generation to the particular contributor class of the generator package after parsing the HTTP request’s body content.
Before the zip file with the freshly-generated project is returned by the back-end, one more action must take place. It communicates with the Azure DevOps API through the REST template, creates the Azure repository with the chosen Spring Boot and Camunda Platform 7 application, and creates build and infrastructure pipelines that are ready to be used.
This part is extremely important. We need to recognize that at this point the client is not only given a Spring Boot and Camunda Platform 7 application with custom features, but also pipelines that are ready to be run. The effort that’s usually needed to take place when creating cloud resources and the whole deployment infrastructure is reduced to a minimum. This approach is called infrastructure as a code (IAAC) and is a huge enablement and efficiency booster for the development teams.
Once this part is finished, the user ends up not only with the necessary cloud infrastructure but also a Spring Boot and Camunda Platform 7 application that’s already in the Azure repository. In addition, they also get to download a zip archive of the project.
Now, let’s try to imagine an example scenario. As a team of developers, you are trying to launch another microservice in your cloud infrastructure that will automate the business processing management, and it will be orchestrated by the Camunda Platform embedded in Spring Boot. For the sake of this example, let’s imagine that the process will be taking care of a new customer’s onboarding. At this point, the usual challenge would be to adjust the existing cloud infrastructure with a proper configuration that will enable a new instance of another microservice in our already existing system.
The next step, if necessary, would be to implement custom features. Let’s say we want to utilize our Camunda Platform with Azure SQL database. In this new scenario, the overall effort is significantly reduced as simply selecting this feature in the user interface form of the enablement platform leads to the generated project being automatically enhanced with all the necessary implementation for Azure SQL database support. Moreover, the generated pipelines will be enhanced by creating cloud infrastructure like the database itself, following the IaaC pattern. Now, the solution is ready to be deployed (also through generated pipelines) and after the proper adjustments, it’ll be ready for production use. This is just a simple example of how the work of development teams is accelerated by this platform when it comes to bringing Camunda to the Azure cloud.
Automation + Business = Success
It is fair to say that implementing the generic platform for Camunda solutions in Azure was a huge success in the organization. To summarize:
- The platform is easily accessible.
- It is a guide for developers who are trying to introduce Camunda Platform 7 projects in the Cloud.
- The platform saves a lot of engineering effort and a lot of money (an estimated savings of a few million euros).
- The platform creates developer-friendly standards in the organization.
- The platform reduces the need for customizing Camunda Platform 7 through boilerplate code by using production-ready solutions or solution patterns.
- This approach allows for users to quickly introduce highly-scalable, Camunda-based applications without a lot of specialized knowledge.
In the end, automation usually translates into business success. We not only automate the business process that our clients have in place but also the technical process of creating custom solutions. Instead of implementing them, we generate them through the platform.