Ideas from the team

Category

An Infinite Cloud: Future-Proofing Spektrix and Creating Capacity to Build

Illustration of green and blue clouds.

Software as a Service (SaaS)

Spektrix has always been a true cloud-based system. This has become the norm for modern business software over the last 10+ years, with companies like Salesforce, Zendesk and Google all delivering their offerings in a similar way. What this means in a bit more detail is that:

  • We’ve always followed a Software as a Service (SaaS) model whereby the software is provided on a subscription basis which includes all upgrades, maintenance, management of the underlying infrastructure the software runs on, etc. While SaaS usually includes an element of support, many SaaS providers charge extra for certain professional services like report writing or importing data. We’re at the extreme end of “all inclusive” and our users are never charged anything other than the subscription charge.
  • Our application is multi-tenant. This means that a single instance of the Spektrix software can serve multiple organizations, but with each organization appearing to have its own dedicated instance of the software. This provides many advantages. One particularly visible one is the fact that we typically release upgrades to everyone multiple times a week. This is possible because we don’t have to apply those upgrades to hundreds of versions of the software, but just to a small handful.
  • Our application has always been delivered to users via the use of a web browser, without requiring any special browser plugins like Silverlight or Java (some of which are only available on certain platforms like Windows or Internet Explorer). Spektrix works in all modern browsers and on all platforms (Windows, Mac OS, Linux, etc.).

Spektrix at present

There is a lot going on behind the scenes to deliver the Spektrix system that our users and their customers use every day. We have web servers, database servers, reporting servers, firewalls, load balancers, file servers and many more. We run all these servers across a combination of infrastructure that we run and maintain ourselves, as well as on infrastructure provided by a number of cloud providers such as Microsoft Azure and Amazon Web Services, who we use to host our PCI-compliant payment application.

We keep all those servers maintained, secured and monitored. When we need new ones to increase capacity, we add them seamlessly.  Sometimes we move from old servers to new ones, or change their location ⁠— we always do these types of changes at times when disruption for our users is minimized.

But it’s now time to start changing this approach. In the same way as we advise our users to outsource the running of their software to an expert in doing this (a tech partner like Spektrix), we are taking our own advice and applying it to our own business. Developments in the last 2-3 years mean there are now providers who are experts in managing infrastructure and platforms, and by outsourcing these elements to them, we can focus more of our time on what only we can do: building and improving the Spektrix application itself.

Infrastructure as a Service (IaaS) and Platform as a Service (PaaS)

So next, let’s explore some other key concepts beyond SaaS.

The first of these is Infrastructure as a Service (IaaS). This is what most people traditionally think of when they think of public clouds like Amazon Web Services. It is essentially a way to rent “virtual” servers by the hour, paying only while you have the server switched on. Users have the ability to start up new servers whenever needed, and choose from a range of “powers” of computers in terms of memory and processing power. A user of IaaS no longer has to manage the physical servers themselves, but critically, they do still need to manage the operating systems running on those computers, install their applications, manage their networking, keep them patched with security updates and much more.

A lot of providers ⁠— particularly those with older software ⁠— have moved their applications to the cloud using IaaS. From the application’s point of view, this generally works because it sees a server that behaves in the same way as the server it ran on previously. This approach is commonly termed “lift and shift.” The problem with it is that the provider still has to manage a potentially very large estate of servers ⁠— particularly if their application isn’t multi-tenant and they’ve got separate servers for each client.

This is where Platform as a Service (PaaS) comes in. PaaS is an approach whereby an application developer (like Spektrix) builds their application in such a way that it can “run” on a provider’s platform, without the application developer having to be concerned with managing the servers that the application is running on.

 

Illustration explaining Microsoft Azure is a Platform as a Service

 

Why we have chosen to invest in PaaS (and why IaaS is not the right solution)

Two key benefits that a PaaS approach offers over IaaS are as follows:

  • Properly managing servers takes a lot of effort, and getting this wrong has potentially serious consequences; for example, failing to promptly apply a security update could lead to a hacker gaining access. PaaS moves the burden of this server management to a PaaS provider who does this on a massive scale and is therefore an expert at it.
  • Through this expertise and scale come many additional features and benefits. For example, PaaS offerings will generally be much quicker and easier to scale, often have better resiliency and disaster recovery options built in, and often have additional security features.  None of these couldn’t be achieved without PaaS ⁠— but they probably wouldn’t be economically viable for software providers running their own servers on IaaS and having to engineer all these benefits for themselves.

These benefits are why our strategy is focused around moving to PaaS. The next stage will see the majority of our infrastructure moved across, and ultimately we want to find ourselves managing no servers ourselves, instead leaving this entirely to the PaaS providers we choose.

You may wonder why everyone wouldn’t just move to PaaS instead of IaaS. The reason is that applications generally can’t run on PaaS unless they’ve been specifically built for it, or modified to fit within the offerings of the platform - modifications which generally aren’t easy, particularly for older applications, and in particular for ones that aren’t web-based.

How we are making the move

Over the last 18 months we’ve been investing heavily in behind the scenes changes to make Spektrix PaaS-compatible, and we’re now over some of the biggest hurdles in making this happen.

The most significant change has been in our database layer. We have always used Microsoft’s SQL Server database engine, and we run and maintain a number of SQL Server database clusters in fault-tolerant configurations to ensure great service to our users. Spektrix has now been made compatible with a Microsoft-based PaaS offering called Azure SQL Database.

As well as leaving Microsoft to run the computers, Azure SQL Database brings lots of other benefits - all of which we could achieve on our own if we wanted, but which would require huge development and ongoing maintenance effort if we did. These include:

  • The ability to scale amounts of database resource up and down with no downtime and by issuing some simple commands to the platform. For our users, this means benefits such as potentially faster speeds of sales during big onsales.
  • We should be able to manage any size of onsale, with almost infinite cloud capacity available to manage queues and peaks in demand.
  • The narrowing of our data risk window from 15 minutes to just a few seconds. This is using a feature called active geo-replication that replicates data to a geographically separate Azure region that is no more than a few seconds behind the primary location. We hope it will never happen, but if a serious problem ever occurs, that means clients’ data is backed up automatically and we won’t ever lose more than five seconds’ worth of transactions.
  • Reports are run on the replicated database rather than the primary database, which removes the risk of a running report having an effect on sales activity.

A few more of the PaaS offerings we’re using include:

  • Azure Blob storage - this is a service for file storage and means that we no longer have to manage our own file servers. This part of the migration to Azure is already complete and gradually took place over a few months earlier in the year, without requiring any action from users or changes to their experience of Spektrix.
  • Cloudflare - this is a platform that all of our web traffic will shortly be running through, and that will give us more control over how, and from where, we serve our web requests. It’s also the platform we’ve used to deliver our custom domain solution.

Rather than running our own mail servers for sending emails like transaction confirmations, we’ll be using a provider called Mailgun instead. This is the only part of the journey where we’ll need some input from our users - you’ll soon hear from us about minor changes to your domains which will allow us to set up email sending through Mailgun and, at the same time, improve the deliverability of those emails.

The future for Spektrix and our clients

We’ve scaled up our engineering team by around 60% over the last year, giving ourselves the capacity and expertise to deliver these significant changes to the Spektrix system. Once complete, the move to PaaS will future-proof our offer, ensuring we’re able to continue providing a service that’s reliable, secure and continually upgraded for many years into the future. What’s more, we haven’t scaled our team only to reduce it again once this project is behind us. With the migration complete, we’ll be able to refocus more of our effort than ever before on building and improving the Spektrix application itself - delivering more features and improvements that have the potential to help move the sector forward.