テレワークでも需要が増す既存の企業システムへのアクセス性提供
多くの企業がテレワークを進める中、クラウドベースのサービスに移行していない既存の社内システムへのアクセスをどのように実現するかが課題のひとつとなっています。VPNを用いたアクセスは従来からの手法ですが、本格的な業務を行う上で、より快適かつ効率的な方法が求められています。この問題は、ここ数ヵ月で突然発生した課題ではなく、従来から既存の企業システム(特にクライアントサーバー型の従来システム)を他システムと連携させる、つまり「コネクティビティの確保」という問題として存在していました。
既存システム資産の拡張を妨げているもの
従来型のクライアントサーバー型のシステムは、クライアントアプリケーションが直接企業内のRDBMSに接続し、データの参照や更新を行います。同じネットワーク環境内にある両者は、セキュリティ上の問題もなく、十分なパフォーマンスで通信が可能です。
クライアントアプリケーションはRDBMSにのみ接続することで、情報を共有します。同じシステムにアクセスするユーザーは、同じデータを参照することで、共同作業が可能になります。
現在のシステムは、複数のシステムが互いに連携しあうシステム系によって成り立っています。在庫管理システムは、在庫のデータを扱うだけでなく、入出庫管理や配送管理システムと連携し、一連のデータが矛盾することなくすべてのシステムで関係を持ちます。
クライアントサーバー型のシステムで、この連携を実現しようとすると、クライアント側で他システムに接続するか、サーバー側で別のプログラムを実行し、連携を実現するようにしなければなりません。こうした拡張は、閉じたシステムとして設計された古いクライアント―サーバー型システムにとっては、大規模な改修になります。
また、セキュリティ上のリスクも見逃すことはできません。クライアントから直接データベースにアクセスする従来型のクライアントサーバーアプリケーションでは、データのやりとりが暗号化されておらず、セキュリティ上の問題があるからです。テレワークのような外部からアクセスにおいては、VPNを用いない限りセキュリティリスクが伴います。
短期的に実現するハイブリッド多層化のアプローチ
現状のシステムを改修するという選択肢を採用した場合、「システムを止めない」「新しいシステムへの円滑な移行を保証する」「限られた予算内でやりくりする」といった高いハードルが課せられます。一方、現行システムはそのままに、新たに他システムとの連携を前提としたサブシステムを追加するという考え方はどうでしょうか。
他システムとの連携では、サーバー型、より厳密にいえば、データベースとクライアントの間に位置する「中間層」に機能を実装します。既存システムを構成するRDBMSにとって、この中間層はクライアントのひとつです。言い換えれば、異なる形態のクライアントがひとつ追加されただけです。このような構成は、既存アプリケーションを従来どおり稼働させたまま、中間層を追加実装できる「ハイブリッド型」と言えます。
ハイブリッド型を採用するメリットは明白です。既存アプリケーションはそのまま稼働し続けますから、「システムを止めない」を保証します。また、既存アプリケーションについて「移行」は発生しませんから、「円滑な移行を保証する」必要もありません。そして何より、作成するのは中間層のみですから、低コストでの実装が可能です(何よりテストスコープが限定される点が重要です)。
システム連携、あるいは他システムからの利用という観点からすれば、すべての機能を中間層に実装する必要がない点に注意してください。連携を行う際に必要となる機能のみが実装されていれば、目的は達成できるからです。
また、社外からのアクセスという観点でも、中間層を経由したアクセスにはメリットがあります。従来型のクライアントサーバー型にはない、セキュアなデータアクセスが実現できるからです。
RAD Serverによる実装
Delphi / C++Builderによって構築されたアプリケーション資産がある場合、そのビジネスロジック(データアクセスや関連する処理)をRAD Serverを用いることで、容易に中間層に配置できます。そのロジックは、従来からのDelphi / C++Builderコード(データアクセスコンポーネントをはじめとする非ビジュアルコンポーネントを含む)を再利用しながらも、REST/JSONといった現在広く利用されている相互接続の技術を用いて他のシステムからも利用可能になります。
RAD Serverを用いる利点は、ビジネスロジック(RAD Serverリソースと呼ばれます)を容易にサーバー環境に配置できること、データアクセス、ユーザー管理/認証などの機能があらかじめ用意されていること、従来のアプリケーション開発と同様のコンポーネントのドラッグ&ドロップによるビジュアル開発が可能なこと(データモジュールの開発に類似しています)が挙げられます。開発済のコードを再利用し、従来からの開発スタイルを変えることなく、すばやく他システムからの接続性を提供できるのです。
RAD Serverを用いてハイブリッド構成を実装すると、次のような構成のシステムが実現できます。
RAD Serverリソースは、DelphiまたはC++Builderで開発することができますが、そのコードはネイティブである点に注意してください。RAD Serverリソースは、必要に応じて他のDLL(Visual C++などで作成したものを含む)や外部システム(低レベルの接続や独自の接続方式を用いた旧システムを含む)を呼び出すことができます。つまり、RAD Serverをハブとして、他の技術を用いて構築された旧システムの統合も可能なのです。
Linuxプラットフォームによる運用コストの削減
中間サーバーを構築する場合、その稼働環境をどこに設置し、その運用コストをどのように最小化するかは、もうひとつの課題となります。クラウドサービスが提供するLinuxプラットフォームは、すばやく低コストで運用環境を用意する最適な手段です。
RAD ServerリソースをDelphiによって構築すると、もうひとつのメリットが生まれます。それは、単一のソースコードで、WindowsとLinuxの2つのプラットフォームに対応できることです。Delphiが提供するクロスプラットフォーム開発技術は、サーバーサイドにも応用されており、データアクセスやREST/JSONなどの処理を行う非ビジュアルコンポーネントは、WindowsとLinuxの双方で利用できます。その結果、Delphiコンパイラを切り替えるだけで、ターゲットプラットフォームを、Win32、Win64、またはLinux64に設定し、これらのプラットフォーム向けのネイティブコードを生成できます。
Linuxプラットフォームを選択した場合、コスト面でのメリットに加えて、配布の容易さも享受できます。Dockerは、ソフトウェアをパッケージングして提供できるOSレベルの仮想環境ですが、エンバカデロでは、RAD Server向けのDockerコンテナを提供しています。Dockerを用いることで、特定の設定を行ったRAD Serverをひとつのパッケージングとして用意でき、中間サーバー環境を配置するための「セット」として用意できます。その結果、RAD Server稼働環境のセットアップや再配置にかかる工数を削減し、柔軟かつ迅速な中間サーバーの保守、管理を実現できます。