実際にどのようなサーバー構成で運用すれば良いのか、実際の運用イメージを踏まえながら解説していきます。

obniz-app-sdkのMaster/Slave機能を使用することで容易にスケーリングすることが可能です。
Masterは各Slaveにobnizを割り振る役割を果たし、Slaveは割り振られたobnizデバイスとコネクションを張ります。

MasterとSlaveはRedis(PubSub)を介して通信しており、冗長化を容易に行えます。
⚠Masterは冗長化に対応していません。冗長化可能なのはSlaveとRedisのみです。
obniz-app-sdkを使用したスケーリングの例
前述の通り、スケーリングにはRedisが必要です。
Redisは一般的にインメモリデータベースとして扱われますが、obniz-app-sdkではPubSubとして利用しています。
Ubuntuでは下記のコマンドでインストールすることができます。
$ sudo apt install redis-server
Redisのセットアップが完了したら、obniz-app-sdkのオプションを追加してRedisを使用するようにします。
ローカルにインストールした場合は下記のようになります。
const app = new App({
appToken: "<<< ココにTokenが入ります >>>",
workerClass: MyWorker,
instanceType: AppInstanceType.Master, // Slaveの場合はAppInstanceType.Slave
obnizClass: Obniz,
database: "redis", // これと
databaseConfig: "redis://address:6379", // これを追加
})
app.start();
以上で負荷分散が可能になります。
この状態で1台のMasterと複数台のSlaveを起動し、obnizにアプリをインストールすると、自動的に負荷分散されます。また、Slaveを終了すると、そのSlaveに割り当てられていた分は他のSlaveに引き継がれます。
⚠Slaveを増やした場合、その新Slaveには自動的に引き継がれません。アプリインストールを新たに行うと新Slaveにも割り当てられます。
他サービスとの連動方法
SlaveからデータベースやRedisなどを経由してデータを溜め込み、他サービスから参照することなどが可能です。
他にも、直接他サービスへ送信する方法や、Masterに直接組み込む方法などもあります。

obniz-app-sdkはライブラリですので、既存サービスに直接組み込むことも可能です。