JinJin48
JinJin48
SAP Consultant | BTP · S/4HANA · US Global Rollout
· 21 min read

カバー:BTPアーキテクチャ設計のユースケースと意思決定パターン

TL;DR
  • ランタイムの選択(Cloud Foundry vs Kyma vs ABAP環境)は、他プロジェクトの選択ではなく、チームの専門性、イベント駆動型の要件、コスト許容度によって決まります。
  • 接続アーキテクチャは明確に分かれています。オンプレミスにはCloud Connector、ハイパースケーラーがホストするバックエンドにはSAP Private Link、インターネットAPIにはDestinationサービスを使用します。
  • アカウント構造のパターンは予測可能です。最も一般的なエンタープライズのミスは、初期にセグメント化が不十分で、最初の本番インシデントで分離の欠如が明らかになった後、サブアカウントの整理にコストを支払うことです。

本記事の位置づけ

IDカテゴリコンポーネントスコープ
BTP-F01概要BTPアーキテクチャ設計概要と主要な判断事項
BTP-F02アカウント設計 (1)サブアカウント設計パターンと原則
BTP-F03アカウント設計 (2)エンタイトルメントとクォータ管理パターンと原則
BTP-F04認可 (1)ロールコレクション設計パターンと原則
BTP-F05認可 (2)命名規則パターンと原則
BTP-F06開発と移送CI/CDと移送管理パターンと原則
BTP-F07ユースケースBTPアーキテクチャ設計ユースケースと判断パターン(本記事)

参考資料

リソースURL
SAP BTP 接続性 — SAP BTP 接続性とはhelp.sap.com →
SAP BTP アカウントモデルhelp.sap.com →
SAP アーキテクチャセンター — マルチテナント SaaS リファレンスアーキテクチャarchitecture.learning.sap.com →
SAP アーキテクチャセンター — SAP Private Link によるセキュアな接続性architecture.learning.sap.com →
SAP アーキテクチャセンター — SAP BTP による DevOpsarchitecture.learning.sap.com →

1) アーキテクチャと運用ランドスケープ

BTPアーキテクチャの3つのドメイン:ランタイム、接続性、アカウント構造

BTPアーキテクチャを3つの明確なドメインに分類する意思決定。各ドメインは異なる問いに答え、異なる担当者によって運用されます( SAP BTPアカウントモデル)。

ドメイン機能主な利用者
ランタイム環境カスタムアプリケーションや拡張機能をホスト・実行するアプリケーションアーキテクト / 開発者
接続性BTPのワークロードとバックエンド(オンプレミス、ハイパースケーラー、インターネット)を橋渡しする統合アーキテクト / BASIS
アカウント構造エンタイトルメント、分離、チーム間のコスト配分を整理するプラットフォームチーム / CCoE

これら3つのドメインはデプロイ時に相互作用しますが、それぞれ独立して設計されます。互いに代替となるものではありません。

2) S/4HANA への接続方法

DevおよびProdサブアカウントを使用したBTPからS/4HANAへの接続アーキテクチャ

以下の図は、サイドバイサイド拡張シナリオにおける、S/4HANAバックエンドに対するBTPの一般的な配置を示しています。

  ┌─────────────────────────────────────────────────────────────┐
  │                   SAP BTP Global Account                    │
  │                                                             │
  │  ┌───────────────────┐   ┌───────────────────────────────┐  │
  │  │  Dev Subaccount   │   │       Prod Subaccount         │  │
  │  │  ┌─────────────┐  │   │  ┌─────────────────────────┐  │  │
  │  │  │  CF Runtime │  │   │  │  CF Runtime / Kyma       │  │  │
  │  │  │  (CAP App)  │  │   │  │  (CAP App, event-driven) │  │  │
  │  │  └──────┬──────┘  │   │  └───────────┬─────────────┘  │  │
  │  └─────────┼─────────┘   └──────────────┼────────────────┘  │
  │            │  Destination service         │ Destination svc   │
  │            │  (OnPremise)                 │ (OnPremise /      │
  │            │                              │  Private Link)    │
  └────────────┼──────────────────────────────┼───────────────────┘
               │                              │
         Cloud Connector               Cloud Connector
         (Dev tunnel)                  (Prod tunnel)
               │                              │
  ─────────────┼──────────────────────────────┼──── On-premises network
               ▼                              ▼
        S/4HANA Dev                    S/4HANA Prod
        (ABAP system)                  (ABAP system)

Cloud Connector は顧客のオンプレミスネットワークにインストールされ、BTP サブアカウントへのアウトバウンドトンネルを開始します。インバウンドのファイアウォールポートは不要です( SAP BTP Connectivity)。BTP 内のアプリケーションは、エンドポイント URL と認証情報のランタイム設定ストアとして機能する Destination サービスを介してバックエンド接続を消費します。

重要ポイント: 各BTPサブアカウントは、独自のCloud Connector論理ロケーションにマッピングされます。そのため、開発用と本番用のサブアカウントは分離しておく必要があります。単一のCloud Connectorトンネルをライフサイクルステージ間で安全に共有することはできません。

3) 成熟度マップ

BTP 機能成熟度マップ:GA、制限付き、および新興機能

この表を使用して、各機能領域が設計に着手する前にどの程度本番環境に対応しているかを評価してください。ランタイムコストの比較については、 SAP Architecture Center の総保有コストリファレンス を参照してください。

領域成熟度備考
Cloud Foundry ランタイム✅GA、最も広範なSAPサービスサポート、世界的に最も多くの本番環境での実績あり
Kyma ランタイム⚠️GAだが、SAP管理サービスの利用可能数が少ない。チームにKubernetesスキルが必要
ABAP環境✅S/4HANA Cloud拡張で安定。RAPモデルが必須のプログラミングモデル
Cloud Connector + Destinationサービス✅成熟しており、ドキュメントも充実。全ランタイムでサポート
SAP Private Linkサービス⚠️AzureとAWSでGA。執筆時点ではGCPサポート未確認。ABAP環境では利用不可
SAP Integration Suite(イベントメッシュ / AEM)✅Event Mesh機能から開始。エンタープライズ規模ではAdvanced Event Meshに移行
マルチテナントSaaSアカウント構成🔶実現可能だが、プロバイダー/コンシューマーサブアカウント設計とHANA HDIコンテナ戦略に注意が必要
Infrastructure as Code(BTP向けTerraform)⚠️利用可能で、ランドスケープ自動化に推奨。チームへの導入投資が必要

4) 要件チェックリスト

以下のチェックリストは、アーキテクチャパターンをプロジェクトにコミットする前に満たすべき最低要件をまとめたものです。ソリューション設計の承認前に、各項目を確認してください。BTPアカウント階層(グローバルアカウント → ディレクトリ → サブアカウント)は、このセクションのすべてのエントリの構造的基盤です( SAP BTPアカウントモデル)。

ランタイム環境の選択

ランタイム環境選択要件チェックリスト

要件確認
チームが各ランタイムに対する言語要件(Java、Node.js、Python、Go、ABAP)を評価している☐
チーム内でKubernetesの専門知識が確認されている、またはその依存関係を避けるために意図的にCloud Foundryが選択されている☐
対象ランタイムのリージョン別利用可能性が確認されている(KymaはCloud Foundryよりも利用可能なリージョンが少ない)☐
エンタープライズアカウントにコミットする前に、トライアルまたはサンドボックスでの検証が完了している☐
少なくとも2つのランタイム候補に対してBTPEAモデルを使用したコスト見積もりが作成されている☐
アプリケーションが複数の独立した顧客にサービスを提供する場合、マルチテナントSaaSパターンがレビューされている☐
ランタイムは混在可能(例:APIレイヤーにCloud Foundry、イベントハンドラにKyma)— その判断は文書化されている☐

接続アーキテクチャ

接続アーキテクチャ要件チェックリスト

要件チェック
バックエンドシステムタイプの分類:オンプレミス / ハイパースケーラーホスト / インターネットSaaS☐
各オンプレミスバックエンド向けのCloud Connectorインストール環境の特定☐
バックエンドごとの宛先プロキシタイプ定義:OnPremise または Internet☐
データがインターネットを経由してはならないAzureまたはAWSホストのバックエンド向けにSAP Private Linkの評価☐
宛先スコープの決定:サブアカウントレベル vs サービスインスタンスレベル(環境分離用)☐
開発/テスト/本番で同一の物理コネクタホストを使用する場合のCloud Connector向け複数サブアカウントマッピングの確認☐
オーケストレーション型マルチシステム統合シナリオ向けのSAP Integration Suite仲介レイヤーのスコープ設定☐

アカウント構造設計

要件確認
グローバルアカウントのオーナーおよびエンタイトルメント割り当て権限者を特定☐
ディレクトリ階層の深さを決定(フラット / 部門別 / 地域別)☐
Dev / Test / Prod サブアカウントの分離を確認 — アプリケーショングループごとにライフサイクルステージごとに1つのサブアカウント☐
SAP Cloud Transport Management および SAP Cloud ALM 用の共有サービスサブアカウントを作成済みまたは計画済み☐
サブアカウントまたはディレクトリレベルでコスト配分戦略を定義☐
サブアカウント作成前に、利用可能な BTP リージョンに対してデータレジデンシー要件を確認☐
サブアカウントをプロビジョニングする前に命名規則を合意し文書化☐
マルチテナント SaaS を構築する場合、プロバイダーとコンシューマーのサブアカウント構造をマッピング☐

イベント駆動型アーキテクチャ

要件確認
イベントボリュームの見積もり:低(スターター / Event Mesh) vs. 高(Advanced Event Mesh)☐
SAPネイティブビジネスイベント(S/4HANA Cloud、SuccessFactors)向けにSAP Cloud Application Event Hubを評価済み☐
イベントコンシューマランタイムを選択済み(Kyma推奨、Cloud FoundryはIntegration Suiteによる仲介で対応可能)☐
イベントタイプごとにリトライおよびデッドレターキューの戦略を定義済み☐
イベントスキーマガバナンスプロセスを特定済み(イベント定義の所有者、バージョン管理方法)☐
対象範囲内の各統合パターンについてISA-M統合スタイル分類を完了済み☐

5) 意思決定基準

3つの判断ゲートの質問:Q1 課題、Q2 データの場所、Q3 スポンサーと予算

Q1: 問題点や非効率性はどこにありますか?

ランタイム選択の判断マップ:Cloud Foundry、Kyma、ABAP環境のユースケース

BTPへの投資を引き起こす具体的なシナリオを特定します。一般的なトリガーとそのランタイムへの影響:

  • S/4HANAのサイドバイサイド拡張(コアABAPでは実現できないUI、ワークフロー、レポート):チームのスキルと規模に応じてCloud FoundryまたはKymaを選択。
  • クラウドネイティブなABAP開発、または既存のABAPロジックの移行:ABAP環境のみ。
  • 大量のイベント駆動型統合(在庫同期、注文イベント、IoT):KymaとSAP Integration Suite Advanced Event Meshを組み合わせて使用。
  • 複数の事業部門向けの社内SaaSプラットフォーム(プロダクトとして):Cloud FoundryまたはKyma上のマルチテナントSaaSパターン( SAP Architecture Center — マルチテナントSaaSリファレンスアーキテクチャ)。

もしその課題が具体的なボトルネックとして明確に表現できないのであれば、アーキテクチャの決定に進んではいけません。

Q2: データはどこに保存され、誰が所有するのか?

接続アーキテクチャの判断:オンプレミス Cloud Connector、ハイパースケーラー Private Link、インターネット宛先

データの保存場所と所有権は、後から安価にリファクタリングできない方法で、接続アーキテクチャとアカウント構造を決定します。

  • オンプレミスのSAPまたは非SAPシステム:Cloud Connectorが必要、宛先ProxyTypeはOnPremise。
  • AzureまたはAWSでホストされるバックエンド:インターネット経由を回避するため、SAP Private Linkサービスが推奨されるパスです( SAP Architecture Center — Secure Connectivity with SAP Private Link)。
  • データ保存に関する規制が適用される場合:BTPサブアカウントは特定の準拠リージョンに作成する必要があります。ランタイムを決定する前に、そのリージョンでKymaが利用可能かどうかを確認してください。
  • 複数の国または子会社がある場合:部門ベースのグループ化ではなく、リージョンごとのディレクトリアカウント構造を使用します。

Q3: スポンサーは誰で、予算モデルはどのようなものですか?

予算権限と商用モデルは、ランタイムコストの最適化とライセンステーブルの両方を推進します。

シナリオ推奨方向性
単一チームによる部門プロジェクト、限られた予算Cloud Foundry;BTPEA消費モデル;Kubernetesスキルが社内にない限りKymaは使用しない
複数チームによるエンタープライズCCoE主導プログラム部門別コスト配分が可能なディレクトリ構造;初日から共有サービスサブアカウントを設定
BTP上で商用SaaS製品を構築するISVマルチテナントSaaSアーキテクチャ;プロバイダ+コンシューマサブアカウント構造;HANA HDIコンテナスキーマ分離
Kubernetesチームが確定しているプログラムランタイムコストが約25~30%高い場合でもKymaは正当化可能;サービスメッシュとイベント基盤により統合の複雑性を低減
明確なスポンサーや予算モデルが未確定停止。Q1に戻る。

ライセンスに関する参考情報

BTPライセンス参照:機能別の商用車両とコストに関する注意事項

機能一般的な商用車両備考
Cloud Foundry ランタイムBTP エンタープライズアグリーメント(BTPEA) — メモリベースGB時間単位で課金;小~中規模で最もコスト効率が良い
Kyma ランタイムBTPEA — ノードベースのクラスター固定クラスターコスト+ノードスケーリング;同等ワークロードでCFより約25~30%高い
ABAP 環境BTPEA または CPEA — ABAP コンピュートユニットS/4HANA Cloud またはスタンドアロンABAPサブスクリプションが必要
SAP Integration SuiteBTPEA — メッセージベースまたはAPI呼び出しベースEvent Meshは標準ティアに含まれる;Advanced Event Meshは別SKU
HANA CloudBTPEA — キャパシティユニットAI/ベクター機能によりストレージコストが大幅に増加;AIユースケースを考慮してサイジング
SAP Private LinkBTPEA — 接続ベース接続ごとの課金;インターネットを回避する必要がある規制対象ワークロードにコスト効率が良い

6) よくある障害

BTPアーキテクチャにおける7つのよくある障害とその根本原因

SAP Cloud Transport Managementは、関心の分離を維持するために、他の共有サービスとともに専用のサブアカウントで実行する必要があります。これは、以下のいくつかの障害の根底にある原則です( SAP Architecture Center — DevOps with SAP BTP)。

障害 1: すべてのライフサイクルステージに単一のサブアカウントを使用

Teamsは、オーバーヘッド削減のためにDev、Test、Prodで1つのサブアカウントを作成した後、Destination名がサブアカウントごとに一意でなければならないことや、Cloud Connectorトンネルが本番バックエンドを開発側のデプロイメントに公開してしまうことを発見します。この問題を解消するには、サービスインスタンスを再作成し、すべてのアプリケーションを再デプロイする必要があり、多くの場合、ライブプログラム中に行うことになります。

障害 2: Kubernetesの専門知識なしにKymaを選択

Kymaが選ばれる理由は、よりモダンに聞こえるから、または別のチームが使用していたからであり、プロジェクトチームがKubernetes CRDを操作、サービスメッシュを設定、またはHelmチャートを管理できることを確認していないためです。その結果、名目上は稼働しているものの、保守、監視、またはチューニングが行われていないランタイムが生まれ、セキュリティ態勢は悪化し、Cloud Foundryを上回るコストが発生する一方で、アーキテクチャ上の利点はまったく得られません。

障害 3: 単一サブアカウントにマッピングされた Cloud Connector

1 つの Cloud Connector インスタンスは、本番サブアカウントにのみマッピングされます。開発時にオンプレミスのバックエンドを呼び出す必要がある場合、チームは本番用コネクタを共有する(リスクが生じる)か、インターネット経由のプロキシを経由する(レイテンシとセキュリティ上の露出が生じる)かのいずれかになります。正しいパターンは、最初から各ライフサイクルステージのサブアカウントに個別にマッピングされた Cloud Connector を使用することです。

障害 4: ハイパースケーラーがホストするバックエンドに対して Private Link が評価されていない

SAP Private Link は、Azure または AWS でホストされるワークロードで利用可能ですが、チームが Cloud Connector に慣れているため、接続設計フェーズで評価されないことがよくあります。その結果、機密性の高いバックエンドデータ(例:Azure VM でホストされる S/4HANA)が不必要にパブリックインターネットを経由して転送され、本番稼働後のセキュリティレビューでコンプライアンス上のギャップとして表面化します。

障害 5: エンタープライズ規模のイベントボリューム向けに Event Mesh を選択

プロジェクトは、SAP Integration Suite内のEvent Mesh機能を選択し、最終的に異種ブローカー間で1日あたり数百万のイベントを処理するユースケースに対応します。Event Meshは、スターターおよび中程度のワークロードに適していますが、プロジェクト途中でのAdvanced Event Meshへの移行により、イベントスキーマガバナンスが中断され、すべてのコンシューマアプリケーションの再バインドが必要となり、計画外のライセンスコストが発生します。

障害 6: 共有サービスサブアカウントがない

SAP Cloud Transport Management、SAP Cloud ALM、および集中監視は、専用の共有サービスサブアカウントではなく、アプリケーションサブアカウントにデプロイされます。プロジェクトのエンタイトルメントが再編成されたり、アプリケーションサブアカウントが廃止されたりすると、トランスポート管理の設定が失われます。アプリケーションのライフサイクル変更に耐えられるよう、共有サービスは最初から分離しておく必要があります。

障害 7: Q1の課題が明確になる前にアーキテクチャが決定される

ソリューションが技術を中心に設計されています。「KymaとAdvanced Event Meshを使う」といった具合に、具体的なビジネスの課題が選択の原動力になっていません。6か月後、プロジェクトはビジネスがまだ実際には必要としていない統合パターンのためのインフラを構築しており、一方で真のボトルネック(S/4HANAにおける手動承認ワークフロー)は未解決のままです。アーキテクチャ上の決定は、名前の付いた非効率性に遡れるものでなければなりません。

FAQ

Q: 当社のS/4HANAはオンプレミスです。それでもBTP上のCloud Foundryを使用できますか?

はい。BTP上のCloud Foundryは、Cloud ConnectorおよびDestinationサービスを介してオンプレミスのバックエンドに接続します。Cloud Connectorはお客様のオンプレミスネットワークにインストールされ、BTPサブアカウントへのアウトバウンドトンネルを確立します。そのため、お客様側でインバウンドのファイアウォールルールは不要です( SAP BTP Connectivity)。その後、BTPアプリケーションは、ProxyTypeをOnPremiseに設定したDestinationを使用して、オンプレミス接続を利用します。これは、S/4HANAオンプレミス拡張における最も一般的な接続パターンです。

Q: Kymaの高コストが価値を持つのはどのような場合ですか?

Kymaのコストは、同等のテナント数でCloud Foundryよりも約25~30%高くなります。その主なコスト差は、マネージドKubernetesクラスターに起因します。このプレミアムが正当化されるのは、以下の場合です。(a) チームがすでにKubernetesスキルを有しており、学習曲線によるコストが発生しない場合、(b) ワークロードがイベント駆動型かつサーバーレスであり、Kymaの組み込みイベント基盤とサービスメッシュによってカスタム統合作業が削減される場合、または(c) アプリケーションに高度なネットワークセキュリティ(サービスメッシュ、サービス間のmTLS)が必要であり、Cloud Foundryではネイティブに提供されない場合。

Q: プロジェクトのスケジュールにリスクがある場合、何をスコープから外すべきですか?

まず、イベント駆動型統合レイヤーのスコープを縮小します。短期的にはAdvanced Event Meshを直接RFCまたはAPI呼び出しに置き換え、段階的なアップグレードを計画します。次に、初期導入時にはよりシンプルなアカウント構造(少数のディレクトリ、少数のサブアカウント)に集約しますが、ターゲット構造を文書化し、最初のテナントオンボーディング前に実装できるようにします。Dev/Test/Prodのサブアカウント分離はスコープから外さないでください。これを削除し、後で復元する必要が生じた場合の再作業コストは、ほぼ常に節約される時間を上回ります。

Q: チームの入れ替わりがあってもアーキテクチャの決定を残すには、どのように文書化すべきでしょうか?

アーキテクチャ決定記録(ADR)はプロジェクトリポジトリに保存することを最低条件とします。各ADRには以下を記録する必要があります:決定内容、検討した代替案、根拠(Q1の課題に関連付けること)、および日付。BTP固有の決定については、以下を記載します:選択したランタイムとその理由、バックエンドシステムごとの接続パターン、アカウント構造図、および命名規則ドキュメントの参照先(BTP-F05を参照)。これらのドキュメントはコードと共にバージョン管理されるため、スライドデッキよりも有用です。

Q: 複数の事業部門向けに社内SaaS製品を構築しています。どのランタイムとデータ分離戦略を採用すべきですか?

標準的なパターンでは、プロバイダサブアカウント(アプリケーションをホスト)と、ビジネスユニットごとに1つのコンシューマサブアカウントを使用します( SAP Architecture Center — Multi-Tenant SaaS Reference Architecture)。ランタイムには、Cloud FoundryとKymaのどちらも使用可能であり、CAPフレームワークは両方をサポートしています。データ分離については、SAPはコストと分離のバランスとして、HANA HDIコンテナスキーマ分離(テナントごとに1つのHDIコンテナ)を推奨しています。カラム弁別子は、リスクが非常に低いデータにのみ有効です。テナントごとに専用データベースを使用すると、最大の分離が得られますが、HANA Cloudのコストが大幅に増加します。ABAP環境は、このモデルでのマルチテナントSaaSをサポートしていません。

Q: S/4HANA Cloud のビジネスイベント消費に適したイベントツールは何ですか?

SAP Cloud Application Event Hubは、S/4HANA Cloud、SuccessFactors、その他のSAPクラウドアプリケーションからネイティブビジネスイベントを消費するための適切な出発点です。サポート対象のSAPクラウドアプリケーションに直接接続し、カスタムイベントチャネルの設定を必要とせずに、BTP拡張アプリケーションにイベントを公開します。非SAPシステムにまたがる異種環境や高ボリュームのシナリオでは、SAP Integration Suite Advanced Event Meshがマルチブローカーの基盤と集中管理の可視性を提供します。

概要

ライフサイクル分離と共有サービスを備えた推奨BTPアカウント構造

実際のBTPアーキテクチャの決定は、ランタイムの選択、接続設計、アカウント構造の3つの領域に集約されます。これらの決定は複合的に影響し合います。誤ったランタイムの選択は単独で留まらず、利用可能な接続オプション、コストモデル、チームの運用負荷にまで影響を及ぼします。

この記事で紹介するパターンは、エンタープライズ規模で実際に機能するものを反映しています。ほとんどの拡張シナリオではCloud Foundry、チームがKubernetesに対応しておりイベント駆動型アーキテクチャが中心となる場合はKyma、ABAP Cloud開発が明確な目的である場合にのみABAP環境を使用します。接続性はバックエンドの物理的な場所に従います。オンプレミスの場合はCloud Connector、ハイパースケーラーでホストされている場合はPrivate Linkの評価( SAP Architecture Center — Secure Connectivity with SAP Private Link)、インターネットの場合はProxyType Internetを使用したDestinationサービスです。アカウント構造は、初日からライフサイクルステージを分離し、共有サービスをアプリケーションサブアカウントから分離する必要があります。

意思決定基準の質問(Q1~Q3)は、形式的なものではなく、ゲートとして扱ってください。Q1(具体的な課題の明確化)を省略したプロジェクトは、BTPアーキテクチャを過剰に設計し、ビジネス価値を十分に提供できないことが常です。

次に読むべきもの

L1. 全体像L2-F. アーキテクチャと運用
BTP-001: SAP BTPとは?BTP-F01: BTPアーキテクチャ設計:概要と主要な判断基準
BTP-002: SAP BTPアーキテクチャBTP-F02: サブアカウント設計:パターンと原則
BTP-003: SAP BTP機能マップBTP-F03: エンタイトルメントとクォータ管理:パターンと原則
BTP-004: SAP BTPデプロイメントモデルBTP-F04: ロールコレクション設計:パターンと原則
BTP-005: SAP BTPライセンスモデルBTP-F05: 命名規則:パターンと原則
BTP-006: クリーンコア戦略BTP-F06: CI/CDとトランスポート管理:パターンと原則
BTP-F07: BTPアーキテクチャ設計:ユースケースと判断パターン(本記事)