“I found my challenge at one of the major banks”Published on: Author: Vincent Mos Category: Java & Web
As a Java Developer, I like to get my teeth stuck into complex IT issues. You could say I’m always looking for challenges in my work. And for the last two years, I’ve found those challenges at one of the Netherlands’ largest financial institutions. I am part of a team there that’s responsible for client reporting towards Wholesale customers. We send them reports about their derivatives, transactions and market values, and such. To do so, the bank uses a special, modern tech stack. And that makes my job really interesting.
For years now, the bank has been transitioning from hosting software on-premise towards hosting in the cloud. Before I started on this assignment, I had next to no experience with working in the cloud. So it was a great opportunity. And I get to work with a tech stack that includes Spring Boot, Java 11, Angular, Azure DevOps, Azure Cloud, VMware Tanzu (previously Pivotal), Oracle API Gateway and Splunk Logging. Below, I talk about a few issues that I believe are characteristic of modern software development.
Application lifecycle management with Azure DevOps
Before the team started working in the cloud, the application lifecycle management (ALM) had to be migrated. We used to use Jira for agile scrum management. The bank chose Azure DevOps. This environment lets you integrate DevOps easily in the organisation, with services like:
- Azure Boards: here you can plan, manage and discuss your team’s activities. There’s also tooling for things like scrum backlog management, sprint planning, refinements and retrospectives.
- Azure Pipelines: this tooling consists of a CI/CD-pipeline that works for almost every language, platform and cloud. Using a Git-provider, you can continuously develop, test and implement. It’s also great for deployments to your on-premise servers.
- Azure Repos: Azure Repos gives you an unlimited number of Git-storage locations in the cloud. It promotes efficient cooperation through pull-requests and advanced file management.
- Azure Artifacts: Azure Artifacts makes it easy to share code with various teams and companies. You can share packages and add them to your pipelines.
- Azure Test Plans: manual and exploratory test programs let you quickly test and release software.
Azure DevOps also has an Extensions Marketplace with more than a thousand extensions that you can add to environments. Think of Jenkins, Docker and Kubernetes, for example.
One of the things I find useful is the integration between the various components. Take Azure Boards and Azure Repos. From a PBI (Product Backlog Item), you can directly make a Git-branch for a new feature. And in Azure Repos you make pull requests for new features. Then you can link Azure Pipelines to check the quality of your code or to run automatic tests.
This sort of automation may not be new, but I have not seen these services integrated this successfully in a single product before. Azure DevOps has a central position and a connecting role in all DevOps activities.
Azure DevOps also offers support for building extensions and adding features that support company-specific processes. One of the bank’s platform teams built an extension to test the compliance regels, for example. These compliance rules are imposed by laws and regulations. A few examples of the rules include:
- nobody in the team can remove the project.
- nobody can remove releases.
- nobody can remove repositories.
Where possible, the tool offers options for adapting the project’s configuration so that it complies with the rules. All it takes is the press of a button. The tooling also integrates the Azure Pipelines with configuration items in the Configuration Management Database (CMDB). This lets you create reports and proof for the organisation automatically.
Tip! You’ll find the code for this extension as open source on GitHub.
Working with VMWare Tanzu
We deploy our applications on the VMWare Tanzu platform. The product we use most is VMWare Tanzu Application Services. This is a certified implementation of the Cloud Foundry standard. Cloud Foundry is a platform for the efficient and user-friendly deployment and management of applications on Kubernetes. It can actually run all sorts of applications in any language you want.
If you ask me, the strength of this technology is that it’s genuinely user-friendly. Applications are started in containers using Kubernetes under the hub. In doing so, things like configuration and scalability are handled by the platform. You don’t have to do much as a developer.
Still enough of a challenge
Despite the great tooling, there’s still enough of a challenge in managing the entire landscape. Over the coming time we’re still involved in transferring a number of things from the old to the new situation. Connections remain essential as the bank has to stay up and running continuously.
Laws also change regularly and the guidelines and demands related to security and compliance are always getting stricter. And so, the work never stops. But thanks to this modern tech stack we have all the tools we need to address the challenges.