Amazon Web Services ブログ

Amazon CloudFrontとAWS Global AcceleratorによるSAP Fioriのパフォーマンス向上 パート2:How-toガイド

前回のブログでは、SAP Fiori Launchpadユースケースに高速化するようにAmazon CloudFrontを推奨し、分析やレポーティングのためのデータ抽出のようなOData APIコール経由で外部システムとの統合シナリオを加速するにはAWS Global Acceleratorを推奨すると結論付けました。Amazon CloudFrontで高速化した場合はSAP Fiori Launchpadの初回ロード時間が短縮され、AWS Global Acceleratorを利用した場合はOData APIコールの時間が短縮されました。

このブログでは、 SAP Fioriに向けてAmazon CloudFrontとAWS Global Acceleratorの実装を成功させるために、注意すべき重要なパラメータを含め、ソリューションの実装方法について詳しく説明します。

ソリューション概要

上記のデモソリューションのアーキテクチャでは、ユーザーがシンガポールからインターネット経由でアクセスできるAWS us-east-1(Northern Virginia)リージョンで構築したFiori取込済みSAP S/4HANA 2020のシンプル構成の説明になります。

  • SAP Fiori Launchpadは、Amazon CloudFrontによって加速加速化されます。
  • もう1つの別のシナリオでは、AWS Global AcceleratorによってSAP OData API 呼び出しの高速化をシミュレートします。
  • Application Load Balancer(ALB)は、SAP S/4HANA 2020へのリバースプロキシとして機能します。なお、本番環境では、セキュリティを向上させるために、プライベートサブネットにFioriを組み込んだSAP S/4HANAをインストールし、パブリックサブネットにSAP Web Dispatcherを設定することを推奨します。
  • AWS Certificate Managerは、AWS CloudFrontとApplication Load Balancer用のワイルドカードSSL証明書の管理に使用されます。
  • Amazon Route 53は、これらのソリューションをサポートするために必要なDNSエントリを管理します。

前提条件

ソリューションを実装する前に、以下の設定を済ませておく必要があります。

  • Windows RDP(Remote Desktop Protocol)がインストールされていること。SAP S/4HANA と SAP Fiori の各種設定を管理・メンテナンスするために使用します。
  • SAP S/4HANA 2020 がインストールされていること。これにはAWS Launch Wizardを活用できます。
  • SAP S/4HANAのバニラインストールが完了したら、以下の手順で、SAP Maintenance Plannerツールを使ってシステムをアップデートし、Fiori組み込みコンポーネントを有効にしてください。参考資料 SAP S/4HANA 2020 Maintenance PlannerSAP S/4HANA 2020 InstallationSAP S/4HANA 2020 Best Practice ActivationSAP S/4HANA 2020 Ravid Activation for Fiori
  • 有効なインターネットドメインが必要です。このドメインは Amazon Route 53 または他の DNS プロバイダーから入手できます。ALB、Amazon CloudFront、AWS Global AcceleratorのDNS Entry(Route53でのAlias、他のDNSではCNAME等)レコードを管理するために使用します。
  • 実装を容易にするために、公的な認証局(例: Verisign)で署名されたWildcard SSL証明書を使用しています。これを AWS Certificate Manager や SAP Fiori のバックエンドにインポートすることができます(例: *.example.com)。AWS Certificate Manager (ACM)から生成された SSL 公開証明書はSAPでは使えません。理由は、Certificate Signing Request(CSR)メソッドでSAP Fiori システムに署名された SSL 証明書をインポートする必要があるからです。

ソリューション実装

1. Application Load Balancerの設定

Application Load Balancerを作成するには、このドキュメントを参照してください。

1.1 ターゲットグループの作成

入力パラメータ

検討内容

Protocol Port

今回の例では、HTTPS ポート8443を使用しています。

Health Check Path

/sap/public/ping
SAP FioriのSIFCトランザクションコードで、このパスが有効になっていることを確認してください。

Stickiness

SAPはステートフルアプリケーションなので、ALBは特定のユーザセッションに対して特定のSAPインスタンスを常に指するようにする必要があります。このパラメータを有効にする必要です。

Stickiness duration

ユーザのその日の作業をカバーするために、1日又は8時間を設定することが可能です。

Target Group

1.2 ロードバランサーの作成

入力パラメータ

検討内容

DNS Name

この名前を “sap-alb “としましょう。このドキュメントでは、後でRoute53のaliasレコードまたは他のDNSのCNAMEとして定義されます。

Scheme

“internet-facing “で定義します。
このブログシリーズでは、エンドユーザーがインターネット経由でFioriにアクセスすることを想定しており、Amazon CloudFrontやAWS Global Acceleratorを使ってFioriやODataベースのネットワーク接続を高速化することができるようになります。

Security Group

Load Balancerのセキュリティグループ(例として、このセキュリティグループ名は 「sgLBSAP」と設定)には、ポート443がインターネットからの接続接続に対して許可します。

SAP Fioriのセキュリティグループ(例として、このセキュリティグループ名は 「sgSAPPAS」と設定)には、ALBのセキュリティグループ(名前「sgLBSAP」と設定)からSAP Fioriへのアクセスを許可します。

Listener ID

HTTPS:443

SSL Certificate

SSL認証ワイルドカードを保持しているAWS Certificate Managerを指定します。

Rules

SAP Fioriシステムが含まれる「tgSAP」ターゲットグループにフォワーディングするように設定します。

Load Balancer Configuration 1

Load Balancer Configuration 2

Load Balancer Configuration 3

2. CloudFrontのディストリビューション作成

CloudFontのディストリビューションを作成するために、このドキュメントを参照してください。

2.1 一般設定

入力パラメータ

検討内容

Price Class

CloudFront では、世界中にエッジロケーションがあります。

各エッジロケーションのコストは異なるため、請求する料金は、CloudFront がどのエッジロケーションからリクエストを処理するかに応じて異なります。

ユーザが居る場所及びパフォーマンス要件に合わせて決めます。

Alternate Domain Names

(CNAMEs)

対象となるウェブサイト名に設定します。ユーザーが SAP Fiori を閲覧する際に CloudFront のエンドポイントを経由して接続されるように、aliasや CNAME レコード、SSL 証明書と一致させる必要があります。(例: sap.example.com)

Domain Name

Route 53のターゲット “sap ” aliasスレコードや他のDNSのCNAMEレコードを管理する時に記録します。

Security Policy

本記事の執筆時点では、TLSv1.2_2019はCloudFrontとSAPの両方でサポートされている最新の推奨セキュリティポリシーとなっています。

Supported HTTP versions

HTTP/2は、1.1や1.0と比較して、レイテンシーの削減、圧縮によるプロトコールオーバーヘッドの最小化、リクエストの優先順位付けのサポートなど、多くのパフォーマンスの改善を提供するため、HTTP/2が有効になっていることを確認してください。

Log Bucket & Log Prefix

ソリューションのトラブルシューティング・ログ分析・監視等に必要になります。

CloudFront General Setttings

2.2 オリジン設定

入力パラメータ

検討内容

Origin Domain Name

これをALBに向けるように設定します。SSL ワイルドカードドメインと一致させるようにしてください。(例: sap-alb.example.com)

Minimum Origin SSL Protocol

TLSv1.2 を指定してください。現時点、これは SAP がサポートする最新のプロトコールです。

Origin Protocol Policy

HTTPS のみを使用します。これはCloudFrontとALBの間でend-to-endの暗号化を実装するために使用されるプロトコルになります。

CloudFront Origin Settings

2.3 動作設定

入力パラメータ

検討内容

Path Pattern

下の表のように設定し、Precedence 0番として、*FioriLaunchpad.htmlとします

以下は、デフォルト(*)の例です。

Viewer Protocol Policy

これを「Redirect HTTP to HTTPS」に設定することで、ユーザーエクスペリエンスを向上し、セキュリティの向上を図ることもできます。(HSTSを有効にしていない場合、ほとんどのブラウザはデフォルトでHTTPポートにアクセスしています)

キャッシュ不可能なオブジェクト

*FioriLaunchpad.htmlの設定は以下のようにしてください。

Cache policy : Managed-CachingDisabled

Request policy : Managed-AllViewer

GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETEの操作を許可する必要があります。

すべてのセッション Cookie、クエリ文字列、HTTP ヘッダーがバックエンドの SAP Fiori に渡され、適切に処理されることが必要です。

キャッシュ可能なオブジェクト

キャッシュ可能なオブジェクトは*.html、*.js、*.css、*.jpg、*.png、*.ttf、*.ico が含まれます。これらのオブジェクトには以下の設定が必要です。

Cache policy : Managed-CachingOptimized

Request policy : Managed-AllViewer

GET, HEAD操作を許可する必要です。

Default (*)

フォールバックとして、どのオブジェクトでも上記ポリシーに該当しない場合は、このポリシーに設定されます。

Cache policy : Managed-CachingDisabled

Request policy : Managed-AllViewer

GET、HEAD、OPTIONS、PUT、POST、PATCH、DELETEの操作を許可する必要があります。

CloudFront Behaviour 1

CloudFront Behaviour 2

3. Global Accelerator作成

Global Acceleratorを作成するには、このドキュメントを参照してください。

入力パラメータ

検討内容

Accelerator name

例として、この値を「gaSAP」と設定します。

Accelerator type

ここでは “Standard “を選択します。

Ports

443 (デフォルトのHTTPS用)

Client Affinity

SAP Fiori はステートフルなアプリケーションのため、クライアントアフィニティは「Source IP」に設定します。

Region

Application Load Balancerと SAP Fiori が配置されるリージョン

Endpoint type

Application Load Balancer の ARN に設定します。

Listener port

TCP:443 (Application Load BalancerのデフォルトのHTTPSポート)

Global Accelerator Configuration 1

Global Accelerator Configuration 2

Global Accelerator Configuration 3

Global Accelerator Configuration 4

4. Route53のaliasレコードまたは他のDNSサーバーのCNAMEを作成し、テスト実行

Route53でドメイン「example.com」を登録し、「example.com」のホストゾーンを作成しました。先程作成した各コンポーネントに対して、Route53のaliasレコードまたは他のDNSサーバーのCNAMEレコードを作成します。

レコード名

レコードタイプ

sap-alb

A (Route53)

またはCNAME (他のDNS)

xxxxxxxxxx.cloudfront.net

sap

A (Route53)

またはCNAME (他のDNS)

lbsap-xxxxxxxxxx.us-east-1.elb.amazonaws.com

sap-ga

A (Route53)

またはCNAME (他のDNS)

xxxxxxxxxx.awsglobalaccelerator.com

5. DNSが反映されたら、以下の各URLを使用しテストが可能

コンポネント

テスト用のURL

Application Load Balancer

https://sap-alb.example.com/<urlpath>

CloudFront

https://sap.example.com/<urlpath>

Global Accelerator

https://sap-ga.example.com/<urlpath>

凡例: <urlpath> = sap/bc/ui5_ui5/ui2/ushell/shells/abap/FioriLaunchpad.html

例: = https://sap.example.com/sap/bc/ui5_ui5/ui2/ushell/shells/abap/FioriLaunchpad.html

結論

今回は、SAP Fiori Launchpad向けのCloudFont実装方法ステップを紹介しました。これにより、SAP Fioriの標準的な動作に変更を加えないようにしながら、SAP Fioriのパフォーマンス、ユーザーエクスペリエンスの向上し、ユーザーの生産性の向上を実現することができます。

SAP OData API 呼び出しを高速化する Global Accelerator の実装方法も紹介しています。これは、システム間のレイテンシーを減らすためにトラフィックの高速化が必要なシステム連携シナリオで活用できます。

SAP on AWSCloudFrontGlobal Acceleratorの詳細については、AWSのサービスドキュメントからご確認いただけます。

 

翻訳はSpecialist SA トゥアンが担当しました。原文はこちらです。