1. RPO/RTOを限りなくゼロに Db2 Mirror for i
今回一番注目を集めている機能Db2 Mirror for iとは、DBサーバーの障害に対して、データ欠損とダウンタイムを、限りなくゼロに近づけた冗長化を実現する機能だ。DX時代、システムがお客様のあらゆる業務に組み込まれることで、システムはますます信頼性が求められる。Db2 Mirror for iは、IBM i をこれまで以上にミッション・クリティカルなアプリケーション要件にも対応させるものであり、基幹システムに最適なプラットフォームとしてのポジションを絶対的なものにする機能拡張といえる。 Db2 Mirror for i を実装するためには、同一サイト内に設置された2台のIBM i ノードをミラーペアとして設定し、RoCEという高速ネットワークで接続する。そして、ミラーペア・ノードが相互にデータ更新してデータベース関連オブジェクト等を高速同期させる。RoCEは非常に高速なネットワーキングが要求されるため、サポートされる最大ケーブル長は100mで同一サイト内のノード設置が想定される。本機能は追加でソフトウェアライセンス(5770-DBM)が必要である。 Db2 Mirror for iは主に以下のような使い方が可能だ。- ノード障害、計画停止の切り替えの時間の最小化
- 停止時間なしのOSローリング・アップグレード
- アクティブ-アクティブ構成による負荷分散・ワークロードバランシング(2つのDB2 for i の双方でデータ更新を行い相互に同期的に更新する)
2. JTOpen JDBCの接続先自動切換え
万が一障害が発生し、バックアップとしてスタンバイしているデータベースに切り替える必要が出てきた場合、手動での切換えに時間を要すると、システム停止時間が長くなり、業務への影響は大きくなる。その自動化の手段として、JTOpenのJDBCの接続先自動切換え機能が提供された。 JTOpenとはIBM i ライセンスプログラムのToolbox for Javaのオープンソース版のことでIBMのサポートも受けることができる。このJTOpenのJDBCドライバーが代替サーバーフェイルオーバーをサポートするよう拡張された。この機能はDb2 Mirror for iだけでなく、多くのお客様で利用されているHAソリューションでも活用が可能だ。 従来は接続が失われた際に、アプリケーションレベルで、バックアップ・サーバーとの新しい接続を再確立する必要があったが、この拡張によりドライバーレベルで接続切換えが自動化される。3. クラウドや他システムとの連携を強化するデータベースへのAPI接続
“水平統合”の機能強化というIBM iの進化の方向性はV7.4でも維持されている。IBM i V7.3ではクラウドや他のアプリケーションとの接続を強化するRESTful APIでRPGやCOBOLなどのプログラムを呼び出す機能が追加された。そしてV7.4では新たに、データベースのデータをRESTfulAPIで読み書きすることができる様に機能拡張された。仕組みとしてはIWS(Integrated Web Service) が外部のアプリケーションとHTTP接続で受信したことをトリガーに、データベースにSQL接続するものだ。この機能強化により、RESTとSQLだけでIBM iのデータベースにアクセスするアプリケーション開発が可能になり、これまでIBM iに馴染みのなかった技術者を含む様々な開発者が一層参画しやすくなることも十分期待できる。4. 新しいオープンソース・パッケージへの対応 R言語への対応など
日々オープンソースの進化は目覚ましく、DXの実現においてもオープンソースが活用される機会は多い。これまでもPHP、Python、Node.jsなどオープンソースの進化の果実がIBM i に取り入れられ続けてきたが、今回ここに新たにR言語が加わった。IBM i の上で稼働し、Db2 for i にODBC接続して利用できる。多くの企業でデータ・サイエンティストの採用が増えているが、IBM i の環境で活用することによって、データ・サイエンティストの分析環境からリアルタイムにデータにアクセスすることができるようになる。R言語は、最も多くの分析用のライブラリーが蓄積されてきた言語のひとつでもあるので、そうした様々なライブラリーを活用しながら分析することがIBM i 上で可能になる。 R言語以外にも、高機能で人気の高いテキストエディターのVim、CUIベースのファイルマネジャーであるMidnight Commander、非同期型のメッセージ・キューイングサービスを提供するActiveMQなどが新しいオープンソース・パッケージとして加わった。 Midnight Commanderは、2 パネル CUI ベースのファイル・マネージャーである。FTP アクセス、ファイル比較、ディレクトリー比較、ファイル編集/移動/コピー/削除など、サブシェル、スクロール・ホイール、マウス、ディレクトリーのサイドビューとツリービュー、ファイル情報の表示と変更などが可能だ。ActiveMQはオープン・ソースのメッセージ・ブローカー (Java ベース)である。OpenWire、STOMP、MQTT、AMQP、REST、WebSocketsといったプロトコルをサポートする。5. オープンソース・パッケージの管理がrpm、yumに
オープンソースに慣れ親しんだ技術者にとって、IBM i でオープンソースを利用するための環境の準備も馴染みやすくなっている。rpmとyum はRedhat系のLinux OSではオープンソース・パッケージの管理の手段として有名だ。rpmはパッケージ一つ一つを管理する。yumは依存関係も含めて管理できるパッケージ管理ツールで、パッケージのインストール、アンインストール、アップグレードを簡単に行うことができる。 これまではIBM i のオープンソースは5733-OPSによって管理されていたが、この方式だと新しいOSSを追加する毎にオプション番号が追加されることになり煩雑な上、依存関係やPTF管理も複雑となってしまう。このためIBM I 7.4発表より以前からOSS管理をLinux系と共通のrpm、yumに改めてきた。IBM i 7.4では5733-OPSによるOSSの提供は行われずrpm、yumによる提供だけとなった。6.大容量 SSDドライブへの対応
水平統合によるアプリケーション連携、オープンソースの活用などを通じてDX時代に対応していくためには、大容量データへのデータアクセスがより重要となる。今回、最大LUNサイズがV7.3の4TBから16TBに拡大された。この拡張によって、7.48TB メインストリームSSDがサポートされるようになった。 IBM i のSSDには、メインストリームSSDとエンタープライズSSDの2種類がある。メインストリームSSDは主にリード処理が多い場合に向いており、エンタープライズSSDはリード、ライト共にあるようなワークロードに適している。7. 重要なジョブにはリソース割り当てを更に細かく設定可能に
DX時代になると、様々なアプリケーションが稼働することとなる。特にデータ分析などはCPUリソースを多く活用することがある。これまでもx86の仮想化ハイパーバイザーと比較しても、PowerVMでは柔軟な資源配分が可能で、これまでもその上で稼働するIBM i はサブシステム単位で使用可能なCPUコア数を制限できるようになっていた。 そして今回V7.4では、更にジョブ単位で利用CPUコア数を制限できるようになっている。同一サブシステム内で異なるワークロード・グループのジョブを実行できるようになり、よりきめ細かくジョブ優先度に応じてリソースを割り当てることにより、安定した運用に繋げることができる。 例えば、先述のようなR言語を利用する際も、基幹システムとして稼働している重要なジョブにはリソースを固定して割り当てるなど、基幹には確実にリソースはアサインしつつ、余剰リソースで分析を行うなど、安定かつ柔軟なシステム運用が可能になる。8.システム・レスポンス向上とセキュリティー対策を両立する 通信規格 TLS 1.3への対応
水平統合のアプリケーションにおいては、クラウドなど外部のアプリケーションと連携するような場合、レスポンスの速いアプリケーション構築が必要となってくる。IBM iは外部のシステム連携に関するセキュリティー対策も、業界の最新技術に対応してきた。 今回のV7.4で安全に通信を行うためのセキュリティー・プロトコルであるTLS(Transport Layer Security)の最新バージョン 1.3に対応した。TLSはSSLの後継ともいわれ、インターネット技術の標準化団体IETF(Internet Engineering Task Force)が策定しているものである。 TLS 1.2ではハンドシェイクにサーバー・クライアント間の往復通信が3回必要だったが、TLS 1.3では1回で済むようになり、特に遠隔地のサーバーの通信が高速化される。ネットワークによる遅延が少なく、かつ、高いセキュアなシステムの構築が実現できるようになり、クラウド連携なども行いやすくなる。9. セキュリティー対策のために、より効率的に権限収集が可能に
世の中の情報漏洩を防ぐに外部からのハッキング対策だけでなく、内部漏洩のリスク対策も重要である。内部漏洩を避けるためには、様々な牽制が必須であり、必要な情報にのみアクセスさせることが、その第一歩となる。 IBM i V7.3 では、特定のユーザーがアクセスするすべてのオブジェクトに関する権限情報を収集することができたが、さらにIBM i V7.4では、ユーザーがアクセスする特定のオブジェクトに関する権限情報の収集ができるようになった。権限収集はCHGAUTCOLという新コマンドで可能となる。収集できるオブジェクトのタイプはQSYS ファイル・システム、”root” (/)、QOpenSys、ユーザー定義ファイル・システム、文書ライブラリー・オブジェクトである。 権限収集を使用することであるアプリケーションを正常実行するために必要な最低限度のアクセス権限を確認することが可能となる。これまではアプリケーション実行時に必要となる最低限のアクセス権限の特定を即座に行う手順がなく、結果として過剰なアクセス権限を付与することで実行時の権限エラーを回避しているケースも見受けられた。しかし、権限収集によりセキュリティー管理者はアプリケーションを正常に実行できるようにするためにオブジェクトに必要な最小限の権限を検討しやすくなった。10. アジリティーの向上など、開発生産性を向上させるRPG/COBOLの機能拡張
DX時代においてはアジャイルにアプリケーションを開発していく必要があるが、開発初期においては最適なデータベース構造が不明確なケースであることはよくあり、データ構造を必要に応じて後から変更することはよくあることだ。その時如何に柔軟に対応できるかは、アプリケーション開発において重要なことである。V7.4でも開発生産性の高めるRPGの機能拡張が多く提供されているが、こうした開発のアジリティーを高めるような機能拡張が特に目立つ。少し技術的な内容になるが、注目度の高い機能拡張のため紹介したい。 まず一つ目が可変配列の実装である。これまでAPIを使うなど複雑な方法を取らない限り、基本的に配列要素数は静的であった。従来RPGの配列要素数を定義する際、DIM(定数)でしか定義できなかったが、DIM(*VAR:n)で定義することで、可変配列を実装できるようになった。この機能拡張はRPG開発者の中でも、開発生産性を上げることにつながる、という声が特に大きく、RPG以外の言語の技術者にとってもRPGをはじめる際に馴染みやすい機能となっている。 静的な記述を動的に行えるという点では、SAMEPOS定義の拡張も同様と言える。これまで、配下にある変数Aに変数Bをオーバーラップさせるデータ構造の場合、OVERLAYを用いて静的にオーバレイ位置指定をしていたケースが多いと思われる。しかし、SAMEPOS(変数名)を使用する事で、静的なオーバレイ位置ではなく、コンパイル時の変数位置によって、より動的に設定ができるようになった。これもまた、データベースのカラム位置が変更になっても、プログラムを改変せずリコンパイルだけで済むというメリットが考えられ、開発のアジリティーを高める。兎にも角にもRPGは、今も進化を続けていると言うことだ。 また、機能拡張されているのはRPGだけでなく、COBOLも同様だ。代表的なものとしては、ソート命令の対象が広がった。従来からDDSで作られた物理ファイルに対してソート命令を使えたが、DDLで書かれたものをテーブルに対してもソート命令が使えるようになった。 ここで紹介しているもの以外にもILE RPG、ILE COBOLは多くの機能拡張が提供されている。ぜひV7.4のKnowledge Centerをご覧いただきたい。11. 運用時に適切な対応がとれるようになる実行管理機能の拡張
IBM i は効率的な運用管理が実現可能であることは、他プラットフォームと比較した場合の圧倒的な魅力の一つである。当然V7.4においても運用管理機能の強化はされており、代表的なものを取り上げたい。 その一つは、ジョブ状況をより細かく追跡、管理するための様々な実行管理機能の拡張だ。新しい APIのQWTRAPJSは、アクティブな事前開始ジョブ状況を取得でき、DSPACTPJコマンドと同様、処理されたリクエスト数、待機中、ピークなどに関する統計を返すAPIである。 事前開始ジョブの例としてODBCやJDBC接続時のサーバージョブとなるQZDASOINITジョブがある。QZDASOINITジョブのようにジョブ開始のシステムコストが高く(ジョブをあたらに起動するとジョブ応答時間は劣化する)、かつジョブが無用に多く常駐するとシステム負荷が高くなってしまうようなものが事前開始ジョブとして実行されるため、このAPIを使って事前開始ジョブの実行ステータスをアプリケーションで取得することができればジョブ応答時間とシステム負荷の最適化に役立てることができる。 システム管理者が、システムの状況を見ながら、「今週はこれくらい」とマニュアルでシステムのパラメータ設定をしているケースがあるが、自動で変更できるようになる。Eコマースなどでデータベース接続の負荷の変動が激しいアプリケーションの場合は特に有効である。12.日々の運用効率を向上させるDSPLOG コマンドの検索機能向上
従来、DSPLOGコマンドでログを検索する際、たとえば特定のユーザーのログを確認した場合、ジョブ名、ユーザーID、ジョブ番号の3つを指定する必要があったが、いずれか一つの指定でも検索可能となり検索の効率が飛躍的に向上する。実はこの機能は開発者や運用担当者から、“最も嬉しい機能拡張ナンバーワン”に選ばれた機能拡張でもある。拡張してほしい機能を次のバージョンに反映させよう
IBM i はAS/400と呼ばれていたころから、常に進化を続けてきた、V7.4でもAIやクラウド時代に適応しながら、更なる可用性の向上など、基幹システムを稼働させるプラットフォームとして多方面に進化を続けている。 今回のV7.4の機能はユーザーからのリクエストを受けて、取り入れられたものも多い。開発者からのリクエスト(RFE)を受け付けるIBMのWebサイト「IBM RFE Community」より、リクエストを出すことができ、どのようなリクエストが出されているか見ることができる。そして閲覧者は賛同するリクエストに対して”投票(Vote)”することができる。要望の多い機能追加にはVoteの数が多くなり、より検討の優先度が上がる仕組みとなっている。 今回のV7.4においてもイタリアの開発者のリクエスト(ID:90712)、カナダの開発者のリクエスト(ID:121317)など、世界中の開発者のリクエストが反映されている。まだアクセスしたことのない方もVoteからはじめてみることにより、IBM i の開発に参加することができるのだ。ぜひ日本のIBM iをご利用になられている皆様も希望する機能改善があれば、RFEをリクエストを申請してみてはいかがだろうか? (写真)2019年5月20日にオムニサイエンス社で開催されたIBM i V7.4 について語る座談会。様々な形でIBM i に関わるメンバーが集い、期待する新機能について、開発者の視点で意見交換を行った。今回の記事においても座談会でとりあげた内容を参考にした。筆者
日本アイ・ビー・エム株式会社 サーバーシステム事業部
Power Systemsテクニカルセールス 佐々木 幹雄
日本アイ・ビー・エム株式会社 サーバーシステム事業部
IBM i 統括部 下野 皓平