見出し画像

EBt のデータ同期通信について

データ同期の通信をちょっといじっています

現在公開中の EBt はデータ通信については、基本メッシュ構造をしています。全部の EBt が相互に通信するのでフルメッシュと言うべきでしょうか。
でも、それはちょっと効率が悪いので、今色々と書き換えています。というわけで、今回はそれについて書いていきます。

ネットワーク構造もそこそこ柔軟にしていきたい

データの規模とか、EBt の役割とか、その辺を気にしたネットワーク構造にしたいと思っています。
というわけで、EBt の Server アプリのリリースに合わせて、通信をちょっと凝った形にしていきます。

基本構造:メッシュ構造

サーバーが無いときは、今と一緒。つまり、全ての EBt が相互に通信をしていきます。これは、どの EBt もサーバーにならないので仕方が無いところかなと思います。でも、これだと EBt の稼働数が増えるとかなりしんどくなります。というわけで、EBt サーバーを導入したら、ネットワーク構造は自動的に次のように変わります。

サーバーがある場合:スター構造

サーバーがあると、サーバーを起点として EBt を配置する形に勝手に変わります。つまり、PC や Android で作動する EBt の通信先は、基本的にはサーバーになります。
なお、サーバー間の通信は今のところメッシュ構造に近い形にするつもりです。基本的には、同一セグメントにある EBt Server はメッシュ構造を常にとります。
但し、セグメントまたぎの通信については登録したところしか見つけることが出来ません。だから、異なるセグメントにあるサーバーは、登録されたものがメッシュ構造での通信の対象となります。

というわけで、構造が複雑になってくると、自動ではどうにもならなくなるのでちょっと設定していく必要が出てきます。でもまぁ、大規模になった場合だけ。小規模の時はあんまり関係ないでしょう。

EBt の PC 版や Android 版にも

サーバーが登録できるような機能を追加していく予定です。するとどうなるか?VPNとか UDP のブロードキャストパケットが届かない接続方法を使った場合でも、連携が出来るようになります。
ちなみに、今はネットワークで動いている別の EBt を見つけるために UDP のブロードキャストパケットを送っています。ただ、やっぱり制限が多いんですよね。結局はどっかにサーバーを置くしかなくなるのです。

Windows の EBt を勝手にサーバーにするという方法も無いわけではないのですが

サーバーにデータが集約するような仕組みになるんですよ。そうでなけりゃやっぱりサーバーじゃない。というわけで、EBt の Windows 版を勝手にサーバーにするというアイデアは却下しています。
まぁ、適当な EBt をサーバーにすれば良いじゃん?って話も無いわけじゃない。でも、それが未来永劫サーバーとして動くわけでもない。だから、そこに情報を集約するのはちょっといかんのではないかな?って思うのです。
というわけで、この辺は EBt Server のリリースをお待ちくださいませ。

EBt Server のリリースですが

WinUI 版が一番公開しやすい形になっているので、多分それが最初に公開になるでしょう。多分、3月中。できるといいな…
その場合は、Microsoft Store に公開という形になります。
あと、サーバーは無償かなーってお持っています。同期機能でお金払ってもらうんで、追加でお金もらうのもどうかなーと。
欲はほどほどにした方が良いのです。経験上。

セキュリティ的に不安かもしれないんで

EBt Server の DB 構成ファイルは全て暗号化した形でファイルに保存するようにします。一応、安心してください。
あと、サーバーのデータは任意の場所に保存できるようにする予定。保存も複数箇所に出来るようにしたい。Windows版は2箇所に保存してますけど。サーバーはもうちょっと柔軟でも良いかなーと。

今後ですが

EBt のサーバーを公開したあたりから、EBt の通信関連の機能群は次のステップに進んでいきます。
サーバーがうまく動けば、マルチユーザー向けの機能実装に移りたいと思います。そもそも、今リリースしている DB は設計時点でマルチユーザーを強く意識しているので。通信が疎であるような分散環境でうまいことデータを連係させる仕組み作りが、今の EBt の背後にある思想でもあります。

というわけで

今後ともよろしくお願いいたします。

この記事が気に入ったらサポートをしてみませんか?