Bacancy modernized Sterling HMS, a US hospital network’s in-house platform for patient records, scheduling, and continuous patient monitoring. While the Node.js-based system continued to run the records and administrative modules effectively, the monitoring module faced growing concurrency demands as thousands of connected devices streamed real-time vitals through persistent connections during peak hours. Since the challenge was isolated to patient monitoring, we avoided a full system rewrite and migrated only the concurrency-intensive module to Golang. Go’s goroutine model enabled the platform to handle thousands of simultaneous connections with fewer servers, while the rest of the application remained on Node.js. Both environments now run side by side behind a shared API gateway.
Patient-monitoring module migrated to Go while the Node.js core was retained
Strangler-fig migration that kept the live hospital system serving throughout
Thousands of concurrent device connections held on far fewer servers
Go and Node.js running side by side behind a shared API gateway
At peak hours, the monitoring module handled thousands of concurrent device connections, where slow responses could affect patient care
Scaling Node.js horizontally kept growing server requirements because each process used more memory per connection than necessary
The fix had to improve the real-time monitoring paths without touching the Node.js modules that were already working well
Rewriting a live hospital management system was too risky, so the change had to be gradual, isolated, and reversible
Our engineers profiled the system before changing anything, and the picture was clear: the record and administrative modules were healthy on Node.js, while only the monitoring module was under genuine concurrency pressure
Because the problem was isolated, we did not default to a rewrite. Our healthcare developers weighed in-stack options such as clustering and horizontal scaling, then chose Golang only where its goroutine model is a structural advantage rather than a preference
Our Golang developers rebuilt the monitoring module as Go microservices, each holding thousands of concurrent device connections on a single instance, and cutting the server count to the same load needed on Node.js
To keep the system live throughout, the team used the strangler-fig pattern behind an API gateway, so the Go monitoring services and the Node.js core run together and exchange data over REST and gRPC with no disruption to clinical workflows
Golang Microservices for the Patient-Monitoring Module
Polyglot Architecture with Node.js and Go Behind a Gateway
High-Concurrency Device Connection Handling
Strangler-Fig Migration with Zero Downtime During Cutover
04
Jan 2026 - March 2026
~3x faster monitoring service response under peak load
Peak-hour connection queuing completely eliminated
~7x reduction in peak-hour service outages, maintaining 99.9%+ uptime
35–40% fewer servers required, reducing infrastructure costs
Node.js core retained with zero operational disruption
Monitoring scales with device growth, not server growth
| Backend (migrated module) | Golang (Go) |
| Backend (retained) | Node.js |
| Database | PostgreSQL |
| API Communication | RESTful APIsgRPC |
| Architecture | MicroservicesStrangler-Fig MigrationAPI Gateway |
| Project & Issue Tracking | JiraConfluence |
Get access to an experienced team of developers and engineers from Bacancy, handpicked to ace your goals. Kickstart within 48 hours, no-risk trial.
Years of Business Experience
Happy Customers
Countries with Happy Customers
Agile Enabled Employees