Programming a System with Mission-Critical Performance Requirements

Computers, healthcare and money

We entered the room and saw more than fifty people were working on their terminals. They all were providing support on their authorization system. Every time a patient swiped his health insurance card at a doctor’s office (or even at an ambulance on the go,) computers would cross-reference the terms of such insurance with the requested treatment, and authorize it.

50 screens

It was a perfectly working structure that was costing our client hundreds of thousands of dollars every year, for the platform they were using to process so many queries was rented with big, recurring payments.

Our team received the important task of replacing a perfectly working system with an improved one that our client would own. The ehnahced structure would be able to handle even more transactions, while our client would save an impressive amount of money in rental fees.

When performance is critical

One of the key points of the system we developed is that it had to deal with spikes of several thousand connections per second. Ten thousands can be a quite big number in these contexts. And delays or service errors wouldn’t be admissible – after all, it was a healthcare-related application, and people’s prompt treatment and health were at stake.

10000 connections

We ran the system through exhaustive testing to verify that it would stand this load – and it performed flawlessly. In essence, an optimized PostgreSQL database, working together with Hibernate, with everything finely tuned configured, making intensive use of database caching, and receiving optimized search queries, worked amazingly fast.

How we did it

We built the new system using an agile software development process. Technically speaking, it was based on Java with Struts on a dedicated Linux server running Apache. Our choice for the database engine was PostgreSQL, connected to our core application using Hibernate.

application stack

My contributions to this project were as follows:

  • Programming part of the application logic in Java EE.
  • Working on the new data model and developing data queries, using the PostgreSQL database and Java / Hibernate.
  • Coding the Java software that allowed a USB card reader communicate with the rest of the system.
  • Developing extensive test cases (mostly using JUnit) for verification and validation purposes.
  • Creating a significant part of the web-based front-end of the application (HTML, CSS and Javascript).

The result was an extremely successful project, delivered in time, with blazing fast performance. We enabled our client company to reach out for new markets, speed up their workflow and save a significant amount of money in recurring operating costs.