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 Planner、SAP S/4HANA 2020 Installation、SAP S/4HANA 2020 Best Practice Activation、SAP 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 |
Stickiness |
SAPはステートフルアプリケーションなので、ALBは特定のユーザセッションに対して特定のSAPインスタンスを常に指するようにする必要があります。このパラメータを有効にする必要です。 |
Stickiness duration |
ユーザのその日の作業をカバーするために、1日又は8時間を設定することが可能です。 |
1.2 ロードバランサーの作成
入力パラメータ |
検討内容 |
DNS Name |
この名前を “sap-alb “としましょう。このドキュメントでは、後でRoute53のaliasレコードまたは他のDNSのCNAMEとして定義されます。 |
Scheme |
“internet-facing “で定義します。 |
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」ターゲットグループにフォワーディングするように設定します。 |
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 |
ソリューションのトラブルシューティング・ログ分析・監視等に必要になります。 |
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の暗号化を実装するために使用されるプロトコルになります。 |
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の操作を許可する必要があります。 |
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ポート) |
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 AWS、CloudFront、Global Acceleratorの詳細については、AWSのサービスドキュメントからご確認いただけます。
翻訳はSpecialist SA トゥアンが担当しました。原文はこちらです。