Warning: This is quite a technical article!
Here at Ruby Datum we love high performance. Whether searching through millions of documents or just navigating the platform, everything is designed to load rapidly. How? We divulge some of our corporate secrets!
1. Optimised code
We only hire the best programmers in the business. On top of that, we have rigorous code review by peers at a senior level to ensure that all code is looked over line-by-line to ensure it is as optimised as possible. Whether ensuring prepared database statements are properly used and re-used, or simply ensuring unnecessary code is avoided, our developers have a keen eye for spotting inefficiencies.
2. Pre-cached templates & JSON data
To put in as layman’s terms as possible, we have a familiar and consistent feel across the Ruby Datum platform which enhances the user experience, but also means we only return the data (known as JSON) required for what is required when a user clicks on a link or performs any other action. We render all views on the fly (client side) with the HTML which is pre-cached, so this means that even when the connection is poor, the platform still loads efficiently.
3. Minimal frameworks and custom loader scripts
We use minimal frameworks such as Svelte to ensure that we aren’t bundling a load of code that is unnecessary. This is not only great from a performance point-of-view, but also for security. In addition, we have written some custom loader scripts to ensure only views and scripts are loaded as-and-when they are needed (or when the connection is idle), to maximise loading times.
4. Heavy-lifting servers
We have several servers allocated to perform “heavy lifting” tasks. Anything from generating previews, to applying watermarks or extracting PST files, we off-load these from the main web servers on to our heavy lifting servers in order to improve performance. In addition, we make use of parallel processing wherever possible. We have written our own custom scripts for applying watermarks, converting documents to PDF, extracting PST documents and more which all make great use of parallel processing in order to efficiently deliver these ‘heavy duty’ tasks.
5. High specification hardware and server clusters
We cut no corners when it comes to the best kit on the market. And yes, we use solid state drives! In addition, we have clusters of servers anywhere data is stored or transmitted (i.e. database, web, search) in order to both increase resilience and performance. What’s more, our team really know their stuff, and have settings tweaked for maximum performance based on usage statistics, which is an ongoing process.
6. Custom upload scripts with chunking, and advanced compression
We built upon existing upload scripts already available on the market, because they were either slow or buggy, particularly when your system is under heavy load. We break out documents into “chunks” so we can maximise the upload speed to the Ruby Datum platform. In addition, we have a unique method to assess both your connection and computer performance to determine whether it is best to upload documents, or compress-then-upload to maximise resources available.
Of course, we also compress and combine files throughout too – CSS, JS – the usual performance techniques!
7. Bespoke API calls
The whole platform is built on its own API (application programming interface) which is part the reason it is so fast. Beyond this, we assign developers to each client that requires a deeper integration with Ruby Datum. More than often, API’s are slow and clunky because they’re built for a “one size fits all” approach. We listen to see what calls are required, and what data needs to be returned. We then action this for you, to ensure you are only sending and receiving data necessary for the integration at hand.
8. Iterative development based on listening
By engaging with our clients and others, we are able to ensure we aren’t bloating the platform with features that are rarely used. In addition, many features can be enabled/disabled as required (and saved into site templates for easy roll-out). This ensures that you aren’t over-loaded with too many features at once, but also the platform is as optimal for what you need it for as it can be.
9. Language/tool agnostic
Sometimes there are programming languages that excel at performance for specific tasks, such as Python for machine learning, or 7zip for file extraction (especially with multi-threading enabled!). We often use the best language or tool for the job in order to guarantee maximum performance. We also use a distributed redundant search engine for all our search results, which uses natural language processing to find relevant results across documents and their contents.
10. Database architecture
Our database structures are built out with scalability in mind, using who we believe to be some of the greatest minds in the business. This includes using the correct database types for different areas of the platform (e.g. time-series storage for activity logs), but also correct indexes where necessary for faster lookups. We employ many, many techniques for what is most likely the acme of performance enhancements to make Ruby Datum so fast.