SAP HANA Development

SAP HANA XSA基礎:XS Advancedの構成とアプリケーション運用手順

SAP HANA on-premiseで利用するXS Advanced(XSA)の基本構成、XSCとの違い、MTA・HDIコンテナを使った開発、デプロイ、ログ確認、障害切り分けを実務向けに解説します。

XS Advancedの基本アーキテクチャユーザー、ルーティング、認証、アプリケーション、サービス、HDIコンテナの関係を示すXS Advancedの基本アーキテクチャユーザー、ルーティング、認証、アプリケーション、サービス、HDIコンテナの関係を示すHTTPリクエスト認証ルーティングサービスバインディングデータベースアクセスクライアントブラウザまたはAPI利用者アプリケーションルーターリクエストを受け、認証済…UAA認証とトークン処理を担うアプリケーションランタ…Node.jsやJavaのアプリケ…XSAサービスプラットフォームサービスと…HDIコンテナアプリケーションが利用す…CertPas オリジナル図解
クライアントからアプリケーションルーター、UAA、アプリケーションランタイムを経由してHDIコンテナへ至るXS Advancedの処理構成
目次
  1. XSAとは
  2. XSAとXSCの違い
  3. XSAアプリケーションの構成
  4. HDIコンテナとデータベース成果物
  5. XSAへのデプロイ手順
  6. XSAの障害切り分け
  7. 運用で確認するポイント
  8. 実務での設計判断

XSAとは

XS Advanced(XSA)は、SAP HANA on-premise上でデータベースに近いアプリケーションを実行するためのアプリケーションプラットフォームです。アプリケーション、ルーティング、認証、サービス、データベース成果物を分離して管理できるため、複数の開発成果物を同じシステム上で運用できます。

XSAでは、アプリケーションを単一のサーバープロセスとして扱うのではなく、複数のサービスとランタイムコンポーネントの組み合わせとして扱います。代表的な要素は、XSAコントローラー、アプリケーションランタイム、ルーター、UAA、サービスブローカー、HDIコンテナです。

開発全体の位置付けを先に確認したい場合は、SAP HANA開発の全体像を参照してください。XSAだけでなく、SQLScript、計算ビュー、CDS、HDIを含む開発領域の関係を整理できます。

XSAで管理する主な単位

  • Organization:XSA内の管理境界
  • Space:アプリケーションとサービスを配置する作業領域
  • Application:Node.js、Javaなどで実装した実行単位
  • Service:認証、宛先、HDIコンテナなどの提供機能
  • MTA:複数モジュールとサービスをまとめたデプロイ単位

実際の権限設計では、ユーザー、ロール、スペースの関係を最初に決めます。開発者がアプリケーションをデプロイできても、サービス作成や本番スペースへの操作まで許可する必要はありません。

XSAアプリケーションの障害切り分けフロー起動、ルーティング、認証、データベース障害を確認する順序を示すXSAアプリケーションの障害切り分けフロー起動、ルーティング、認証、データベース障害を確認する順序を示す最初に確認停止または不安定ならアプリケーションへ到達するなら認証とルーティングが正常ならバインディングが存在するなら事象を確認URL、発生時刻、ユーザー…アプリケーション状態を…xs appsでインスタンス状態…ログとイベントを確認直近ログとイベントから起…ルートと認証を確認ルーター設定、UAA処理、ス…サービスバインディング…サービスインスタンスとア…HDIコンテナを確認対象コンテナの成果物、ユ…CertPas オリジナル図解
事象の記録からアプリケーション状態、ログ、ルーティング、認証、サービスバインディング、HDI確認へ進むXSA障害切り分けフロー

XSAとXSCの違い

XSC(XS classic)は、SAP HANAリポジトリを中心にJavaScript、OData、静的コンテンツなどを管理する旧来型の実行方式です。一方、XSAはMTAを単位にアプリケーションとサービスを構成し、HDIコンテナを使ってデータベース成果物を分離します。

主な違いは次のとおりです。

観点XSCXSA
成果物の管理HANAリポジトリ中心ソースプロジェクトとMTA中心
実行単位XSエンジン上のアプリケーションランタイム上のアプリケーション
データベース配置リポジトリスキーマを利用HDIコンテナを利用
権限分離リポジトリとスキーマを中心に設計アプリケーション、サービス、コンテナを分離
デプロイリポジトリ成果物を登録MTAまたはモジュールをデプロイ

XSAへ移行・再設計する場合は、単純なファイルコピーではなく、アプリケーション、データベース成果物、認証、宛先、外部接続を別々に棚卸しします。特にXSCのスキーマアクセスをそのまま再現するのではなく、HDIのサービスバインディングとコンテナ間アクセスを基準に設計します。

XSAアプリケーションの構成

XSAアプリケーションでは、アプリケーションモジュールとデータベースモジュールを同じMTAに含める構成が一般的です。たとえば、Node.jsのサービスモジュール、アプリケーションルーター、HDIデータベースモジュールを組み合わせます。

典型的な処理の流れは次のとおりです。

  1. クライアントがアプリケーションルーターへアクセスする
  2. ルーターが認証サービスと連携する
  3. 認証済みリクエストをNode.jsまたはJavaアプリケーションへ転送する
  4. アプリケーションがサービスバインディングを通じてHDIコンテナへ接続する
  5. HDIコンテナ内のテーブル、ビュー、プロシージャを利用する

アプリケーションからデータベースへ接続する情報は、ソースコードに固定値として埋め込まず、サービスバインディングから取得します。接続情報や認証情報を環境変数、サービスキー、アプリケーション設定へどう渡すかを、開発環境と本番環境で明確に分けてください。

Node.jsやJavaからHANAへ接続する実装を確認する場合は、SAP HANAのNode.js・Java連携が役立ちます。接続プール、トランザクション、エラー処理をXSAアプリケーションへ組み込むときの前提を整理できます。

MTAの基本構造

MTAプロジェクトでは、通常、次のような役割を分けます。

  • アプリケーションモジュール:API、画面、バッチなどを実行する
  • データベースモジュール:テーブル、ビュー、シノニム、プロシージャを作成する
  • アプリケーションルーターモジュール:URL、認証、ルーティングを制御する
  • リソース定義:HDI、UAA、宛先などのサービスを宣言する

mta.yamlでは、モジュール、リソース、依存関係、環境変数を定義します。モジュール名とサービス名を安定させると、ログ確認や再デプロイ時の対象を特定しやすくなります。

HDIコンテナとデータベース成果物

HDIコンテナは、XSAアプリケーションが利用するデータベース成果物を専用のデプロイ境界で管理する仕組みです。設計時には、アプリケーションの技術ユーザーと、データベース成果物をデプロイするユーザーの役割を分けます。

データベースモジュールには、テーブル、ビュー、計算ビュー、プロシージャ、ロールなどを配置します。デプロイ後にアプリケーションが参照する権限は、コンテナ内のロールとサービスバインディングを組み合わせて付与します。

HDIの成果物設計を詳しく確認したい場合は、SAP HANA HDIコンテナの基礎を参照してください。コンテナ、デプロイ用ユーザー、実行時ユーザーの関係を分けて考えることが、権限エラーの防止につながります。

SAP HANAデータベースエクスプローラーは、HDIコンテナ内のスキーマ、テーブル、ビュー、SQL実行結果を確認する際に利用できます。SQLの実行場所と対象コンテナを確認してから、オブジェクトの存在や権限を調べます。

XSAへのデプロイ手順

デプロイ前には、対象スペース、サービスインスタンス、MTAの依存関係、アプリケーションのビルド成果物を確認します。デプロイ対象を本番スペースへ直接向けるのではなく、まず検証用スペースで同じサービス構成を再現します。

基本的な作業の流れは次のとおりです。

  1. XSA CLIで対象のXSA環境へログインする
  2. 対象のOrganizationとSpaceを選択する
  3. 必要なHDIや認証サービスを確認する
  4. MTAをビルドする
  5. MTAをデプロイする
  6. アプリケーションの状態、ルート、サービスバインディングを確認する
  7. エンドポイントへ接続して動作を検証する

XSA CLIでは、対象環境を確認してから操作します。代表的な確認例は次のとおりです。

xs login
xs target
xs apps
xs services

MTAのデプロイ後は、アプリケーションが起動していても、ルート、認証、サービスバインディング、データベース成果物のすべてが正常とは限りません。アプリケーションの状態だけで完了と判断せず、疎通テストとデータベース側の確認を続けます。

XSAの障害切り分け

障害時は、ブラウザのエラーだけで原因を判断せず、リクエスト経路に沿って確認します。最初にルーターへ到達しているか、次に認証が完了しているか、その後にアプリケーション、サービスバインディング、HDIコンテナの順で調べます。

アプリケーションが起動しない場合

xs appsで状態、インスタンス数、開始時刻を確認します。停止している場合は、アプリケーションログを取得し、起動コマンド、必須環境変数、サービスバインディング、依存ライブラリを確認します。

xs logs <app-name> --recent
xs events <app-name>

起動直後に停止する場合は、ポートの固定、接続情報の固定、書き込み可能なローカルファイルへの依存が原因になりやすい構成です。XSAのアプリケーションは、割り当てられたポートとサービスバインディングを利用する設計にします。

ルーティングまたは認証で失敗する場合

アプリケーションのURL、ルーター設定、認証サービス、コールバックURLを順番に確認します。認証後に403が返る場合は、ユーザー認証の成功だけでなく、アプリケーション側のスコープとロール割り当ても確認します。

データベース接続で失敗する場合

サービスインスタンスが対象スペースに存在すること、アプリケーションへ正しくバインドされていること、HDIコンテナのデプロイが完了していることを確認します。アプリケーションログに接続エラーが出ている場合は、接続先、証明書、ユーザー、コンテナ名を一つずつ照合します。

データベースオブジェクトの不足や権限エラーは、SAP HANAデータベースエクスプローラーで対象コンテナへ接続して確認します。アプリケーション用ユーザーとデプロイ用ユーザーを混同すると、オブジェクトが存在していても実行できない状態になります。

運用で確認するポイント

XSAを安定運用するには、アプリケーション、サービス、データベース成果物の変更を同じ記録で管理します。MTAのバージョン、デプロイ日時、対象スペース、変更されたサービス、ロール変更を残すと、障害発生時に直前変更を追跡できます。

定期的に確認する項目は次のとおりです。

  • アプリケーションの稼働状態と再起動回数
  • ルートと証明書の有効性
  • UAAや関連サービスの状態
  • HDIコンテナのデプロイ履歴
  • サービスバインディングと不要なサービスキー
  • アプリケーションログのエラー傾向
  • データベースオブジェクトと実行権限
  • スペースごとのユーザーとロール

開発環境で動作していたMTAを本番へ移すときは、環境固有のURL、サービス名、認証設定、接続先をパラメータ化します。秘密情報をソースコードやMTA定義へ直接記述せず、運用手順に沿って安全に登録します。

実務での設計判断

XSAアプリケーション開発では、最初にデータベース成果物とアプリケーションの境界を決めます。データベース側へ集約する処理、アプリケーション側で扱う処理、認証・認可の責任範囲を定義すると、後から権限やデプロイ順序を調整しやすくなります。

計算ビューやSQLScriptを利用する場合も、アプリケーションから直接スキーマを操作するのではなく、HDIコンテナで管理された成果物とロールを経由します。計算ビューの設計方針を確認する場合は、SAP HANA計算ビューの基礎も参照してください。

小さな変更でも、MTA全体の依存関係を確認してからデプロイします。アプリケーションだけを更新する変更と、HDI成果物やサービス構成を変更する更新では、検証項目とロールバック方法が異なります。デプロイ後のログ、ルート、認証、データベース接続を一連のチェックリストで確認すると、見落としを減らせます。

ブログ一覧へ戻る