Amazon Web Services ブログ

SAPワークロードで新しいレベルのアジリティーを促進: SAP Commerceを例に

長い間、オンプレミスのSAPプロジェクトでは、リスクを最小限にするために、多くの前もっての要求分析、評価、サイジングプロセスが必要でした。実際に、私たちは、数週間かけた計画の後で初期の決定を変更しなければならなくなった多くの状況に遭遇しています。SAPアーキテクチャーには、ビジネス要求に迅速に対応し、ソリューションを迅速に実装し、フィードバックに基づいて改善し、そして繰り返し行うための十分な柔軟性が必要です。このブログ記事では、AWS上でのSAPアーキテクチャーにアジャイルをもたらす方法を示すために、例としてSAP Commerceを取り上げます。Minimum Lovable Product (MLP)で始めて、それからアーキテクチャーを迅速に変化させる方法を説明します。

SAP Commerceの概要

SAP Commerceの簡単な紹介をしましょう。大半の読者の方々は、おそらく、この製品の前身である有名なオムニチャネルeコマースプラットフォームのSAP Hybrisをご存知でしょう。2017年に、私たちはSAP HybirsにおけるAmazon Auroraの認定取得を発表しました。2018年に、SAP HybrisはSAP Commerceにブランド変更し、SAPカスタマーエクスペリエンス (CX) スイートの一部になりました。

An architecture diagram showing SAP Commerce and EC2 hibernation to save costs when the system is not in use.

まず、SAP CommerceにあらかじめバンドルされているHSQLDBとgradleスクリプトを使用するアーキテクチャーから始めます。次に、このアーキテクチャーならイテレーションが如何に簡単かを紹介します。これは、SAP Commerce on AWSを体験するための最適な方法で、60分ほどでAWS上でシステムを稼働できるようになります。

最初のイテレーションは、データベースを変更することです。HSQLDBはデモ環境には適していますが、お客様は通常デモフェーズが終われば商用グレードのデータベースに切り替えます。ここでは、データベースをAmazon Aurora Serverlessに迅速に変更する方法を紹介します。

2回目のイテレーションは、Amazon EC2の休止を有効にすることです。一般的な開発環境では、EC2インスタンスは営業時間の間だけ利用できればよいです。コストを削減するために、システムを使用していないときはシャットダウンする必要があります。しかしながら、SAP Commerceのシステム起動には、かなりの時間がかかることがあります。ここでは、EC2の休止が起動時間を大幅に短縮しながら、これらのコスト削減にどのように寄与できるか紹介します。

SAP Commerceの展開

AWS CloudFormationテンプレートを実行して、HSQLDBで稼働するSAP Commerceのオンプレミスエディションを展開します。前提条件として、既存のVPCがあり、SAP CommerceのソフトウェアをAmazon S3バケットにアップロードしておく必要があります。

私たちが提供するCloudFormationテンプレートは、Gradleのレシピに統合されています。これらのレシピは、SAP Commerceのソフトウェアの一部として提供されています。各モジュールに含まれる拡張の詳細は、Gradleのレシピに関するSAPドキュメントを参照してください。YAMLテンプレートと詳細な導入ガイドは、 私たちのGitHubリポジトリで確認できます。

付け加えることの1つとして、SAP Commerceは、SapMachineと呼ばれるSAPが提供するOpenJDKをサポートするすべてのオペレーティングシステムで稼働するということです。ここでは、追加料金なしで提供されているというシンプルな理由から、Amazon Linux 2を選択しています。

CloudFormationテンプレートによる展開が完了すれば、ウェブブラウザーを使用してサイトに接続できます。このケースでは、以下に示すように、電気店のサイトになっています。 これは、SAP Commerceが持つB2Cアクセラレーターの拡張機能の一部です。

A screenshot of an electronic internet store with a DSLR camera

イテレーション 1: HSQLDBからAmazon Aurora Serverlessにデータベースを変更

SAPは、SAP Commerceのデータベースの選択肢をいくつか提供しています。選択肢の一つは、SAP HANAデータベースを使用することです。この実装には、SAP HANA on AWSクイックスタートを使用することができます。ここでは、 MySQL互換のAmazon Aurora Serverlessを使用する方法を紹介します。これの優れた点は、費用対効果が高く、フルマネージド型で、データベースの利用状況に基づいてストレージ、CPU、メモリが動的にスケールアップとダウンすることです。

Amazon Aurora Serverlessデータベースの設定手順については、AWSのドキュメントを参照してください。Auroraデータベースを展開したら、あとは2つの手順を実施するだけです。

  1. MySQL用のJDBCドライバーをダウンロードし、/usr/sap/hybris/bin/platform/lib/dbdriver フォルダにアップロードします
  2. /usr/sap/hybris/config ディレクトリにあるlocal.proporties ファイルを更新します
mysql.optional.tabledefs=CHARSET=utf8 COLLATE=utf8_bin
db.driver=com.mysql.cj.jdbc.Driver
db.url=jdbc:mysql://<AmazonAuroraEndpoint>:3306/aurora?verifyServerCertificate=false&useConfigs=maxPerformance&characterEncoding=utf8&sslMode=DISABLED
db.username=<SAP Commerce user name>
db.password=<SAP Commerce password>
mysql.tabletype=InnoDB
mysql.allow.fractional.seconds=true
mysql.workaround.index.langpk=true

次の手順は、コマンド “ant initialize” を実行することです。これにより、データベース全体をクリアし、最初から再作成します。実際のデータベースのオートスケーリングを見るために、このコマンドを実行したときの容量変更のスクリーンショットを用意しました。このサーバレスのデータベース容量は、データベースがアイドル状態のときは1に設定され、このコマンドが実行された約35分の間は自動的に2に変更されていることが分かります。そして、コマンドが完了するとすぐに1に戻っています。

A graph with the y axis showing the database capacity and the x-axis showing the data and time. The database capacity started at 1 and went up to 2 for 35mins, then went back down to 1

イテレーション 2: 起動時間を短縮するためにEC2の休止を有効化

EC2インスタンスを使用していないときにシャットダウンすれば、特に開発環境として使用している場合には、コストを大幅に削減できます。しかしながら、SAP Commerceの開発者が直面する一般的な問題の一つには、起動時間が長いことが挙げられます。

起動時間を短縮するための一つの選択肢が、EC2の休止を有効にすることです。詳細な手順は、EC2の休止を有効にするためのAWSのドキュメントを参照してください。基本的には、既存のシステムのAmazon Machine Image (AMI)を作成し、休止を有効にしてEC2インスタンスを起動するだけです。

実際に見てみましょう。まず初めに、Hybrisの管理コンソールでの稼働時間は、2週間2日22時間53分になっています。

A screenshot showing the Hybris administration console with an uptime of 2 weeks 2 days 22 hours 53 minutes

コストを削減するには、”停止 – 休止”を選択します。このオプションにより、インスタンスのメモリー (RAM)の中身をAamzon EBS ルートボリュームに保存します。

Select an instance, and choose Actions, Instance State, Stop - Hibernate

インスタンスを開始すると、RAMの中身が再ロードされます。

Select an instance, and choose Actions, Instance State, Start

Hybrisの管理コンソールでの稼働時間は、2週間2日22時間58分です。EC2インスタンスを起動してから、Hybrisの管理コンソールに接続するまでに3分もかかりませんでした。

A screenshot showing the hybris administration console with an uptime of 2 weeks 2 days 22 hours 58 minutes

これらすべての設定は非常に簡単です!これで、最小限の工数とインフラストラクチャへの投資で開発システムが用意できました。開発フェーズが終了したら、品質保証と本稼働環境にもこのアーキテクチャーを適用できます。例えば、 Amazon EC2 Auto Scalingを導入したり、 さらにアーキテクチャーを進化させてAWS Fargateを利用したりもできます。

片付け

追加のコストが発生しないように、このウォークスルーで作成したすべてのリソースを削除することを忘れないでください。

  • CloudFormationのスタック
  • EC2インスタンス
  • Amazon S3バケット
  • Amazon Aurora DBインスタンス

まとめ

AWS CloudFormationでSAP Commerceシステムを構築する最初の手順を実施し、データベースをAmazon Aurora Serverlessに変更して、コスト削減と稼働時間の向上にAamzon EC2の休止を使用しました。ボタンを数クリックするだけでアーキテクチャーをすぐに変更できます。重要なメッセージは、完璧でなくても大丈夫、ということです。AWSには、時間とともに変化する実際のニーズに合わせてSAPアーキテクチャーを進化およびカスタマイズできる機能があります。私にとって、これがSAPワークロードをAWSに移行する最大のメリットの一つです。

ここでは例としてSAP Commerceを取り上げましたが、進化可能なアーキテクチャーの概念は他のSAP製品にも適用できます。もし、ご質問がある場合、またはSAPシステムのオプションをもっと理解したい場合には、sap-on-aws@amazon.comまでお問い合わせいただくか、aws.com/sapにアクセスして詳細をご確認ください。今すぐAWSで構築を始めて、楽しんでください!

翻訳はPartner SA 河原が担当しました。原文はこちらです。