メインフレームのバッチ アプリケーションを Azure でリエンジニアリングする

Azure Data Factory
Azure Databricks
Azure Kubernetes Service (AKS)
Azure SQL データベース
Azure Storage

このリファレンス アーキテクチャは、Azure を使用して z/OS メインフレームのバッチ アプリケーションをリエンジニアリングし、安全でスケーラブル、かつ可用性の高いシステムを Azure のクラウドに実現します。 ビジネス ニーズは絶えず進化するため、データとアプリケーションの提供とスケーリングは、既存のインフラストラクチャに影響を及ぼすことなく行う必要があります。 クラウドへのリエンジニアリングは金融、医療、保険、小売業界の企業は、商品や機能を市場に出すまでの時間を短縮し、コストを削減するのに役立ちます。

メインフレームのアーキテクチャ

最初の図は、z/OS メインフレーム上で実行される一般的なバッチ アプリケーションのアーキテクチャを示しています。

z/OS メインフレーム上で実行される一般的なバッチ アプリケーションの図。

このアーキテクチャの Visio ファイルをダウンロードします。

ワークフロー

  1. メインフレームのバッチ処理は、OPC (Operation、Planning、Control) スケジューラを使用して設定した時刻にトリガーできます。 また、ファイルが作成されたことを知らせるメッセージなど、メッセージ キューに格納されたメッセージでトリガーすることもできます。

  2. DASD (メインフレーム ダイレクトアクセス ストレージ デバイス) は、アプリケーションで必要なフラット ファイルなど、入力ファイルと出力ファイルを格納するために使用されます。 DASD ストレージ上にファイルを作成することでバッチ処理をトリガーできます。

  3. バッチ処理は、ユーザー プログラムやシステム プログラムを内部的に実行して特定のタスクを実行するジョブなど、一連のジョブの実行です。 通常、バッチ処理はユーザーの対話式操作なしで実行されます。 メインフレーム上のすべてのバッチ ジョブは JES (Job Execution System: ジョブ実行システム) の制御下で実行されます。

  4. バッチ処理のプログラムは、次の場所との間でデータの読み取りと書き込みを行うことができます。

    • VSAM (Virtual Storage Access Method: 仮想記憶アクセス方式) などファイルベースのデータベース。
    • Db2 や Informix などのリレーショナル データベース。
    • IMS (Information Management System: 情報管理システム) などの非リレーショナル データベース。
    • メッセージ キュー。
  5. ジョブ実行の出力は、OPC スケジューラまたは TWS (Tivoli Workload Scheduler) を使用して監視できます。 メインフレームでは、ジョブ実行状態のチェックに JES の SDSF (System Display and Search Facility: システム表示/検索機能) も使用されます。

  6. 管理階層には、次のサービスがあります。

    • Endevor や Changeman などのソース管理。
    • RACF (Resource Access Control Facility: リソース アクセス管理機能) などのセキュリティ。 バッチの実行、ファイルへのアクセス、データベースへのアクセスに関する認証は、このセキュリティによって提供されます。
    • ジョブ実行ログの保管と検索をサポートする出力管理。

Azure アーキテクチャ

2 つ目の図は、機能と柔軟性を追加した同様のアプリケーションを Azure サービスでリエンジニアリングする方法を示しています。

Azure サービスを使用してリエンジニアリングしたバッチ アプリケーションの図。さまざまなサービスの例が含まれています。

このアーキテクチャの Visio ファイルをダウンロードします。

ワークフロー

  1. Azure バッチ処理は、次のいずれかのトリガーを使用して開始します。

    • Azure Databricks ジョブ スケジューラまたは Azure Function スケジューラを使用する。
    • Azure Logic Apps を使用して定期バッチ処理タスクを作成する。
    • Azure BlobFile Storage 内のファイルの作成と削除など、ストレージ イベントを使用する。
    • Azure Service Bus へのメッセージの着信など、メッセージベースのトリガーを使用する。
    • Azure Data Factory トリガーを作成する。
  2. メインフレームから移行されたファイルを、Azure Blob Storage または Azure Files を使用して格納します。 Azure 上にリエンジニアリングされたバッチ処理は、このストレージとの間でデータの読み取りと書き込みを行うことができます。

  3. Azure には、メインフレームのバッチ ワークロードを実装するためのさまざまなサービスが用意されています。 ビジネス要件に応じた具体的なサービスを選択してください。 たとえば、必要なコンピューティング能力や実行時間の合計、メインフレームのバッチ処理を小さな単位に分割する機能、コスト感受性があります。

    1. Azure Databricks は、Apache Spark ベースの分析プラットフォームです。 ジョブは、R、Python、Java、Scala、Spark SQL の各言語で記述できます。 高速なクラスター起動時間、自動終了、自動スケーリングを備えたコンピューティング環境が利用できます。 Azure Blob Storage や Azure Data Lake Storage といった Azure Storage との統合が組み込まれています。 短時間に大量のデータを処理する必要がある場合は、Azure Databricks を使用してください。 ETL (抽出、変換、読み込み) ワークロードの実行が必要な場合にも適しています。
    2. AKS と Service Fabric は、サービスベースのアプリケーション アーキテクチャを実装するためのインフラストラクチャとなります。 単一のアプリケーションに対するコスト効果は高くない可能性があります。 メインフレーム アプリケーションは、Java Spring Boot を使用してリファクタリングできます。 Azure 上で Spring Boot アプリを実行する最善の方法は、フル マネージドの Spring サービスである Azure Spring Apps を使用することです。 Java 開発者は、それを使用して、Azure 上に Spring Boot のマイクロサービスを簡単に構築して実行できます。
    3. メインフレームのバッチ アプリケーションは、.NET または Java を使用してリエンジニアリングできます。 Batch は、そのアプリケーションを大規模に実行するためのインフラストラクチャとなります。 仮想マシン (VM) のプールを作成、管理し、アプリケーションをインストールして、それらの VM 上で実行するジョブをスケジュールします。 インストール、管理、またはスケーリングするクラスターまたはジョブ スケジューラ ソフトウェアはありません。 Windows または Linux でサポートされるあらゆるプログラミング言語でアプリケーションを記述できます。
    4. 実行時間の短い COBOL または PL/1 バッチ プログラムは、リエンジニアリングすることができます。 これらのプログラムには、Functions、WebJobs、Logic Apps などの Azure サービスを使用します。
  4. Azure には、データを格納したり取得したりするためのさまざまなデータ サービスが用意されています。

    • Db2 や Informix といったメインフレームのリレーショナル データベースは、ごくわずかな変更で、Azure のリレーショナル データベース オファリングで扱えるよう移行できます。 そのようなリレーショナル データベース サービスには、Azure SQL VM、Azure SQL DB、Azure SQL MI などが挙げられます。 Azure PostgreSQL など、オープンソースの RDBMS (Relational Database Management System: リレーショナル データベース管理システム) を使用することもできます。 Azure データベースの選択は、ワークロードの種類、複数データベースにまたがるクエリ、2 フェーズ コミットの要件など、さまざまな要因に左右されます。
    • IMS、IDMS (Integrated Data Management System: 統合データ管理システム)、VSAM など、メインフレームの非リレーショナル データベースは Azure Cosmos DB に移行することができます。 Azure Cosmos DB は、高速な応答時間、自動かつ瞬時のスケーラビリティ、あらゆる規模で保証された速度を特徴としています。 サイズも規模も不定な、予測できないワークロードや散発的なワークロードで、コスト効果に優れた選択肢となります。 キャパシティを計画したり管理したりすることなく容易に開発をスタートすることができます。
    • リエンジニアリングしたアプリケーションは、Azure Cache for Redis を使用して高速化できます。
  5. アプリケーション、OS、Azure リソースは、エージェントを使用してログやメトリックを Azure Monitor ログに送信できます。

    • Application Insights は、移行されたアプリケーションを監視します。 パフォーマンスの異常が自動的に検出されるほか、問題の診断に役立つ強力な分析ツールも備えています。
    • Azure Log Analytics は、収集されたログ データの分析結果の格納、インデックス付け、照会、導出を支援します。

    Log Analytics と Application Insights の出力を使用して、アラートやダッシュボードを作成したり外部のサービスにエクスポートしたりすることができます。 その出力を使用して、VM のスケーリングなどのアクションを実行することもできます。

  6. この階層は、ソース管理、セキュリティ、出力管理のための Azure サービスを提供します。 これらのサービスは、Azure DevOps と Microsoft Entra ID で構成される場合があります。

コンポーネント

ネットワークと ID

  • Azure ExpressRoute: ExpressRoute を利用すると、接続プロバイダーから提供されるプライベート接続を介して、オンプレミスのネットワークを Microsoft クラウドに拡張できます。 ExpressRoute を使用すると、Microsoft Azure や Office 365 などの Microsoft クラウド サービスへの接続を確立できます。
  • Azure VPN Gateway: VPN ゲートウェイは、特定の種類の仮想ネットワーク ゲートウェイで、パブリック インターネットを介して Azure 仮想ネットワークとオンプレミスの場所の間で暗号化されたトラフィックを送信するために使用されます。
  • Microsoft Entra ID: Microsoft Entra ID は、オンプレミスのディレクトリと同期できる ID およびアクセス管理サービスです。

アプリケーション

  • Logic Apps: Logic Apps は、自動化された定期的なタスクとプロセスを作成し、スケジュールに従って実行するのに役立ちます。 HTTP や HTTPS エンドポイントなど、Azure の内外のサービスを呼び出すことができます。 Azure Service Bus などの Azure サービスにメッセージをポストしたり、ファイル共有にアップロードされたファイルを取得したりすることもできます。
  • Service Bus: ユーザー インターフェイスとバックエンド サービスとの間のメッセージングには Service Bus を使用できます。 このシステムによってアプリケーションとサービスを分離できるため、信頼性が向上し、用途が広がります。
  • Azure Databricks: Azure Databricks は、大量データの処理と変換に使用されるクラウドベースのデータ エンジニアリング ツールです。 そのデータを機械学習モデルで探索することができます。
  • Azure Spring Apps: Spring のマイクロサービスは、Azure Spring Apps を使用して簡単に Azure にデプロイし、管理、実行することができます。 Java と .NET Core の両方がサポートされます。
  • AKS: AKS を使用すると、運用上のオーバーヘッドが Azure にオフロードされるため、Azure でのマネージド Kubernetes クラスターのデプロイが簡素化されます。
  • Batch: Batch は、汎用バッチ コンピューティングをクラウド内の多数の VM 全体で実行するように設計されています。それらの VM は、実行されているワークロードに応じてスケーリングできます。 互いに独立した複数のタスクが並列実行される ETL や AI のユース ケースに最適です。
  • Functions: アプリケーションのインフラストラクチャについて気にすることなく小規模なコードを実行するには、Functions を使用します。 Functions では、アプリケーションを大規模に実行し続けるために必要な最新のサーバーがすべて、クラウド インフラストラクチャによって提供されます。
  • Azure App Service: App Service の機能である WebJobs を使用すると、再利用可能なバックグラウンド ビジネス ロジックを Web ジョブとしてコーディングすることができます。
  • Azure Cache for Redis: 大量のバックエンド データを使用するアプリケーションは、Redis のようなインメモリ データ ストアと統合することで、高度に最適化されたパフォーマンスとスケーリングを提供するように開発できます。 Azure Cache for Redis は、Redis のオープン ソース (OSS Redis) と、マネージド サービスとしての Redis Labs (Redis Enterprise) の商用製品の両方を提供します。

記憶域

Azure Storage は、ホット データ、クール データ、アーカイブ データという複数の階層を備えています。 これらのストレージ層を効果的に使用することで、高いコストパフォーマンスが得られます。

  • Blob Storage: クラウドネイティブのワークロード、アーカイブ、データ レイク、ハイパフォーマンス コンピューティング、機械学習のためのスケーラブルで安全なオブジェクト ストレージです。
  • Azure Files: シンプルかつ安全な、エンタープライズレベルのサーバーレス クラウド ファイル共有です。 リエンジニアリングされたメインフレーム ソリューションで特に Azure Files の利便性が発揮されます。 マネージド SQL ストレージ用の効果的なアドオンが用意されています。
  • Table Storage: 大量の半構造化データセットを使用して迅速な開発を行うための NoSQL キー値ストアです。
  • Azure Queue Storage: 大規模ワークロード向けのシンプルでコスト効果に優れた非消費型のメッセージ キューです。
  • Azure SQL: Azure のフル マネージド サービス ファミリの SQL Server です。 他の Azure サービス (Azure SQL Managed Instance、Azure Virtual Machines 上の SQL Server、Azure Database for MariaDB など) と共に、リレーショナル データを効率的に移行して使用できます。
  • Azure Cosmos DB: メインフレームから表形式でないデータを移行する際に使用できる No SQL オファリングです。

監視

  • Azure Monitor: Azure Monitor では、クラウドおよびオンプレミス環境のテレメトリを収集、分析し、対応する包括的なソリューションを提供します。 Application Insights、Azure Monitor ログ、Azure Log Analytics の機能が含まれます。

管理

  • Azure DevOps: ソフトウェア開発とチーム コラボレーションのすべてのフェーズにわたり、メインフレーム アプリケーションを Azure 上にリエンジニアリングします。 DevOps には次のサービスが用意されています。

    • Azure Boards: アジャイル計画、作業項目の追跡、可視化、レポート ツール。
    • Azure Pipelines: 言語、プラットフォーム、クラウドに依存しない CI/CD プラットフォーム。コンテナーや Kubernetes をサポートします。
    • Azure Repos: クラウドでホストされるプライベートな Git リポジトリを提供します。
    • Azure Artifacts: 統合パッケージ管理機能。パブリック ソースまたはプライベート ソースからの Maven、npm、Python、NuGet パッケージ フィードをサポートします。
    • Azure Test Plans: 統合、計画、探索的テスト ソリューション。

シナリオの詳細

メインフレームは、主に大量のデータを処理する目的に使用されます。 バッチ処理は、1 つにまとまった大量のトランザクションを処理し、データベースに対して一括更新を行う手段です。 トリガーされた後は、ユーザーの対話式操作はまったく不要か、あってもごくわずかです。 たとえば、銀行などの金融機関はメインフレーム システムを使用して四半期末の処理を実行し、四半期ごとの株式明細書や年金明細書などのレポートを生成することができます。

考えられるユース ケース

このソリューションは、金融、保険、医療、小売業界に最適です。 このアーキテクチャは、メインフレーム アプリケーションを Azure 上でリエンジニアリングする目的に使用します。 このアーキテクチャは次の用途に最適です。

  • リソースの消費が激しいメインフレーム バッチ アプリケーション。
  • 月末、四半期末、年末など、特定の期間中に高いコンピューティングを必要とするバッチ アプリケーション。
  • 反復性があり、リソースの消費は激しくないものの、外部システムによる利用が必要になる可能性があるメインフレームのバッチ処理。

考慮事項

可用性

  • この記事のバッチ アーキテクチャには、マルチノードのコンピューティングまたは PaaS サービスが使用されているため、高可用性が備わっています。
  • Azure データベース サービスはゾーン冗長をサポートしており、万一障害が発生した場合やメンテナンス期間中は、それらをセカンダリ ノードにフェールオーバーするように設計できます。

スケーラビリティ

  • このアーキテクチャに含まれる次の Azure サービスには、自動スケーリング機能があります。

    • Azure Databricks
    • AKS
    • Spring Apps
    • Batch
    • Azure Functions
    • Logic Apps
  • 詳細については、自動スケーリング ガイドを参照してください。

セキュリティ

  • このリファレンス アーキテクチャでは、オンプレミス環境と Azure との間に ExpressRoute を使用して効率的でプライベートな接続を確立しています。 ただし、サイト間 VPN を作成することもできます。
  • Microsoft Entra ID を使用すると、Azure リソースを認証できます。 ロールベースのアクセス制御 (RBAC) を使用してアクセス許可を管理できます。
  • Azure のデータベース サービスでは、保存データの暗号化など、さまざまなセキュリティ オプションがサポートされています。
  • 安全なソリューションの設計について詳しくは、「Azure のセキュリティ ドキュメント」を参照してください。

回復性

  • Azure リソースの正常性は、Log Analytics 以外にも、Azure Monitor や Application Insights を使用して監視できます。 リソースの正常性を予防的に管理するにはアラートを設定します。
  • Azure の回復性について詳しくは、信頼性の高い Azure アプリケーションの設計に関するページを参照してください。

コストの最適化

Azure リソースのコストを見積もるには、Azure 料金計算ツールを使用します。

サービスのコスト見積もりの例については、「Azure メインフレーム バッチ アプリケーション」を参照してください。

共同作成者

この記事は、Microsoft によって保守されています。 当初の寄稿者は以下のとおりです。

プリンシパル作成者:

  • Ashish Khandelwal | プリンシパル エンジニアリング アーキテクチャ マネージャー

パブリックでない LinkedIn プロファイルを表示するには、LinkedIn にサインインします。

次のステップ