Thoughtworks · Client engagement · Zhuhai

ICBC

DevOps consulting and delivery improvement

My contribution

Problem analysis, technical options and recommendations.

My roleDevOps Consultant
Project participation2021 · About three months
FocusDelivery · Database changes · Traffic routing

01 / Consulting scope

Starting with the problems the bank needed to solve.

As a Thoughtworks consultant on an ICBC engagement in Zhuhai, I analysed pain points raised by the bank and provided technical advice and solution options. The work covered deployment standardisation, delivery measurement, test-environment database changes and traffic switching.

I worked through the existing processes and constraints before proposing changes. This meant connecting technical choices with release schedules, audit requirements, team handoffs and the effort needed to adopt a different way of working.

02 / Delivery & measurement

Connecting automation measures to delivery problems.

The bank was improving application deployment and wanted to understand its progress. Existing workflows combined automated pipelines, manual steps and handoffs between development, integration and operations teams. A pipeline could be in use while substantial work still happened outside it.

My analysis followed the release path from build and artifact handoff through deployment and verification. This helped identify where manual work remained and what a measure would need to capture. I recommended a small, obtainable set of measures that fitted the bank’s existing reporting and addressed those specific gaps.

Standardisation also needed clear boundaries: common deployment steps and configuration rules had to leave room for application-specific release needs, including canary strategies. The advice balanced consistency with that flexibility.

Coverage
Identify which applications and release steps use the standard workflow, and where manual intervention remains.
Effort & time
Examine deployment duration, manual work and handoff delays alongside pipeline usage. Agree what each measurement includes.
Quality
Consider successful deployment and recovery measures together with delivery speed, so the assessment reflects how well the process works.

Agree on the measure before building its collection.

The consulting work separated metric definition from collection implementation. First establish the question, calculation and available data; then decide how to collect it. This kept the proposed measures useful and practical to obtain.

03 / Database changes

Keeping database changes consistent across parallel releases.

Test environments were created by cloning VMs while development continued on monthly branches. Database structure changes and data changes were managed in different places. This made it difficult to know the starting state of a new environment and which changes it still needed.

Test database updates also relied on a production pre-release verification workflow, bringing release-related requirements into routine development. I proposed separating the test-environment deployment path and making database versions, baselines and application changes easier to track together.

Recommended checks for test-environment changes

  1. Establish the baselineIdentify the state inherited from the clone and the changes already applied.
  2. Resolve change orderCoordinate overlapping schema and data changes across branches.
  3. Verify compatibilityCheck the resulting schema, data and application behaviour together.
A shared migration history helps track change; coordination and testing establish whether the combined result is correct.

a. Integrate changes earlier

Shorter branches, earlier conflict detection.

Where release constraints allowed, I recommended trunk-based development or shorter-lived feature branches. Frequent integration would expose conflicting schema changes sooner. Adopting it would also require changes to team practices.

b. Retain monthly branches

Make ordering and reconciliation explicit.

If the monthly model remained, late changes to an earlier release needed careful handling in later environments. Replaying migrations or allowing out-of-order changes brought different costs and risks of overwriting or masking conflicts.

The options included Flyway and Liquibase for managing migration histories. Tooling needed to be paired with coordination over shared fields, compatibility tests and care around destructive changes. The existing audit purpose of separate DDL and DML management also had to be considered before recommending consolidation.

Where should a database migration task run?

A related design question arose when considering a move from VM-hosted databases to a container platform: the old assumption of a deployment agent installed on the same VM no longer held. The options included dynamic agents and separate migration jobs, with execution location, network access and resource lifecycle considered together.

04 / Traffic switching

Choosing the right place to control traffic.

I also worked on traffic-switching and canary-release advice. The discussion compared DNS-level routing, API-gateway controls and service-mesh approaches, considering where routing decisions belonged and how much change each option introduced.

Routing scope
Separate directing users to an endpoint from routing requests between application versions and managing service-to-service traffic.
Controlled rollout
Use staged traffic movement, health checks and monitoring to judge whether a new version should receive more traffic or have traffic withdrawn.
Platform fit
Compare gateway and mesh options against the required controls and the complexity the team would need to operate.

Across these topics, my contribution was to turn broad improvement requests into concrete technical decisions: clarify the problem, compare workable options and explain the consequences of each choice.