Over the past years, having built our flagship product in Resonate Platform around 2011, we became increasingly aware that we have to keep ourselves abreast of the technological landscape changes, and make our platform more cost-effective for operations and facilitating the execution of the platform roadmap. Our products are strongly founded on the Microsoft technology stack and hosted on the Microsoft Azure platform and the latter’s constant evolution and openness have enabled innovation to blossom at Resonate.
Storage
Conveniently our data comes from various sources and serves different purposes in our system. In the past, we have been using quite a few different storage options to best serve the functional and quality requirements of the services to support our products’ operations. Without realising it, we were on the cusp of using Polyglot persistence – a term coined to describe storing data in different types of storage for some applications. In an era, when we are less inclined to use a tiered monolithic architecture, which would otherwise customarily use an equally monolithic database, we are exposed to different storage options which suit the data access requirements of the individual modules of the whole system. We are steadily using Azure blob storage for more logging and auditing of data, SQL Server and Azure for ETL and in the near future Elasticsearch for operational analytics, application level queries and exploration.
Processing architecture
We traditionally process data and reports in batches. This is becoming a constraint in our system because the volume of data and the real-time requirements that our products are envisioned to support make it quite impractical for our clients. For this, we have been looking at ways to tackle data at streams – a method that prepares us for burst processing at speed for more up-to-date reporting. This does not preclude any form of batch processing though; we still need it for more solid reconciliation of data at less frequent intervals. This mindset also enables us to set up alerts for anomalies in our system, and as an extension, make it easier for our clients to close the loop faster.
User Experience
Web frameworks are fast improving – so much so, that Silverlight for instance, an embedded browser technology strongly on the rise in 2010, was put on the list for deprecation within 2 years of that. Users are no longer relying on traditional desktops to do their work. Mobile devices are actively being used in the scale of billions and their ubiquitousness drives the mode of operation of today’s workers.
Accordingly, our approach to designing our client-facing products required an overhaul as well. To support that, we are taking a more API-first approach to our development processes. This meant we could use the same APIs for our desktop web users and mobile users in our new accompanying app Resonate Echo while composing different UI elements depending on the device type and this leads to a natural end-user experience.
Losses
Innovation is inherently a high risk activity and quite often the outcomes are not as fruitful as initially expected. We have had a few failed experiments in the past. One lesson would be that driving innovation for the sake of keeping up-to-date can lead to tangents best left unexplored. The best approach that we have found is through an evolutionary architectural approach whereby we devise just enough to support the short-medium engineering road map goals rather than sticking to a big hairy audacious goal.
Luckily enough, Microsoft Azure’s research friendly infrastructure and services could be spun up on demand and shut down accordingly – this meant we could validate our paths, take our lessons, cut our losses and look forward to the next experiments, rather than committing to the sunk cost.
What’s next?
In order to save cost and continue to improve our agility, we’re currently looking at serverless architectures, which is the next level of abstraction in the industry.
In order to maintain viability, the currency of the technology stack we decide on is only as good as the level of success we aim to achieve, and with our growth spurt, innovating is one of the ways to sustain our improvements.
We’re on a constant journey to look for great talent, so if you are passionate about emergent technologies and want to earn some valuable experience playing a leading role in the full-stack development of our next-generation platform, give us a shout in the Jobs section.