Amazon Web Services ブログ
【SAP Fioriのパフォーマンス向上】Amazon CloudFrontとAWS Global Acceleratorの活用
はじめに
グローバルに事業を展開するSAPのお客様は、全従業員がいつでも、どのデバイスからでも、どこからでもSAPアプリケーションにアクセスできるようにしたいと考えています。アクセスするサービスを24時間利用できるような、いつでもアクセス可能にすることは実は非常に簡単です。あらゆるデバイスからのアクセスは、SAPUI5の機能を備えたSAP Fioriの重要な特徴です。しかし、どこからでもアクセスできるというのは複雑な問題で、お客様は組織のセキュリティポリシー、パフォーマンス要件、拠点からの既存のネットワーク接続(その帯域幅やレイテンシーの特性を含む)、ユーザーのモビリティなど、様々な点を考慮する必要があります。
このブログでは、お客様がAWS上でSAPワークロードを実行しており、専用のネットワーク接続に多額の投資をすることなくSAPアプリケーションへの直接アクセスを提供することに興味を持っているというシナリオを考えてみます。
本ブログでは、AWS上でグローバルにアクセス可能なSAP Fioriワークロードのパフォーマンスの課題に対処するためのオプションについて説明し、達成可能な潜在的な改善点を紹介します。
背景
SAP Fioriは、SAP S/4HANA、SAP BW/4HANAなどのSAPアプリケーションのユーザーインターフェースコンポーネントです。SAP Fiori は SAPUI5 と呼ばれる SAP 独自の HTML5 実装と、動的コンテンツのための OData API 呼び出しをベースにしています。SAP Fiori は、HTTP プロトコルと最新の Web ブラウザをクライアントとして使用します。HTML5 の性質上、携帯電話、タブレット、ラップトップなど、モダンブラウザをサポートするほぼすべてのユーザーデバイスで動作します。この機能により、多くのSAPのお客様は、3G、4G、5G、Wi-Fiなど、世界中のエンドユーザーのあらゆる接続をサポートする柔軟性を備えたインターネット対応のSAP Fioriを導入しています。
インターネットを介してエンドユーザーにSAP Fioriを導入する際には、多くのパフォーマンス上の課題があります。その原因としては、ユーザーと SAP Fiori の間の遅延、帯域幅の制限、安定性の低さに加えて、転送が必要な JavaScript、スタイルシート、画像、データなどのコンポーネントのサイズが挙げられます。
標準的な SAPUI5 コンポーネントのパフォーマンスに対処するために、SAP は SAP ノート 2526542(アクセスには SAP S-User id が必要です)で「How to load SAPUI5 files from CDN for performance improvements in Fiori and Standalone UI5 apps」というガイダンスを提供しています。このSAPノートの適用可能性については、Mario De Felipe氏のブログで、CloudFrontをコンテンツ配信ネットワーク(CDN)として活用することが紹介されています。しかし、このSAPノートとブログでは、カスタムUI5アプリとFiori OData APIコールのパフォーマンスについては触れていません。以下に紹介する潜在的なソリューションは、これらのギャップに対応するものです。
潜在的なソリューション
AWSでこれらの課題に対処するには、いくつかの選択肢が考えられます。
1. Amazon CloudFront
Amazon CloudFrontは、静的コンテンツ(画像、ファイル、動画など)と動的コンテンツ(動的サイト配信、APIコール、Webソケットなど)の両方を、高い可用性、パフォーマンス、セキュリティを持って視聴者に配信するコンテンツ配信ネットワークです。OSI(Open Systems Interconnection)レイヤーの第7層で動作し、HTTPおよびHTTPSプロトコルをサポートしています。最も近いエッジロケーションとの迅速なTLSハンドシェイク、エッジロケーションとリージョナルロケーションでのオブジェクトのキャッシュ、HTTP2、パーシステントコネクション、コネクションの再利用などのパフォーマンス最適化、AWSのネットワークバックボーンの活用などにより、パフォーマンスの向上を実現します。
2. AWS Global Accelerator
AWS Global Acceleratorは、インターネットユーザーにサービスを提供するウェブアプリケーションのパフォーマンスと可用性を向上させる、グローバルなトラフィックマネージャーです。OSIレイヤーのレイヤー4で動作し、エッジでパケットをプロキシし、AWSネットワークバックボーン上でAWSリージョン内のアプリケーションに送信することで、TCPまたはUDP上の幅広いプロトコル(HTTP、RTP、WebRTCなど)を加速します。
なお、Global AcceleratorとCloudFrontは、AWSのグローバルネットワークと世界各地のエッジロケーションを利用する2つの独立したサービスです。
ソリューション比較とユースケース
|
CloudFront |
Global Accelerator |
仕組み |
CloudFrontは、静的コンテンツ(画像や動画など)と動的コンテンツ(APIアクセラレーションや動的サイト配信など)の両方のパフォーマンスを向上させます。 |
Global Acceleratorは、エッジでパケットを1つまたは複数のAWSリージョンで実行されているアプリケーションにプロキシすることで、TCPまたはUDP上の幅広いアプリケーションのパフォーマンスを向上させます。 |
コンテンツキャッシング |
Yes |
No |
Routing |
DNS-based |
Anycast |
ルーティング |
HTTPのエラーコードやタイムアウトに基づくネイティブオリジンのフェイルオーバー、またはRoute 53のDNS。 |
DNSのTTLに依存せず、30秒以内にオリジンのフェイルオーバーを内蔵。 |
使用例 |
HTTP/Sでキャッシュ可能なコンテンツを持つウェブサイト(例:SAP Fiori Launchpad)、Amazon S3バケット、Amazon MediaStore、またはCloudFrontがファイルを取得するその他のサーバ |
Global Acceleratorは、ゲーム(UDP)、IoT(MQTT)、Voice over IPなどのHTTP以外のユースケースや、特に固定IPアドレスや決定論的で高速なリージョナルフェイルオーバーを必要とするHTTPユースケースに適しています(例:SAP OData Calls API)。
|
SAP Fioriへのベネフィットとインパクト |
CloudFrontは、頻繁にアクセスされるキャッシュ可能なコンテンツがエッジロケーションにキャッシュされることが多いため、バックエンドのApplication Load BalancerとSAP Fioriの作業負荷を軽減します。 SAP FioriのEC2リソースは、主に動的コンテンツ(OData APIコール)のみを提供するため、ハードウェアサイズ(CPUとメモリ)の要件を減らすことができます。 また、バックエンドの SAP Fiori サーバへの帯域幅も削減され、ネットワークルートも最適化されます。 |
Global Acceleratorは、エンドユーザーがSAP Fioriに到達するための最短経路を提供するため、結果的にエンドユーザーのパフォーマンスが向上します。 ただし、SAP Fioriのコンテンツを提供するEC2のサイジングを縮小することはできない。 |
実装の労力
|
CloudFront for SAP Fiori Launchpadを設定するには、SAP Fioriの仕組みに関するより深い技術的知識が必要です。これには、どのリソースが キャッシュ可能なものとそうでないものがあります。これは、SAP Fioriがかなり多くのHTTPヘッダーとクッキーを使用していることに起因します。間違ったリソース(例:html)がキャッシュされると、バックエンドの SAP Fiori に転送されません。この場合、以下の問題が発生します。 セッション処理に問題が生じます(例:ログオンの失敗)。 |
Global Accelerator は、Application Load Balancer へのエンドポイントを定義するだけで、非常に簡単に実装できます。 SAP Fiori のリソースでキャッシュ可能なものとそうでないものについての深い知識は必要ありません。 |
維持管理の労力 |
SAPUI5のパッチ適用など、SAP Fioriコンポーネントに新たな変更があった場合、CloudFrontのファイルの無効化という機能を使って、CloudFrontのキャッシュコンテンツを空にする必要があります。一般的には、AWSコンソールやAPIを使ってこれらのCACHEを無効にするには60秒程度かかります。
|
Global Accelerator はエッジロケーションでコンテンツを一切キャッシュしないため、バックエンドの SAP Fiori での変更を(エッジロケーションでキャッシュされたコンテンツを管理する必要なく)簡単にロールアウトすることができます。 |
セキュリティ |
AWS CloudFrontには、DDoSプロテクションのためのAWS Shieldが付属しており、大規模で巧妙なDDoS攻撃をさらに検知・軽減するためのAWS Shield Advancedサブスクリプションと併用することもできます。 CloudFrontをAWS Web Application Firewall(WAF)と併用することで、SQLインジェクション対策、IP GEOベースのフィルタリング、レイヤー7リクエストフラッドブロック機能など、悪意のあるリクエストをブロックする機能を追加することができます。 TLSv1.3を含む、より高度なCIPHER SSL SuiteとCloudFrontが自動的に通信できるため、SAP Fioriのセキュリティを向上させることができます。現時点では、SAPはTLSv1.2のみをサポートしています)。 |
AWS Global Acceleratorには、DDoS対策のためのAWS Shieldが付属しています。また、大規模で巧妙なDDoS攻撃をさらに検知・軽減するためのAWS Shield Advancedサブスクリプションと併用することもできます。 また、IPベースのフィルタリングは、セキュリティグループでも利用可能です。 Global Acceleratorでは、SSL Terminationが発生しないため、ログやモニタリングでクライアントのIPアドレスを確認することができます。 |
SAPノート2526542のみを実施した場合と、この2つの推奨オプションを使用して加速されるオブジェクトを比較すると、次のようになります。
トラフィックの種類 |
ルート最適化による高速化 (キャッシュ無) |
エッジ&リージョナルキャッシュによる高速化 |
UI5ライブラリのキャッシングのみ(SAPノート2526542) |
||
静的コンテンツ |
|
|
SAPUI5 |
|
X |
Custom UI5 |
|
|
その他 |
|
|
動的コンテンツ |
|
|
OData API Calls |
|
|
AWS Global Accelerator |
||
Static Content |
|
|
SAPUI5 |
X |
|
Custom UI5 |
X |
|
その他 |
X |
|
動的コンテンツ |
|
|
OData API Calls |
X |
|
Amazon CloudFront |
||
静的コンテンツ |
|
|
SAPUI5 |
X |
X |
Custom UI5 |
X |
X |
その他 |
X |
X |
動的コンテンツ |
|
|
OData API Calls |
X |
|
「X」は高速化を意味します。これらの点に基づいて、私たちは以下を推奨します。
- SAP Fioriをグローバルまたはリージョンに展開する際のパフォーマンスの課題を解決するソリューションとしてCloudFrontを導入する。
- SAP S/4HANAを使った外部システム統合シナリオでOData APIコールのパフォーマンスを改善する必要がある場合は、Global Acceleratorを導入するとよいでしょう。これには通常、ホワイトリスト用の静的 IP アドレスのセットが必要で、SSL Terminationはなく、エッジ処理もないため、Global Accelerator のユースケースに適しています。
ソリューション概要
CloudFront と Global Accelerator for SAP Fiori のデモアーキテクチャ図
上の図をもとに、インターネット経由でアクセスできるAWS us-east-1(Northern Virginia)リージョンに、Fioriを組み込んだSAP S/4HANA 2020を、ユーザーはシンガポールにいるというシンプルなデプロイメントを実施します。CloudFrontとGlobal Acceleratorの設定については、本連載の第2回目のブログ記事「【SAP Fioriのパフォーマンス向上】Amazon CloudFrontとAWS Global Acceleratorの活用 – How to Guide」で詳しく説明します。この設定では、CloudFrontがTLS 1.3オフロードを実行し、SAP Fioriのセキュリティ状況を改善していることがわかります。これは、SAPがTLS 1.2をまだサポートしていないのに対し、CloudFrontがTLS 1.3の使用を強制しているためです。
なお、実際の運用では、セキュリティを向上させるために、Fioriを組み込んだSAP S/4HANAをプライベートサブネットに設置し、SAP Web dispatcherをパブリックサブネットに設置することをお勧めします。
パフォーマンステスト
この単体性能テストでは、エンドユーザーの性能を測定することができ、SAP Fiori がサポートしているデバッグツールを搭載している Google Chrome ブラウザを使用しました。SAP Fiori ユーザーのプロファイルは、SAP Fiori およびSAP S/4HANA において Procurement Manager ロールが割り当てられています。
最初のシナリオでは、SAP Fiori Launchpad にアクセスする際に、シークレットモードを有効にします。これは、SAP Fiori に初めてアクセスする際にブラウザにキャッシュがない場合や、 UI5 トランスポートの変更やアップグレードによりキャッシュが無効になった場合に、グループユーザーが得られる改善効果を理解するためです。
UI5 トランスポートの変更やアップグレードによってキャッシュが無効になった場合の改善を理解するためです。CloudFront経由での改善は、Fiori Launchpadの静的コンテンツと動的コンテンツの両方のパフォーマンスが加速されたため、ノースバージニア州のApplication Load Balancerに直接アクセスした場合と比較して、約49%の改善となりました。
2つ目のシナリオでは、SAP Fiori Launchpadへのアクセス時にシークレットモードを無効にして、動的コンテンツ(OData APIコール)のみで得られる改善効果を把握します。Fiori Launchpad にログオンし、購買請求書が表示された Fiori アプリ「Managed Purchase Requisition」を選択します。グローバルアクセラレータによるダイナミックコンテンツの高速化のみを測定します。インターネットよりも高速なAWSのグローバルネットワークを利用しているため、ノースバージニアのアプリケーションロードバランサーに直接アクセスした場合と比較して、約16%の改善が見られました。
エンドユーザーとSAPワークロードの位置関係、エンドユーザーと最寄りのAWS Point of Presence間のネットワークのパフォーマンス、その他複数の要因により、お客様の体験は異なる可能性があることをご了承ください。必要に応じてAWSやAWS Partner Network(APN)パートナーのサポートを受けながら、お客様ご自身でパフォーマンステストを行うことをお勧めします。
CloudFrontおよび/またはGlobal Acceleratorをより多くのユーザーに展開する前に、様々なユーザーのロケーションから自動化されたパフォーマンステストを実行し、お客様のシナリオで達成可能なパフォーマンスの改善を判断することをお勧めします。リアルユーザーモニタリングツールやLoad Runner for SAPのような自動ソフトウェアテストツールを使用することができます。パフォーマンステストの実施方法については、こちらのブログをご参照ください。
結論
最初のテストシナリオでは、CloudFrontを使用することでSAP Fiori Launchpadのロード時間が短縮されました。これは、キャッシュ可能なオブジェクトの数が増えてエンドユーザーの近くで利用できるようになったことと、CloudFrontを使ってOData APIコールのネットワークルートが最適化されたためです。さらに、CloudFrontのTLS 1.3オフロード機能により、SAP Fiori Launchpadの安全性が向上しました。
2つ目のテストシナリオでは、SAP S/4HANAサーバーへのネットワークルートが最適化されているため、Global Acceleratorを使用することでOData APIコールのロード時間が短縮されました。SAP SuccessFactorsやSAP Cloud Analyticsなどの外部システムとの間で転送されるデータ量が増えれば、パフォーマンスの優位性はさらに高まるでしょう。
最後に、簡単に言うと、SAP Fiori Launchpadのユースケースを高速化するにはCloudFrontを、分析やレポートのためのデータ抽出などOData APIコールによる外部システム統合シナリオを高速化するにはGlobal Acceleratorをお勧めします。
次回のブログでは、CloudFrontとGlobal Accelerator for SAP Fioriに必要な設定手順をご紹介します。また、SAP on AWS、CloudFront、Global Acceleratorについては、AWSの製品ドキュメントから詳細を確認することができます。
翻訳はPartner SA 松本が担当しました。原文はこちらです。