2018年におけるクライアント・サーバー型システム

大昔の業務系システムは、中小規模の場合、Windows ServerとSQL Serverの組み合わせで、CSシステムを運用していたと思う。所謂オンプレミスで自社運用。

これのメンテとサポートが面倒で、費用も掛かるから、クラウドにしましょうって事で、レンタルサーバーにするのが流行り。でも、結局の所、Microsoft Azureだとか、マイクロソフト系の技術にずっぽり。費用も高い。

嫌だという場合、GoogleやAmazonのクラウドがある。でもさ、結局、中小規模の企業で誰がそのクラウドのシステム開発して、セットアップしてメンテするのよ、ってのは変わってない。ではって事で、既成のクラウドの特定サービスを使うと、必ずその企業のサービスロックインされて、余計なものまでつけて、なんだかんだで料金が上がっていく。データのエクスポートなんて絶対にやらせてくれないから、乗り換えも出来ない。ベンダーロックイン。

IT企業であれば、普通に自前でローカルにLinuxでサーバー立てて~、なんて全部無料で簡単に出来るけど、一般の中小企業では、バカ高いぼったくり価格な上に、Windows系のシステム導入されて、年間幾らのライセンス料やらサポート料を支払う。または、特定企業のサービスへロックイン。

なんで、自分の所に普通にダウンロードして、普通にインストールして、普通に使えないの?ってのが普通の疑問。それに、コアな情報をクラウドとかセキュリティ的に嫌だし、てか、ダメ。って場合もある。

じゃぁどうするか、ってのがずっと課題だった。中小では、一台から数台、多くて数十台のクライアントで運用が一般的でしょう。

普通のWindowsのデスクトップPCに、XAMPP(Apache, MySQL, PHP, Perl, Ruby)いれてサーバー、、、って運用は結局難がありすぎる。それぞれインストールと設定も不確定要素が多すぎでインストーラー一つで一発、と単純にはいかない。それにだれがApacheやMySQLのアップデートやらデータバックアップのメンテするんよって事になる。それに、自分のPCに居れるのはヤダね。裏で使いもしないApacheやらMySQLのサービスが稼働しているなんて、セキュリティ的にも、リソース的にもやだ。

では、って事なのだけれども。。。

1つの解は、アプリケーション側で全部やるパターン。つまり、デスクトップのソフトに組み込みHTTPサーバー機能を持たせてRESTインターフェースにして、FirebirdのようなEmbed(組み込み)でスレッドもセーフなRDMSを使って、自前でやる。そうすれば、Apacheサーバーもいらないし、MySQLサーバーもいらない。一台のWindowsでしか使わないのであれば、単体のアプリケーションでクライアント・サーバーとして振る舞い、複数台で使う場合は、どれかをサーバーに割り当てる。

クライアントとサーバーのやり取りは、HTTPでRESTにしておけば、後々クラウドサービスに移行というケースでも、簡単にスケールする。場合によってはクライアント側はまったくいじらないでローカルからクラウドへ移行できる。

つまり、シングルユーザーのPCと、マルチユーザーのクライアント・サーバーを簡単にボタン一つで切り替えられる。おまけに、Firebirdなら、組み込みのembeddedから、Firebirdサーバーへ切り替えてより大規模にも、単にボタン一つで切り替えられる。

自分のアプリケーション内で、組み込みのサーバーを自前で作るってのがネックだけど、最近はライブラリやフレームワークが充実しているから、問題ないはず。.Net系のC#やVBではマイクロソフト系のAzureとかゴミ情報が多すぎるけど、そっち系は不要。

一度、HTTPとRESTでサーバー機能を作ってしまえば、拡張性とスケーラビリティは最高。1台から、数台、クラウドで多数、とシステムを簡単に移行したり、切り替えたりがいける。それに、クライアントに関して言えば、RESTの仕様公開して他人に作ってもらったり、ブラウザ経由と、デスクトップ、またはスマホのアプリ、とUIを切り離せる。サーバー機能についてはクラウドに移行する場合はクラウド側の環境に合わせて書き直した方が良いかもしれないけれど。

これ、なんていう形態なのだろう。まだ名前はないのかな。

個人的には、先に書いた、Lazarus(というかObject Pascal・Free PascalとLCL)でサーバー側のアプリを開発して、LinuxでもMacでもWindowsでもネイティブにランタイムとか不要で単体で動きますよ~ってのを考えている。

具体的には、mORMot、とかBrook Framework が面白そう。BrookFramework はversion 4で、組み込みHTTPサーバーが用意されるらしい。Apacheとかの汎用ウェブサーバー不要でサーバーサイドが書ける。イメージとしては、Node.jp の Pascal版という感じか。

因みに、元々Lazarus(というかObject PascalというかFree pascal)には、FCL-Webというライブラリ群に、FPHTTPServerというクラスのが用意されていて、ごく簡単にHTTPサーバーを実装できる。Exeの実行ファイル一つにHTTPサーバとDBサーバとクライアント機能が全て含まれているとか、超絶に楽。

しかも、RESTインターフェースだけでなく、ウェブインターフェースを追加して、クライアント側は、単に

http://localhost/

ってブラウザで打てば普通のウェブアプリケーションみたくログインして使えますよ~、みたいな。スマホからも使いたい?、問題ないですねぇ。スマホのアプリやデスクトップのクライアントを使いたいですか?ありますよ~、好きなの選んでくださいね~、みたいなのが理想。

Leave a Reply