This page describes the architecture of a The Things Stack deployment on Azure.
Networking
The compute infrastructure is contained inside a Virtual Network, grouped into separate Private Subnets. Communication with the Internet is via a Network Address Translation Gateway (NAT GW). Internal load balancer (LB) is used to handle incoming traffic.
The NAT GW is assigned a Public IP Address Prefix while the LB is assigned a static Public IP Address.
Data Storage
The Things Stack relies on two databases: PostgreSQL and Redis. Azure offers these databases as managed services.
We use Azure Database for PostgreSQL as the relational database.
Azure offers a managed Azure Cache for Redis Database service, but due to it’s version not being compatible with The Things Stack the Redis we use is in-cluster. The newest Redis version supported by Azure Cache is 6.0, while the minimum required version of Redis for The Things Stack is 6.2.
User uploads of profile pictures and end device pictures are stored in public Azure Storage Containers (Optional).
Configuration
The Azure Kubernetes deployment of The Things Stack uses a combination of configuration stored as Terraform and Helm configuration files.
The configuration for interoperability with other LoRaWAN Backend Interfaces-compliant servers is stored as multiple files in a private Azure Storage Account (Optional).