Case Study: CIBC

Modernized Commodities Tradings System

Role: Modernization Team

North Star: Re-built legacy communication for speed and latency; Modernized CI/CD

Executive Summary

During this 4 month engagement, DevAltus transformed a fragile, monolithic trading platform into a modular, standards‑based system. We decomposed the codebase into 72 modules, introduced per‑module CI/CD with Dockerized build/test, migrated source control to a managed Git cloud, and replaced hand‑rolled messaging with a robust JMS architecture (topics + queues, per‑type serdes, well‑defined topologies). The result is faster, safer releases and a far more reliable trading backbone.

Impact Snapshot

  • Monolith Decomposition into 72-module decomposition with clear ownership and boundaries

  • CI for every module: automated builds, tests, and releases

  • Reusable libraries to eliminate duplication and standardize patterns

  • Dockerized build/test to guarantee reproducible pipelines

  • Dockerized local environment to facilitate faster, simpler development

  • Git cloud migration from a self‑hosted enterprise instance

  • Messaging refactor to standardized JMS with topics, queues, and schema‑aware serdes

  • Transparent integration across the entire trading stack

Hard Problems DevAltus Solved

  1. DevOps

    DevAltus led a complete transformation of the client’s engineering delivery infrastructure. The legacy codebase was structured as a monolith with no formal release process, which made even minor changes risky and time-consuming. We began by decomposing the system into 72 modular components, each aligned with a specific domain boundary. This modularization allowed us to implement independent CI/CD pipelines, enabling targeted deployments and reducing the risk of regression across unrelated areas.

    We introduced containerized build and test processes using Docker, which provided consistent behavior across environments and eliminated configuration drift. Shared functionality was extracted into reusable libraries to enforce architectural consistency and eliminate duplication. We also migrated the codebase and development workflow from a self-hosted Git Enterprise instance to a managed Git cloud platform. This migration improved collaboration, enhanced access control, and significantly reduced maintenance overhead.

    These DevOps improvements led to more reliable builds, higher deployment confidence, and a stronger foundation for scaling the engineering team.

  2. JMS Messaging

    The original system used custom-built messaging logic in an attempt to handle high availability, replay, and message delivery. However, this approach was unreliable and difficult to maintain. Devaltus replaced the bespoke messaging code with a standardized implementation using Java Message Service (JMS), and relied on the intrinsic guarantees of the HA JMS System.

    We introduced clear separation between topics and queues, selecting the appropriate model based on delivery semantics. Per-type serializers and deserializers were implemented to ensure schema integrity and allow the system to evolve safely over time. As part of this effort, we also refactored classes that were directly sending binary payloads on the wire into proper, schema-aware serializers and deserializers. This pattern was deeply embedded across the codebase, and cleaning it up was critical for maintainability, observability, and downstream compatibility.

    This modernization eliminated thousands of lines of fragile, duplicated logic that had previously caused recurring failures and operational complexity. In parallel, we ensured the new messaging implementation integrated cleanly with the rest of the system. All upstream and downstream components continued to operate as before, while benefiting from improved reliability and transparency in message handling.

  3. Architecture

    The architectural improvements were delivered incrementally and without disruption to the business. We introduced explicit messaging topologies to separate concerns across the platform, including market data distribution, order processing, and post-trade settlement. This structure allowed for horizontal scalability, simplified ownership, and more predictable failure recovery.

    Observability was built in from the start. We implemented structured logging, traceable message flows, and robust dead-letter queue handling. These features made the platform significantly more debuggable and resilient.

    We also ensured that integration across the trading stack remained stable. Adapter layers and compatibility mechanisms were introduced to allow existing systems to continue operating without change. As a result, the rollout proceeded smoothly, with no impact on daily operations or trading continuity.

    Results

    This engagement replaced a fragile and inflexible trading core with a modern, modular, and observable platform. Development velocity improved significantly, enabling smaller and safer deployments on a more frequent basis. Message delivery issues were eliminated, and the system’s behavior became predictable under load and failure conditions.

    The client now benefits from a platform that is easier to maintain, extend, and debug. The architecture supports growth, simplifies onboarding for new developers, and provides a strong foundation for integrating future capabilities. Most importantly, these outcomes were achieved without disrupting live trading activity or introducing risk to the business.

Previous work in this area: