How We Rewrote a Central Component of GatewayAPI Without You Noticing

Back to all posts
How We Rewrote a Central Component of GatewayAPI Without You Noticing
:warning::nerd_face: Warning! The following content may by some appear extremely technical and nerdy :nerd_face::warning:

We have just released a new version of GatewayAPI’s message router, which means that we have basically upgraded “the engine of GatewayAPI”. In that connection, we thought it would be suitable with a blog post with a detailed account of the upgrade.

Message router 2.0

GatewayAPI’s message router plays a significant role, and without it you could say that our SMS gateway would not be worth much.

Among other things, the message router redirects all messages and ensures that they reach the right countries, telecommunications companies and recipients. In addition, replies from providers about delivery status are returned via the component, which are then forwarded in the system. The information is also stored in the database, where it is used for statistical purposes and so forth.

We recently began rewriting the message router from scratch to achieve a wide range of improvements for you – and for us, which we will explain in detail below.

You may not have experienced any changes yet: The SMS messages were delivered before the optimisation – and they still are. But now in an even more efficient way.

message-router_1200x628px

What has been improved?

We have been busy, and the improvements to the message router are numerous. We have particularly focused on improving the Python part of the code as well as completing an overall optimisation of the IT architecture.

The focus areas were:

  • Replacement of the C ++ system to a new system in Python with asyncio.
  • Replacing the in-house queue system with a system based on RabbitMQ instead.
  • Optimising the IT architecture.
team-celebrate_1200x628px

The results of the improvements are:

  • Greater robustness, including even higher fault tolerance.
  • Better handling of retries.
  • Better cloud-adoption, in line with our setup in Google Cloud via Kubernetes.
  • Ability to scale even better.
  • Better monitoring of bottlenecks.
  • Ability to develop new features even faster.
  • Reduction of CPU consumption by up to 40-50%.
  • Great improvements in unit test code coverage.
  • Better instrumentation and greater insight into the system while it is running.
  • The implementation in asyncio means that we can better utilise our resources without running into problems with concurrency in Python.

How do the improvements benefit you?

The optimisation can be seen as an investment in the future, which will make it easier for us to develop new solutions as well as other development projects on GatewayAPI. You thereby get quicker access to new features and enhancements.

In addition, the improvements will overall provide you with an even better experience when you use GatewayAPI.

That was all for now. We hope you enjoy the new message router. If you have any questions or want to get in touch with us, please do not hesitate to contact us on the support chat.

global-sms-gatewayapi

Global SMS Gateway

We have made it simple to implement SMS services into your business by offering some of the best prices worldwide as well as easy integration, world-class customer support, an intuitive interface and a rock-solid uptime of 99.99 %. If you don’t have an account yet, you can create a FREE account in less than two minutes here: Go to GatewayAPI or contact sales@gatewayapi.com.