December 2014―Many of the enhancements to Concourse these past few months have been those that almost no one has seen but everyone has felt.
So what are they? Well first some background.
Over the past year we have doubled our clientele, some of which are our largest ever. At the same time existing clients are using our solution in more significant ways, with more users and for more courses. Together this placed an order of magnitude more stress on our systems, and the trend showed no signs of slowing down. It was time to refactor our code and optimize our infrastructure for this exciting level of adoption.
Based on an analysis of peak and sustained usage, we identified three bottleneck areas in need of significant performance improvement: syllabus viewing, mass editing, and search. With this insight we introduced six major improvements that together have made Concourse more performant and scalable than ever before. They include:
- Syllabus caching: Dramatically reduces database calls per syllabus view.
- Asynchronous search text updates: Cuts course feed processing time.
- Indexed keyword search: Speeds up keyword-based searches by an order of magnitude.
- Asynchronous linked template updates: Virtually eliminates the lag on edits to high-level templates.
- Database connection pooling: Takes full advantage of available server connections by threading requests.
- Server tuning: Balances resources based on new memory and CPU usage.
Pretty sweet, right? We definitely think so.
But it gets better. Keyword searches are now “smart.” In other words, searches will now match a broader array of keywords variations. For example if you type "Bowl" you will also find results for Bowls, Bowling, Bowler, and Bowled. Don't worry though, if you want to find a course with more strict criteria you can still utilize the advanced options.
On the other hand because of the sheer number of syllabus edits updates to keyword search text will no longer appear immediately. In most cases you will be able to locate courses based on the newly modified content in a matter of minutes but during peak usage (i.e. feed processing or high-level template updates) you may find that updates to search text can take upwards of an hour.
All of these improvements sound wonderful and will certainly - in the near term - keep Concourse running quickly and smoothly. But this type of work is never really finished. As we scale we will continue to monitor our performance and make upgrades in anticipation of the impressive amount of adoption we are experiencing each day.