An Initial Reflection
|
The adoption of technology as a competitive advantage in banking is not a one-time effort but an ongoing process dependent on the social interactions of various stakeholders (Bijker, 1993), demonstrating that successful business transformation goes beyond simply adopting new technologies or platforms, but requires employing acquired technologies to deliver value to customers (Furr and Shipilov, 2019; Kane et al., 2019; Tabrizi et al., 2019). Therefore, the problem for incumbent banks is not the acquisition of technology, but the effective use of it (Sajić et al., 2017). |
|---|
1.1 Problem Statement
The modern banking industry stands at a critical juncture, grappling with an accelerating pace of change driven by evolving customer expectations, disruptive FinTech innovations, and an increasingly stringent regulatory landscape. At the heart of this challenge often lies a complex tapestry of legacy core banking systems – monolithic architectures burdened by decades of technical debt, intricate interdependencies, and a profound resistance to change. These systems, while once foundational, now impede agility, inflate operational costs, and stifle the rapid innovation essential for competitive advantage. Consequently, the imperative to modernise, or to build anew, is no longer a strategic option but a fundamental requirement for survival and growth. Therefore, the appropriate question is no longer why modernisation is necessary, but rather how to achieve it.
1.2. Introduction to Domain Driven Design
Domain-Driven Design (DDD) is applicable to a broad spectrum of banking use cases. It supports legacy modernisation for banks adopting a phased approach, extending the lifespan of legacy systems while enabling core functionalities through standardised API endpoints. Additionally, DDD can facilitate the complete replacement of core banking solutions, helping institutions avoid vendor lock-in and implement a multi-core strategy that leverages different core platforms tailored to specific product and service specialisations. By focusing on the strategic identification of core domains and the tactical implementation of rich domain models, DDD promises not just technical elegance, but tangible business benefits. It facilitates faster time-to-market for new products and services, reduces the risk associated with large-scale transformations, enhances regulatory compliance through clearer domain boundaries, and ultimately empowers banks to become more adaptive, customer-centric, and resilient in a rapidly changing financial ecosystem. This paper focuses exclusively on the role of DDD in legacy modernisation, with the broader topic of complete core banking transformation to be addressed separately.
1.3. Setting the Foundation for Domain Driven Design
The foundation of DDD lies in defining the core boundary and developing a capability model that identifies the essential business functions the core must encompass. It is crucial to limit the definition of the core to only the absolute core capabilities required by the organisation. Establishing a clear and precise core boundary is not only fundamental for successful implementation but also critical for ensuring efficient future maintenance. Although the interpretation of 'core' capabilities can be subjective and institution-specific, the BIAN Service Landscape offers an excellent foundational reference, as its framework is designed to adapt to each bank's specific context.
A well-defined core boundary facilitates domain separation, allowing for the selective adoption of capabilities that are most relevant to the bank’s needs without mandating the utilisation of all available features. Once the core capabilities are clearly identified, the remaining non-core functionalities can either be migrated to a separate platform—though this often involves significant untangling of dependencies and complex restructuring—or logically separated within the existing legacy platforms. The latter approach is frequently adopted as it provides a more practical and less disruptive path to modernisation while maintaining operational continuity.
1.3.1. The Value it brings-in
Hollowing Out the Legacy Core: The ultimate strategic benefit of this approach is the ability to "hollow out" the legacy core and move towards a thin core banking solution. As business capabilities are identified, encapsulated in domain models, and exposed via the new API layer, the underlying legacy components that implement these capabilities can be systematically extracted and replaced with modern, purpose-built services.
Strategic API Layer for Decoupling and Core Abstraction: The identified business capabilities and their associated domains form the natural blueprint for a new, strategic layer of APIs. These APIs are not merely technical interfaces; they are business-centric APIs that encapsulate specific business functions and domain logic. This layer is strategically positioned on top of the existing legacy core banking system. Due to its very inherent characteristics, the domain service layer significantly reduces the tight coupling that often characterises monolithic systems, where changes in one part can have unpredictable ripple effects across the entire ecosystem.
Incremental Modernisation & Targeted Replacement: This API layer enables a phased, incremental approach to modernisation. New features and services can be built against these stable, business-aligned APIs, rather than directly interacting with the brittle legacy internals. This allows for the gradual replacement or enhancement of legacy components behind the API facade, without disrupting existing consumers. It's a strategy of 'strangling the monolith' – progressively migrating functionality out of the legacy system and into new, domain-aligned services. This process allows banks to strategically prioritise which parts of the legacy system to modernise first, based on business value, risk, and technical feasibility. Instead of a risky 'big bang' replacement, it becomes a series of smaller, more predictable transformations.
Reduced Complexity: Each extracted capability reduces the complexity and footprint of the legacy system. Over time, the legacy core shrinks, becoming a much smaller, more manageable entity that primarily handles only the most fundamental, often immutable, ledger-based functions.
Agility and Innovation: With a thinner, more focused core and a rich ecosystem of domain-aligned services, the bank gains unprecedented agility. New products, services, and regulatory requirements can be addressed by developing or modifying specific domain services, rather than attempting to untangle the entire legacy monolith.
Domain-Driven Design (DDD) is not merely a technical implementation but a strategic, iterative journey that necessitates meticulous and focused planning. It represents a fundamental shift in how an organisation perceives and models its business capabilities, moving beyond superficial technical concerns to deeply understand the core domain.
This comprehensive journey cannot be executed as a single, monolithic task. Instead, it is best approached by breaking it down into a series of interdependent activities. Each step builds upon the insights and outcomes of the previous one, ensuring a cohesive and robust design. This structured approach, underpinned by careful consideration and strategic foresight, is crucial for developing a well-thought-out domain design that truly reflects the business's complexities and objectives, ultimately leading to more resilient, adaptable, and maintainable systems.
When approaching Domain-Driven Design (DDD), three key aspects demand meticulous consideration to ensure a successful and future-proof implementation:
|
Defining the Core Boundary |
Crafting Granular Domain Services |
Standardised & Future-Proof Payload Design |
|---|---|---|
|
Rationale: Intent:
|
Rationale: Intent:
Principles:
|
Rationale: Intent:
|
Consider a well-established retail bank that has been operating for decades using one or more legacy core banking systems. These systems, built over time and often reliant on outdated technologies, have evolved into a complex, "spaghetti-like" architecture, where business logic, data access, and presentation layers are tightly interwoven. Adding new features, integrating with FinTech partners, or complying with new regulations takes an inordinate amount of time and resources, often introducing unintended side effects across the entire system. The bank faces a critical dilemma: the cost and risk of a "big bang" replacement are prohibitive, yet the current system severely hampers its ability to innovate and compete.
4.1. Rationale for Applying DDD
In this scenario, DDD provides a strategic roadmap for incremental, low-risk modernisation, transforming the monolithic beast into a more agile ecosystem.
DDD's emphasis on identifying Bounded Contexts is paramount. Instead of attempting to understand and refactor the entire monolith at once, the bank can use DDD principles to identify natural seams and logical groupings of business capabilities within the existing system. For example, 'Customer Onboarding', 'Loan Origination', 'Payment Processing', and 'Account Management' might emerge as distinct bounded contexts, even if they are currently deeply coupled within the legacy code.
Once these bounded contexts are identified, the bank can begin to design and implement unique, non-overlapping domain services that encapsulate the logic and data for each specific business capability. These services are built on top of the legacy core, acting as an abstraction layer. Initially, these services might simply call (pass-through) into the legacy system, but they provide a clean, domain-aligned API.
DDD mandates the creation of a Ubiquitous Language – a shared vocabulary between business experts and technical teams. This ensures that business concepts are consistently understood and represented across all aspects of the system, from requirements to code. This standardisation is crucial for large-scale banking systems, where misinterpretations can lead to significant financial and regulatory risks. It also simplifies onboarding for new team members and reduces communication overhead.
With clearly defined domains and bounded contexts, integration points become explicit and well-governed. Each domain service exposes a clean, business-oriented API, making it straightforward to integrate with other internal systems, external partners, or FinTech solutions. This avoids the "point-to-point" integration nightmares often seen in systems built without a clear architectural vision. The focus is on integrating business capabilities, not just data.
This approach naturally lends itself to the "Strangler Fig" pattern. As new features are required, or existing legacy functionality needs to be enhanced, the bank develops new, modern domain services that implement these capabilities. These new services gradually "strangle" the corresponding functionality within the legacy monolith. For instance, a new 'Customer Onboarding' service might be built, taking over the responsibility from the legacy system. Over time, the legacy code for customer onboarding can be retired or refactored, reducing the monolith's footprint.