bt_bb_section_bottom_section_coverage_image

Migrating Loan Application Management to Umbraco with DB Extension Kit

Migrating Loan Application Management to Umbraco with DB Extension Kit

A New Chapter: Umbraco on Kubernetes

In 2023, Raiffeisen Bank Serbia launched an ambitious initiative to modernize application orchestration. Tasked with finding optimal solutions, our team at Hexxu Services embarked on a mission to transform RSF, a web-based loan management application developed in Microsoft .NET Framework, to meet the demands of the new Kubernetes-based hosting stack.

After careful analysis, we found that the best approach, offering compelling benefits and fitting fully within the scope and requirements of the Raiffeisen Bank modernization project, was to re-implement RSF on Umbraco.

Umbraco’s scalability ensures the application can efficiently handle increased user traffic and data volumes, vital for a bank’s loan application system. Moreover, Umbraco leverages the modern .NET platform, which can run on both Linux and Windows environments, enhancing flexibility and reducing infrastructure costs. The migration project also led the Hexxu Services product development team to transform one of our proprietary CMS modules into a Umbraco package – Database Extension Kit, featuring user-friendly database management and present it to the Umbraco community, using “freemium” subscription model. 

By harnessing Kubernetes’ orchestration capabilities, the application gains automated scalability, resilience, and portability across diverse hosting environments. The migration to the Umbraco/Kubernetes platform would not future-proof the application but also unlock opportunities for innovation and seamless integration with modern banking technologies, ensuring Raiffeisen Bank Serbia stays ahead in the digital banking landscape.

 

Understanding the Legacy System

The existing application was developed on ASP.NET stack in client-server architecture, using SQL Server relational database. The application was implemented on top of our proprietary CMS system and its two dynamic content management modules: Object Manager and Forms Generator.

Object Manager allows users to dynamically create and maintain data entities implemented as database tables and relations.

Forms Generator allows users to dynamically create and maintain forms in the application and persist acquired data in the underlying data model, which in this case is based on the Object Manager module.

The two modules allowed our loan management application to be easily configured by bank users. For example, when a new field is added to the loan application form or a validation function is changed, the administrative user is able to adapt the application to the new functional requirement by simply modifying the configuration using CMS, without developer intervention.

Flexible and user-friendly as it may have been, the platform introduced certain challenges and limitations that were meant to be overcome during the orchestration project.

Here is what the obstacles were and how we planned for .NET Core on Kubernetes to tackle them:

  1. Cross-Platform Compatibility: Traditionally, ASP.NET applications relied on the IIS web server, necessitating Windows Server in production environments. However, .NET Core’s versatility allows it to run seamlessly across various operating systems. This cross-platform compatibility ensures that the new application can be deployed on diverse environments, eliminating the need for a Windows-centric setup.
  2. Scalability and Orchestration: In the past, scalability was indivisibly linked to server resources, making it challenging to handle surges in user traffic or data volume without expanding the server infrastructure. With .NET Core on Kubernetes, scalability is decoupled from hardware constraints. The orchestration platform streamlines the process, enabling dynamic scaling and resource allocation based on demand. This ensures flexibility and ease of management compared to traditional server-based scaling methods.
  3. High Availability and Fault Tolerance: Achieving high availability in legacy ASP.NET systems often required implementing complex Windows server clusters, consuming significant resources and effort. In contrast, the Kubernetes-based platform provides built-in features for ensuring high availability and fault tolerance. These include automated health checks and dynamic failover mechanisms, which enhance system reliability without the need for cumbersome clustering solutions.

 

Embracing Umbraco CMS

Umbraco CMS is a versatile, open-source content management system tailored for developers seeking flexibility and scalability. Built on Microsoft .NET, it empowers developers with a robust platform to create customized web solutions. Its intuitive interface and extensive API make content management seamless, while its flexible architecture accommodates diverse project requirements. With Umbraco, developers can leverage its extensive documentation, vibrant community support, and abundance of pre-built packages to speed up development. Its emphasis on clean code and extensibility ensures developers have full control over the design and functionality of their projects.

 

Harnessing the Power of Kubernetes

Why organizations such as banks opt for containerization and orchestration in the 2020s?

Containerization has dramatically changed the way how applications are developed, hosted and maintained. An application container encapsulates everything an application needs to run, thus ensuring consistency across different server environments. Benefits of using containerization, such as isolation, portability and scalability make application management lifecycle more efficient and stable in terms of operation and resource usage. Containers are well-suited for microservices architecture and DevOps integration. 

Orchestration streamlines complex processes by coordinating and automating tasks across multiple systems or components. It enhances efficiency, scalability, and reliability by centralizing management and eliminating manual intervention. With orchestration, organizations can automate deployment, configuration, and scaling of applications, reducing errors and optimizing resource utilization. It also facilitates seamless integration between disparate systems, enabling agility and faster response to changing demands. Ultimately, orchestration empowers businesses to achieve higher productivity, faster time-to-market, and improved overall performance in their operations.

Kubernetes is a container orchestration platform used to automate deployment, management and scaling of containerized applications. It provides a centralized control plane for managing clusters of containers across multiple hosts, simplifying the process of deploying and scaling. By abstracting the underlying infrastructure, Kubernetes allows developers to focus on the application itself, rather than the operational overhead. 

The orchestration platform is using the GitOps paradigm to manage infrastructure and workload. 

 

The Migration Process

Seamlessly migrating the application meant reimplementing its functionalities on the new technology stack. The main challenge lay in preserving the integrity of the functionalities while preempting the emergence of bugs. This required thorough testing across all tiers, coupled with the enforcement of strict quality assurance protocols.

Furthermore, a strategic approach was required to retain the core modules of the existing application, the Object Manager and Forms Generator, within the Umbraco backend environment, where they would continue to be utilized. Recognizing that storing substantial data volumes within Umbraco content represents an anti-pattern, we opted to implement the data model in external relational database tables. To ensure user-friendly backend data administration akin to our CMS, we decided to reinvent Object Manager as an Umbraco package – Database Extension Kit. While serving the immediate needs of our project, this initiative holds potential for wider community benefit, given the apparent absence of comparable packages and the likelihood that other Umbraco developers encounter similar requirements.

Joining forces with stakeholders from Raiffeisen Bank Serbia, we opted for agile approach to the project, based on biweekly sprints and online meetings. The user stories were basically already there, defined for the original application, but their backend administration part had to be adapted to Umbraco CMS.

 

The New Application

Architecture

Although the web layer was built on Umbraco, the architectural pattern we adopted for the new RSF application was Microservices Architecture. Microservices are a set of small, modular and independently deployable services, representing separate business processes. The pattern works well with Kubernetes orchestration, because microservice images based on .NET are lightweight and fast to start.

A conceptual diagram describing the architecture is given below.

The reason why we opted to keep using a content management system such as Umbraco in the new application was to provide administrative users with easy and user-friendly way to perform the following operations, while avoiding the need to develop an admin interface from scratch: manage loan data structure, review loan applications, configure access rights of application users. Those functionalities were also present in the previous version and provided by the proprietary CMS. One of the reasons to use Umbraco for administrative users was to make UI and UX equal or better than what they were used to with the existing application. Needless to say, Umbraco has met the challenge and even surpassed the expectations.

Using Database Extension Kit

The Database Extension Kit integrates seamlessly with Umbraco backend, providing application administrators with a familiar look and feel and, at the same time, making relational data management a simple and user-friendly experience.

The Database Extension Kit Admin tab allows the administrator to manage data entities – tables and relations, by creating new or editing existing entities, modifying columns and defining key constraints.

The main features of the package are:

  • Custom data models
  • Automatically generated administrative UI
  • Support for parent/child relationships
  • Data import/export
  • User rights defined at data entity level
  • Recycle bin

In the RSF application, a total of 20 data entities is managed by the administrators, with as many as several hundred thousand data rows per entity, in entities such as loan application requests.

 

Editing individual data entities is made easy and user friendly, never leaving the Umbraco look and feel. This is so because standard Umbraco components are used for most field types. Where new functionality was required, such as establishing a foreign key relationship between entities, new components were developed, fully in line with Umbraco UI.

For bank users, accustomed to using our proprietary CMS, the transition to using Umbraco CMS was effortless. The logical data structure and functionality was preserved, while modern Umbraco UI made data management even easier than before.

 

For further info and documentation about Database Extension Kit, please visit the dedicated website and GitHub page, and you can also find out more about Hexxu Services at www.hexxu.dev.

 

Lessons Learned

Our journey from legacy ASP.NET to Umbraco on Kubernetes at Raiffeisen Bank Serbia offered invaluable insights and lessons that can guide future modernization projects. Here are the key conclusions:

  1. Careful analysis and planning yield success: Before embarking on any modernization initiative, it’s crucial to conduct a thorough analysis of existing systems, infrastructure, and business requirements. By carefully evaluating available options and aligning them with organizational goals, teams can identify the most suitable path forward.
  2. Flexibility through cross-platform compatibility: Cross-platform compatibility of .NET reduces dependency on specific operating systems and enables systems to adapt swiftly to technology changes.
  3. Scalability is best achieved with orchestration: Traditional scaling methods tied to hardware resources can hinder agility and efficiency. Leveraging container orchestration platforms empowers organizations to dynamically scale applications based on demand, enhancing flexibility and resource utilization.
  4. High availability doesn’t have to be complex: Achieving high availability and fault tolerance no longer requires complex clustering solutions. Modern orchestration platforms offer built-in features such as automated health checks and failover mechanisms, simplifying the task of ensuring system reliability.
  5. Using CMS in web-based applications always makes sense: Using a flexible developer-oriented CMS such as Umbraco is never a waste of time and resources. The trade-off between the learning curve and the time spent for developing a custom interface for administrative operations on one side, and the benefits in UX your users get from a user friendly CMS such as Umbraco and the time saved in not producing boilerplate code for CRUD operations is such that all the benefits are clearly on the CMS side.
  6. Embrace Agile Methodologies and Collaboration: This is no news, and yet it is always worth repeating: adopting agile methodologies fosters collaboration, accelerates development cycles, and enables teams to adapt to changing requirements efficiently. Regular communication and collaboration with stakeholders ensure alignment and drive project success.
  7. Microservices architecture enhances scalability: Adopting a microservices architecture facilitates modular development and scalability, particularly in conjunction with container orchestration platforms. Breaking down applications into smaller, independently deployable services improves agility and resource utilization.
  8. Prioritize user experience: When modernizing applications, prioritize user experience to ensure seamless transitions for end-users. Maintaining familiar workflows and interfaces while introducing enhancements can drive user adoption and satisfaction.

Leave a Reply

Your email address will not be published. Required fields are marked *