前回は、長年の開発とメンテナンスを繰り返した結果、肥大化、冗長化した「IBM i(AS/400)」のアプリケーション資産をスリム化する方法を提示させていただいた。今回はスリム化後のIBM iのままで実現できるオープン化について紹介する。
レガシーとオープンは何が違うのか
さまざまなモダナイゼーションに関連する記事や資料を調査すると、中にはオープンシステムの対義語としてレガシーシステムがあるイメージで書かれたものも見受けられる。この両者の明確な定義は難しいが、オープンシステムの逆は、例えば特定のソフトウェアベンダーの独自の仕様で外部連携や応用が効きにくいなどのクローズドなシステムで、レガシーシステムで無いことは確かである。その証拠に1990~2000年代にかけて作られたレガシーなオープンシステムはモダナイゼーションの対象として良く話題に上がり、リプレース案件としてはメインフレームやオフコンのモダナイゼーションより遥かに多いという事実がある。
レガシーシステムはそれを発展させる技術基盤の進歩が止まり、アプリケーションが硬直、非効率性を増長させ、応用が利かなくなったものであり、オープンシステムもその対象となり得る。
すぐ着手できる簡単オープン化例
IBM iはその長い歴史の中で、その時代時代におけるオープンシステムのアーキテクチャを実装、進化を継続している基盤ソフトウェア(ハードウェアはPower Systems)である。
例えば、Client Server System(C/S)、Common Gateway Interface(CGI)、Service Oriented Architecture(SOA)、Representational State Transfer (REST)などのアーキテクチャやスタイルは時代に合わせて実装しており、以下のように簡単に実装できる。
1:リレーショナルデータベース管理システム(RDBMS)とのC/S
「DB2 for IBM i(DB2 for i)」は、他のオープン系RDBMSと全く同じ使い方、実装が可能である。Java Database Connectivity(JDBC)、Open Database Connectivity(ODBC)などのAPIで接続でき、クライアント側からSQLを使ったデータの取得、操作、さまざまな開発ツールでのアプリケーション開発ができる。
この手法はレガシーではあるが、非常に可用性が高い。今までオープンシステムの取り組みをやってこなかったIBM iユーザーにとっても導入しやすい、陳腐化していない技術である。
2:Integrated Web Service Server(統合アプリケーションサーバー)の活用
IBM iに標準搭載のアプリケーション(AP)サーバーで、当初は独自性が強かったが現在は標準化が進んでいる。IBM iのOSバージョンアップに伴い機能を積極的に拡張しており、IBM iのプログラミング言語としてポピュラーな「RPG」や「COBOL」をSimple Object Access Protocol (SOAP)のウェブサービスとしてデプロイする機能を実装した。現在はRepresentational State Transfer(REST)サービスにも対応している。
手軽なのは、サービス登録用に準備されたウィザードに従ってIBM i上のRPGやCOBOLのプログラム名、パラメータを指定するだけで、REST呼び出しをするサービスをデプロイできる。
根本からやるプログラムの再構成
前回の記事で部品化、共通化を経てスリム化、単純化したアプリケーションは、ある程度業務機能としては細分化したつもりでも、デジタルトランスフォーメーション(DX)に対応できる、小さくマイクロな構造になっておらず、モノリシック(1枚岩)の作りからはまだ脱却できていない。
システム機能視点で更なる分割と共通化が必要であり、例えば一つのプログラム内で印刷とデータベース更新を実施していた場合、機能分割と他のプログラムから分割された類似機能との共通化を実施しなければならない。この結果として、マイクロサービスで構築するシステムのメリットであるアプリケーションの可搬性、柔軟性の向上や管理の自動化を享受できるようになる。前述の簡単なREST化を更に本格化するためのアクションの位置づけとなる。
ただ、モノリシックな作りにもメリットがある。分割した外部モジュールが少なければモジュール間の通信も少なく、高速な動作が可能である。要は適材適所で、ウェブサービスで活用されないプログラムまでマイクロ化することは無いということである。
よってマイクロ化は、DXに向けて業務アプリケーションを解析し、第1回と第2回で紹介した機能ごとに4象限で評価し、1.に分類されたアプリケーションに対して実施するのが良い。4.に関してはある程度、第3回で紹介したダイエットは実施するが、モノリシックなままで利用するのが良いであろう。
- 機能分割、刷新
- 機能追加
- 機能縮小、廃棄
- 現状維持