キヤノンのグローバルサーバーの機能は、大きく2系統に分けることができる。
一つは、膨大な数の複合機(IoTモジュール)から送出されるデータを「受信/加工/格納」する機能だ。また、もう一つは「参照」系の機能であり、こちらは加工されたデータを販社/販売店が(ポータル環境を通じて)参照したり、販社/販売店システムとの連携インタフェースを提供したりするための仕組みである。
「このうち、今回のグローバルサーバー刷新における最大の挑戦であり、改革の肝ともいえるのが、受信/加工/格納系の機能の刷新です。具体的には、インメモリデータグリッド『Oracle Coherence』や複合イベント処理基盤『Oracle Event Processing(OEP)』といったオラクルの先進技術を使い、受信/加工/格納の仕組みをOracle Exalogic上に一から作り直したのです」(落合氏)
例えば、従来のグローバルサーバーでは、アプリケーションサーバーがIoTモジュールからの通信を受信すると、まず受信データのパースが行われ、次に「振り分け処理(データの種類に応じた処理の振り分け)」「フィルター処理(不要なデータを取り除く処理)」「履歴登録処理」「サマリ処理」などが実行される。そして、これらの処理が行われる度に、データベースサーバー(UNIXサーバー上のOracle Database 10g)へのアクセスが実行され、ストレージに対するデータの書き込み/読み出しが行われていた。そのため、「データベースサーバー側のI/O性能が、どうしても受信/加工系処理のボトルネックになっていたのです」(落合氏)。
これに対して、次世代グローバルサーバーでは、Oracle Exalogic上で動作するOracle Coherenceを受信/加工系処理とデータベースサーバーとの間に介在させることで、データベースサーバーに対するI/Oリクエストを削減し、全体としての処理性能を高めている。つまり、受信/加工系処理におけるデータキャッシュとしてOracle Coherenceを機能させているわけだ。
この仕組みでは、例えばIoTモジュールから受信したリクエストへの応答を、データベースサーバーを介さずにOracle Coherenceから直接IoTモジュールに返すといった処理が実行される。これにより、グローバルサーバーの受信処理性能が大幅に向上し、大量のIoT通信を難なくさばくことが可能になった。
さらに、Oracle CoherenceからOracle Exadata上のOracle Database(11g)に対するデータの書き込みについても、Oracle Exadataの高速キャッシュ機能「Write-back Flash Cache」によって高速化されている。
「これらの施策により、次世代グローバルサーバーでは受信/加工/格納といった内部処理の性能が従来の約10倍に高速化されました。また、IoT通信のレスポンス性能も約5倍に向上しています」(落合氏)
一方、従来のグローバルサーバーでは、受信データの処理順序を含め、全ての受信処理がプログラムのソースコードに記述され、アプリケーションサーバー上で実行されていた。この受信処理プログラムが、次世代グローバルサーバーではOEPベースで全て書き換えられた。これにより、受信/振り分け/フィルター/履歴登録/サマリといった各処理が“イベント化”され、それぞれの独立性が高まっている。その結果、処理ロジックの追加/変更の手間やコストが減り、「機能拡張が柔軟に行えるになった」と落合氏は評価する。また、一つの処理(イベント)の稼働中に他の処理(イベント)を停止させ、メンテナンスを行うといったことも可能になったという。
このような具合にグローバルサーバー上の受信/加工/格納系処理の大改造を進めたキヤノンだが、参照系のプログラムにはほとんど手を加えず、従来の「UNIXサーバー+Oracle Database 10g」から「Oracle Exadata+Oracle Database 11g」への移行だけで済ませたと落合氏は明かす。ただし、それでも“Oracle Exadata効果”により、バッチ処理の性能は従来の約2倍に向上し、既存のプログラムも新環境で問題なく動作した。そうした状況を目の当たりにして、「改めてOracle Exadataの出来の良さ、過去のOracle Database資産との互換性の高さを実感しました」と落合氏は振り返る。
また、キヤノンはグローバルサーバーの可用性を高める目的で、オラクルのデータレプリケーションツール「Oracle Active Data Guard」によるDR(Disaster Recovery:災害時復旧)の仕組みも整えている。Oracle Active Data Guardを通じてプライマリサイトとDRサイトのOracle Exadata間でリアルタイムなデータ同期を行っているわけだ。
加えて、プライマリサイトには2セットのOracle Exadataが設置され、こちらもOracle Active Data Guardでデータを同期し、サイト内ローリングによる無停止メンテナンスを実現している。ちなみに、DRサイトのOracle Exadataは、平常時には開発/検証環境として活用し、ITリソースの有効活用を図っている。
さらに、グローバルサーバーの連続稼働性を確保するという意味では、「新旧システムの安全な移行/切り替え」も重要となるが、キヤノンは今回、これを実現するためにユニークなアプローチを採った。新サーバーの動作確認を入念に行うために、オラクルのサービス連携基盤「Oracle Service Bus」を用いて新旧グローバルサーバーを並行稼働させたのだ。
具体的には、まず新旧グローバルサーバー間で参照系データベースの内容を一致させておき、その上で複合機(IoTモジュール)と新旧グローバルサーバーの間にOracle Service Busを配置。複合機から送られてきたデータをOracle Service Busで受け取り、本体と複製の二つに分けて新旧グローバルサーバーに流し込ませるようにした。そして、新旧グローバルサーバーで同内容のデータに対する処理を実行。それぞれのデータベースの内容を比較して、両者が一致しているかどうか、つまり新グローバルサーバーが正しく動いているかどうかを検証したわけである。
もちろん、この検証中に複合機に対して新グローバルサーバーから応答が返されてしまうとシステムに異常を来す。そこで、複合機に対する同サーバーからの応答はOracle Service Busで破棄/遮断し、旧グローバルサーバーの応答だけを通すようにした。こうして、キヤノンは稼働中のサービスへの影響を最小限に抑えて新旧グローバルサーバーの安全かつ確実な移行/切り替えを実現したのだ。
Copyright © ITmedia, Inc. All Rights Reserved.
提供:日本オラクル株式会社
アイティメディア営業企画/制作:@IT 編集部/掲載内容有効期限:2015年4月24日
驚異的なパフォーマンス、優れた運用効率、最高の可用性とセキュリティ、クラウド対応を実現するOracle Exadataとの統合、クラウド、可用性や運用管理など、次世代データベース基盤構築のために参考になる必見資料をまとめてご紹介いたします。