Case Study 1: GlobalBank CI/CD Pipeline Implementation
The Problem
GlobalBank's deployment process for COBOL changes followed a rigid, manual workflow:
- Developer writes code in ISPF (Day 1)
- Developer submits change request form (Day 2)
- Change management reviews request (Days 3-5)
- Overnight compile batch runs (Day 6)
- If compile errors, return to step 1 (Day 7+)
- Manual testing by QA team (Days 7-10)
- Release packaging (Day 11-12)
- Production deployment in bi-weekly window (Day 13-14)
This process meant that a one-line bug fix took two weeks to reach production. During the 2024 holiday season, a critical interest calculation bug was discovered on a Monday but could not be deployed until the next Friday's release window — costing the bank $47,000 in manual corrections.
The Implementation
Priya Kapoor proposed a phased modernization that would not disrupt existing operations.
Phase 1: Git Migration
The team migrated 1,247 COBOL programs, 342 copybooks, and 198 JCL procedures from Endevor to GitHub Enterprise. A bi-directional sync tool ensured that both systems stayed in alignment during the transition.
Key decision: they kept the Endevor-style naming conventions in Git rather than renaming everything. "Developers already know that ACCTINQ is the account inquiry program," Priya explained. "Renaming it to AccountInquiryService.cbl would confuse everyone for no benefit."
Phase 2: Automated Build
Using IBM DBB (Dependency Based Build), they created a build system that understood COBOL dependencies. When a developer changed the ACCTCPY copybook, DBB automatically identified and recompiled all 23 programs that COPYed it.
Build time: 3 minutes for a single program, 18 minutes for a full rebuild of all 1,247 programs.
Phase 3: Testing Automation
COBOL-Check unit tests were written for the 47 most critical programs. Integration tests verified end-to-end batch job streams. The test suite ran in 12 minutes.
Phase 4: Pipeline
The complete pipeline: push to Git, auto-build, auto-test, deploy to test region, smoke test, await approval, deploy to production.
Results
| Metric | Before | After | Improvement |
|---|---|---|---|
| Code to production | 14 days | 3 days | 78% faster |
| Deployments/month | 2 | 12 | 6x more frequent |
| Deployment success | 87% | 98% | 11% improvement |
| Compile error detection | 4-6 hours | 3 minutes | 80-120x faster |
| Integration issue detection | 2-3 days | 15 minutes | 200-300x faster |
Discussion Questions
- Why was bi-directional sync with Endevor necessary during the Git migration?
- What risks does more frequent deployment introduce, and how does CI/CD mitigate them?
- Should the production deployment approval step be automated? Why or why not?
- How would you prioritize which of the remaining 1,200 programs to add unit tests for?