Amazon Web Services ブログ
AWS CDK による開発の前進: PGA ツアーはいかに開発を加速させたか
PGA ツアーは、ツアープロゴルファーの最高峰の会員組織で、下部ツアーやシニアツアー、国際ツアーの共同大会運営も担っています。
PGA ツアーは、ゴルフファンをプレーヤー、トーナメント、コースに近づける努力をしています。新しいモバイルアプリと PGATOUR.com ウェブサイトを開発し、リーダーボードをほぼリアルタイムで、ショットごとのデータ、動画ハイライト、スポーツニュース、統計、3D ショットトラッキングなど、没入感のあるパーソナライズされた体験をファンに提供しています。PGA ツアーは競争の激しい分野で、ファンの要求に応え、魅力的なコンテンツを提供することを重要視しています。
成熟した DevOps 文化と開発プロセスの加速は、PGA ツアーのファンエンゲージメントの変革に不可欠でした。
PGA ツアーのファンは、リアルタイムかつ正確なデータを求めています。魅力的なファン体験を提供し進化させるため、PGA ツアーではチームの開発者がアップデートや新しい機能をすばやくリリースできるようにする必要がありました。しかし、従来の PGA ツアーのアーキテクチャではウェブサイトとモバイルアプリで別々のコードベースが必要で、モノリシックなアーキテクチャでした。それぞれの更新には両方のコードベースの変更が必要で、機能追加の対応にはおよそ 2 週間の時間がかかっていました。ファンが望む機能をアプリとウェブサイトの両方で提供するための費用と時間は持続可能ではありませんでした。そのため、PGA ツアーでは問題を解決するため、AWS ネイティブサービスとマイクロサービスベースのアーキテクチャを使ってモバイルアプリとウェブサイトを再設計しました。
Infrastructure as Code (IaC) による開発の加速
PGA ツアーのインフラストラクチャチームは長年にわたり、AWS CloudFormation を使用してクラウドインフラストラクチャを設計、構築、管理していました。しかし、PGA ツアー内のアプリおよびウェブ開発チームは CloudFormation で必要となる JSON と YAML のテンプレートに馴染みがなく、利用を望んでいませんでした。代わりに AWS Cloud Development Kit (CDK) がサポートするプログラミング言語を用いることを好んでいました。開発者は AWS AppSync、AWS Lambda、AWS Step Functions、AWS Batch などのサービスを使用して、新しいモバイルアプリとウェブサイトを TypeScript で開発しています。さらに PGA ツアーは、IAM で必要な権限を最小限に絞る方法を簡素化したいと考えていました。その結果、PGA ツアーの開発者は従来からのコーディング方法の延長線上にある IaC ツールとして AWS CDK の使用を開始しました。
PGA ツアー では、AWS CDK Construct ライブラリの 3 層全て (訳註: L1, L2, L3 コンストラクト のこと) を活用しています。主要サービスである AWS Lambda と AWS Elastic Container Service (Amazon ECS) については、aws_ecs_patterns module のような高水準のパターンコンストラクトを利用しています。CDK のパターンコンストラクトは、一般的なリファレンスアーキテクチャやデザインパターンのデプロイを助ける目的で提供されています。高水準なコンストラクトの利用によって、PGA ツアーの開発時間は数時間から数週間短縮されました。また、Amazon DynamoDB や AWS AppSync などのサービスには、L2 と L1 のコンストラクトを利用しています。
図 1. PGA ツアーの新しいアプリへようこそ
AWS CDK を使用することでもたらされる PGA ツアーへの恩恵
AWS CDK の利用によって、プラットフォームと開発者チームの生産性が向上し、PGA ツアーのインフラストラクチャ運用方法が変わりました。PGA ツアーでは必要に応じてインフラストラクチャを作成・破棄しています。基盤となるインフラストラクチャへの変更を自動化することが非常に簡単になりました。例えば、Lambda ランタイムのバージョンアップは、Lambda Common スタックの 1 行の変更で 300 以上の Lambda 関数に反映できます。
CDK は柔軟性と俊敏性を提供します。PGA ツアーでは毎週異なるトーナメントを開催しているため、モバイルアプリやウェブサイトのコンテンツの外観が常に変化しますが、これを管理するのに役立っています。PGA ツアーでは、次のトーナメントに備えて独自の機能やコンテンツを持つ環境を並列にプロビジョニングし、進行中のトーナメントへの影響を最小限に抑えつつ対応しています。トーナメントが終了すれば、新しいスタックに切り替え、古いものは破棄できます。PGA ツアーはかつて隔週で3時間のメンテナンス時間を確保してリリースしていましたが、CDK によって必要に応じて1日に複数回、約7分でリリースできるようになりました。CDK により、PGA ツアーは従来のモノリシックな技術スタックでは危険とみなされていたトーナメントの真っ只中であっても、本番環境へのリリースや修正ができるようになりました。ある事例では、PGA ツアーの開発者は、バグの特定から修正のコード化、ユーザー受入テスト (UAT) を経て製品版に反映するまでに 42 分しかかかりませんでした。この製品版へのリリースプロセスは、以前は数時間から数日を要していました。
図 2. AWS CDK/アプリのハイレベルアーキテクチャ
PGA ツアーのデジタル担当チームにおいて AWS CDK がもたらした組織的な能力の変化を、DevOps の組織成熟度を評価する広く受け入れられている DevOps Research & Assessment (DORA) のメトリクスで表現します。
PGA ツアーが AWS CDK を使用した最大の利点の 1 つは、AWS Identity and Access Management (IAM) アクセス許可を管理する複雑さを大幅に軽減できたことです。PGA ツアーは、サーバーレスアーキテクチャで作業する際、特に IAM の信頼ポリシーを細かく制御することがいかに重要かを理解しています。David Provan 氏は「AWS CDK はセキュリティを最初から意識した設計をもたらし、開発後にセキュリティ強化のための作業を行うのではなく、プロジェクト全体を通してセキュリティを考慮するようになります」と述べています。AWS CDK は、あらかじめ用意されたマネージドな形式で、必要な最小の IAM 権限設定を自動化します。PGA ツアーがリソースを削除すると、AWS CDK が IAM 権限を削除します。
教訓と今後の展望
PGA ツアーにとって最も学びが大きかったのは、CDK スタックの細分化でした。最初は単一の大きなスタックから始めましたが、アプリケーションをさらに小さなスタックに分けることで、細かな単位でデプロイと更新を行えることがわかりました。AWS Lambda は非常に高速に更新できるのに対し、複数リージョンにまたがるグローバルテーブルを持つ DynamoDB のデプロイにはより時間がかかることがわかりました。このスタックの細分化の程度は、PGA ツアーが初回リリース後に繰り返し修正を行う中で今も検討していることです。
今後の展望では、PGA ツアーは CDK による恩恵として、スタックの再利用や開発の加速が他の部門やサービスにも適用可能になると考えています。また、全く異なるワークロードでも、ソースコードやパターンを再利用できるメリットがあります。
おわりに
AWS CDK は、PGA ツアーが AWS 上にサービスをデプロイする方法と、ファンに興奮と臨場感のある体験を提供する取り組みに革新をもたらしています。詳細を知りたい場合は、AWS CDK 開発者ガイドを参照して、クラウドアプリケーション開発のベストプラクティスをご確認ください。また、AWS Cloud Development Kit と AWS Construct Library の利用の概要が書かれたブログも参照してください。
本記事は、Driving Development Forward: How the PGA TOUR speeds up Development with the AWS CDK を翻訳したものです。翻訳は Solutions Architect の山崎 宏紀が担当しました。