Development
Dev Ops
Performance
Infrastructure
Building blocks
Technology
API
Microservices

How we built our highly scalable next-gen API-led platform

To meet our future demands we needed to look at our product development differently. We had to find a solution which would enable us to build products faster, more scalable, maintainable and customisable.

RDC has more than a decade long presence in the industry as aviation experts. In that time we've attracted many of the biggest names in the industry including Airbus, British Airways and Heathrow Airport. RDC's customer base is growing at a rapid pace and it demands more from the product development team than ever before. To meet those high-end demands we needed to look at our product development differently - to become more scalable, maintainable and customisable, and to build great products faster.

Adjusting to the future

Hitting the speed limits

Many of our legacy systems were built as monolithic applications and over time have become more expensive to maintain and scale. Most of their existing functionalities are tightly coupled and are difficult to reuse to build new products. As demands grew and we got closer to hitting the upper limits of our existing technology we knew we needed to scale, but the question was how? 

The solution

Well, our search ended in the world of microservices. Unlike monolithic applications, microservices are highly scalable, easy to maintain and can be deployed independently. These services can be reused or aggregated to make more services. Considering all the various demands that could be placed across our wide range of data sources we decided to go down this path and codenamed this platform as "Project Q".

Implementing the future

Breaking things

We started by splitting up our large monolithic application into small logical units. As a team we decided on which different elements of functionality should group together based on their domain, behaviour etc. and then designed them into API services. Each new microservice is responsible for a small subset of specific functions. For example our "account" service is responsible for all our user related queries and functions, whereas our "charge" service is responsible for all our airport charge calculations.

Containers

As we grow, we foresee our services to be using multiple technologies running on different platforms so we wanted to make every service easily deployable regardless of the platform upon which it runs. We decided to use Docker as our container platform to run .NET Core applications in a Linux environment. Docker is a perfect fit for all our container needs and it is also the best in the market.

DevOps

When we had all our microservices built and containerised, our next decision was to choose a deployment environment which makes them easy to deploy. Our experience in Azure and also considering the fact that several of our projects are already in DevOps (formerly VSTS), DevOps was the default choice for building and Deployment. You can read more about our DevOps cutover in the article “Moving all our projects to Azure Devops” by Gavin.

Orchestration

All great microservices need an orchestrator in order to help them play nicely together.

A few years back our team looked into Azure Service Fabric for container orchestration. Whilst it had many of the features we were looking for, ultimately we chose not to adopt it because of its infancy in the market and its lack of support for other major cloud providers like AWS. 

In the end we turned to Kubernetes as our orchestrator for microservices - a matured and battle-tested orchestrator which is supported by all major cloud providers including Azure through their Azure Kubernetes Service (AKS).

By combining the power of continuous integration & continuous delivery along with technologies like Kubernetes & Docker, we've accumulated a very powerful toolset to fit our spectrum of DevOps requirements.

The future is now

APIs are first-class citizens

Now in RDC, APIs are first-class citizens - quite literally the building blocks of our future applications. This brand new infrastructure will power everything from logging activities to calculating complex airport charges. As our number one priority in RDC, our APIs are designed carefully so that they can be reused amongst all our applications, enabling us to scale more quickly as a result.

Infinitely scalable

With all the above technologies we've got a platform which gives us infinite capabilities. Adding that to other future technologies like Identity Server, API Management Gateway, Azure Cosmos DB and Azure Service Bus our infrastructure is highly scalable. We can now concentrate on building quality products rather than worrying about scaling and managing applications, regardless of the demands.

 
An Article by Alok Babu

Alok, as RDC's Senior Developer, is responsible for setting the vision for RDC's technical product architecture and draws on his many years of experience in building award-winning cloud applications.