Client:
Company from Munich

Household appliances manufacturer

Project Information:
Topic | API Gateway - A new developed backend service hosted in the AWS Cloud
Technology | Node.js, Redis, Kibana, Grafana

The Challenge

An IoT API that enables the countless in-house integrations of smart home services such as Google Assistant, Alexa, and IFTTT, but also third-party applications, faces a lot of challenges: handling several million requests daily, high availability and an increasing number of features are just three of them. Our customer, a well-known international home appliance manufacturer, offers such an API. However, in order to be well prepared for the future, for example coping with a continuously increasing number of users or implementing new features, a solution had to be found that could deal with this complexity. The core task was to use various parameters to decide how the routing should take place. The focus was primarily on scalability, high test coverage and improved monitoring to ensure uninterrupted operation.


The Solution

The so-called API Gateway is a completely new development: a backend service consisting of modern technologies (NodeJS, Redis...), hosted in the AWS Cloud as a flexibly scalable container application (ECS). For the intelligent routing we rely on the Web Framework Express, which guarantees the stability needed as well as a very good performance. This service replaces the existing solution, a Nginx/OpenResty proxy.

The large number of written unit and integration tests helps us to implement and roll out new extensions, such as the future support of web sockets, quickly and with minimized risk. The AWS cloud provides us with the robust infrastructure, which we can automatically scale for different loads, such as the typical off-peak load (home appliances also have a "rush hour"), but also for the expected increase in the general number of users. The service is topped off with detailed logging (Kibana) and monitoring (Grafana). Grafana offers the ability to create dashboards for a quick overview of the service and configure alerts to automatically notify users if vital metrics deviate from their standards.

We use Redis as a high-performance interface us to keep the variable number of instances communicating with each other. This enables us to implement rate limiting over several instances, for example. </div>


The Project

Scandio's developers and consultants kept constant contact with the product owner on the customer side, starting from conception and implementation until the go-live, in order to implement the core functions as an agile development team. Our customer had complete confidence in us to make the right decisions regarding technologies and the specific implementation. Less than a year passed from the first concepts ideas to the go-live and the system has now been running reliably ever since. However, we continue to actively work on new features and discuss ideas to ensure a long lasting success for our customer.