2025.05.29
これまでの連載では、クラウドの利用や Java, .NET との連携といった、COBOL のモダナイゼーション例を紹介しました。今回は、マイクロサービスの利用例を中心に紹介します。
COBOL 言語で構築された基幹システムは、モノリシック、一枚岩のシステムと称されています。モノリシックなシステムは、一般的に機能間の結合度が高く、改修時の影響調査などに時間がかかります。また、性能向上の対策として採用されるスケールアウトは、システム全体が対象となり、安価に実施できないといった課題があります。
モノリシック構成の対抗として、マイクロサービスの導入が挙げられます。その名前が示す通り、サービスの粒度を小さくすることで改修時や障害時の影響範囲が局所化され、迅速な改修が行えます。
これらの、様々な COBOLコンパイラは、すべて ISO国際標準に準拠しつつも、多くの場合、それぞれ独自の COBOL構文を追加でサポートしています。これを COBOL言語の「方言 (dialect)」と呼びます。方言は、主としてプラットフォームに特化したアプリケーション開発を簡易化し、生産性を向上させるために用意されています。その一方で、このような方言を使用して書かれたプログラムはポータビリティがなく、時としてモダナイゼーションの障壁となります。
このように優れた特長を持っているマイクロサービスですが、実は誤解しやすいポイントがあります。ここでは代表的なものを二つ、ご紹介します。
冒頭でサービスの粒度を小さくすることがマイクロサービスだと説明したばかりなのに、これが誤解なの?と思われたかもしれません。しかし、サービス粒度を小さくすることに焦点を当てすぎると、モノリシックなシステムにはなかった以下のような問題が発生することがあります。
このような問題を回避するためには、サービスの粒度を適切に定めることが重要です。粒度を定めるための切り口として、機能面、すなわち、サービスの範囲を基点に考える方法や、参照されるデータを基に考える方法などが広く知られています。最近、話題になるモジュラーモノリスもこのような問題を解決するための構成の一つといえます。
一般的にマイクロサービスは、 Java, .NET, Node.js などの開発言語で実装されていることから、このような比較的新しい言語でしかマイクロサービスを開発できないのでは?と思いがちです。これは、正しくもあり間違いでもあります。新たなサービスを開発する際に、その時点で最適な言語を選択することの正当性は疑いようもありませんが、既存機能をサービス化する場合はどうでしょうか。時間とコストをかけて作り直すことで得られる最良の結果は、今お持ちの機能と同じものです。もしかすると、仕様漏れや不具合によって現在の品質に届かないかもしれません。このリスクを背負いながら、再開発のコストや時間の投資を加味すると、ビジネス視点においても GOサインが出ない可能性は大きくなります。
DX 対応に求められる重要な要素の一つに「テクノロジの適材適所利用」という項目がありますが、使用するテクノロジが、将来にわたり、適切に保守・管理が行えることが重要です。また、それらを利用するシステム・サービスは、新たに開発するものだけではなく、既存システム・サービスも含まれます。
このような点を総合的に考慮した結果、マイクロサービスの開発言語として Java , .NET, Node.js が選択されたのではないでしょうか。
では、COBOL はどうでしょうか。もちろん、COBOL も既存システムのサービス化を行う際は最適な選択となりえます。その理由をご紹介します。
これまでテクノロジの発展に伴い、多くの開発言語が登場し、衰退していきました。また、同じ言語であっても、言語自体のバージョンアップによる変更や、新たなフレームワークやライブラリの登場に伴い、新たな設計方針が導入され、知識の刷新が求められた言語もあります。
しかし、COBOL は違います。60 年以上という長い歴史の中で国際規格によって定められた言語仕様は、これまでの挙動を保証しつつ、様々なプラットフォーム上で同じ動作を実現してきました。COBOLは、事務処理を担うプログラマーにも分かりやすい言語を目指した結果、属人性の低いコード記述が可能で高い保守性を持ち、短期間での習得が可能という強みを持っています。こちらについては、別の連載記事にて詳しく説明しております。
国際規格で言語仕様が保護されているからこそ、これまでと変わらず保守・管理が行え、既存の事務処理や数値計算で従来と同様の結果を出し続ける、これが COBOL の強みです。
では、COBOL 資産をサービスとして運用を、と進みたいところですが、課題が残っています。サービス開発で重要なことは、適切な保守や管理が行えるよう粒度を設定することにくわえ、最新技術との連携も必要になります。しかし、弊社のモダナイゼーション支援製品は、これらの解決策を提供しています。
まず、サービスの適切な粒度設定には、Enterprise Analyzer 製品をご利用いただけます。本製品につきましては、以前の連載記事にて紹介しておりますので、そちらをご参照ください。
また、本製品の一部機能が弊社の COBOL 製品に搭載されており、COBOL 製品単体でも、資産の棚卸しやサービス粒度の検討作業を支援しつつ、対象ロジックの抽出が行えます。
最新技術との連携といった点では、COBOL 製品は、クラウド環境やコンテナ型仮想化技術に対応しているだけではなく、様々な最新環境や技術と連携できます。特に、マイクロサービスとコンテナ型仮想化技術は相性がよく、多くのマイクロサービス運用例にてコンテナ型仮想化が利用されています。
では、COBOL 製品を利用したマイクロサービスやモジュラーモノリスの実現方法について、2つ紹介します。
前回の記事で紹介しましたように、COBOL 製品には COBOL 専用のアプリケーションサーバーが搭載されており、RESTful Web サービスとして COBOL 資産を利用できます。
もう一つのJava バイトコードや .NET アセンブリにコンパイルを行い、Java, .NET 技術を利用した運用方法ですが、こちらは Java や .NET 上で COBOL 資産を利用する方法です。自社が保有する知識や資産を活かして Java, .NET のサービス基盤上で COBOL のモジュールをあたかも Java や .NET 言語のように呼び出すことができます。こちらで機能を紹介しておりますので、ぜひご覧ください。
弊社の COBOL 製品を利用することにより、既存資産を活用したマイクロサービス運用を短期間で実現することができます。
ロケットソフトウェアのCOBOL製品は、エンタープライズ・アプリケーションの開発、保守、拡張、統合を強力に支援しています。貴重な既存資産を、Java、.NET、Webサービスなどの最新テクノロジーと連携させ、低コスト低リスクで、ビジネスの変化に迅速に対応するシステム構築を支援します。
Enterprise Analyzer は、複雑な既存システムからビジネスおよび技術のナレッジベースを収集・抽象化し、ビジネス上重要なアプリケーションの理解と分析、優先順位付けなどを可能にします。これにより、アプリケーションの更新や再利用、保守作業等を効率よく行うことができます。
COBOL資産モダナイゼーションに関するご不明点、懸念点などがございましたらお気軽にご相談ください。弊社技術者が、お客様の課題を丁寧にヒアリングし、最適な資料のご提供、製品評価版のご案内、移行性に関するカウンセリングなどを行います。