Amazon Web Services ブログ

【開催報告】 エンジニアが紡ぐ ファーストリテイリングの デジタル変革 〜 グローバルへの挑戦 〜 (Part 2)

アマゾン ウェブ サービス ジャパン合同会社は 2024 年 7 月 24 日に株式会社ファーストリテイリングをお招きし「エンジニアが紡ぐ ファーストリテイリングの デジタル変革」というテーマで、4 時間半にわたってご講演いただきました。前回に引き続きこのブログでは講演内容をレポートします。

ファーストリテイリングの IT を支える AWS インフラストラクチャ

株式会社ファーストリテイリング デジタル業務改革サービス部 インフラストラクチャチーム 部長 堀川 茂氏

堀川氏より、同社の AWS クラウド活用の歴史と現状、そして大規模クラウド環境を少人数で運用するための工夫についてお話しいただきました。

ファーストリテイリングがクラウドを必要とした背景には、グローバルで 3,500 以上の店舗、約20 の国と地域での e コマース(EC) 事業、世界中の倉庫や工場といったサプライチェーン全体をつなぐ必要性がありました。ビジネスの急速な拡大に追随するため、データセンターを各事業ごとに構えるのではなく、グローバルにスケール可能で迅速にインフラを調達できるクラウドが不可欠でした。クラウド化の大きなきっかけとなったのは、2017 年 の EC サイトダウンでした。3 日間のダウンタイムを経験し、オンプレミス環境での容量増強の難しさや流量制御の課題に直面したことで、クラウド化の必要性を強く認識されました。

ファーストリテイリングのクラウドジャーニーは、2012 年頃から一部のキャンペーンサイトで AWS の利用を開始したことに始まります。2013年には既存の基幹システムの老朽化に伴い、クラウド化プロジェクトが始動しました。2016年から2017年にかけて開始された「有明プロジェクト」を通じて、オンプレミスからクラウドへの移行(リフト & シフト)が大規模に進められました。2021 年頃からはグローバル展開が加速し、AWS の利用も更に拡大しました。

クラウド活用の成果として、以下の 5 点が挙げられました。

  1. スケーラビリティとキャパシティの確保:需要に応じて簡単にスケールアップやキャパシティ拡張が可能になった
  2. アーキテクチャのモダナイゼーション:マイクロサービス化など、レガシーシステムから現代的なアーキテクチャへの移行が実現した
  3. エンジニアの確保:クラウドエンジニアの採用が容易になり、パートナーや開発者の確保が改善された
  4. アベイラビリティの確保:コスト効率の良い方法で、災害対策用のバックアップサイトを別のアベイラビリティゾーンや地域に構築できるようになった
  5. インフラコストの最適化:繁忙期と閑散期でリソースを調整し、インフラコストを最適化できるようになった

現在の AWS 利用状況としては、60 以上のアカウント、15 以上のリージョン、13,000 以上の仮想マシン、3,000 以上のデータベース、12 万以上のコンテナを運用しています。これらの大規模インフラを 20 人程度の少数チームで管理するために、さまざまな工夫を行っています。主な取り組みとして以下が紹介されました。

  • アーキテクチャーレビュー:コマース、エンタープライズ、CTO の 3 つのレビューボードを設置し、プロジェクトの計画から運用要件、セキュリティまで多角的な観点でチェックを行っています。
  • 自動化・コード化:Infrastructure as Code (IaC) の活用、コスト管理の自動化、標準化された AWS アカウント作成の自動化などを導入しています。
  • セルフサービス化:アプリケーションチームが自身で責任を持ってコードのビルド、テスト、デプロイできる仕組みを構築しています。
  • コスト管理:タグベースでシステムごとのコストの推移を可視化し、アプリケーションチームが自ら責任を持ってコストを管理できるようにしています。
  • システム監視基盤の統一:散在していた監視基盤を統合し、全担当者がメトリクスやアプリケーションの振る舞いを一元的に把握できるようにしました。これにより、トラブルシューティングの時間短縮を実現しています。
  • セキュリティ対策:AWS が提供する様々なセキュリティソリューションを活用し、マルチアカウントでの統合的なセキュリティ管理を実現。セキュリティアカウントに情報を集約し、SIEM 基盤と連携させることで、脆弱性の早期検知と対策を可能にしています。

今後の取り組みとして、ECS コンテナタスクよりも幅広く、粒度の細かいパラメータ制御もセルフサービスで行えるための Kubernetes の活用や、グローバル展開をさらに加速させるために各地域のインフラチームを強化し、follow the sun の運用の実現を目指しています。また、グローバルでのプロジェクト推進体制の構築も進めています。

自動化やセルフサービス化、統一監視基盤の導入など、さまざまな工夫により少人数での大規模クラウド運用を実現しています。グローバル展開を加速させる企業が AWS を活用して大規模なクラウド環境を効率的に運用する方法をご紹介いただきました。

ユニクロ・ジーユーのECアプリの裏側をご紹介

株式会社ファーストリテイリング デジタル業務改革 サービス部 コアエンジニアリングチーム 秋元 俊祐 氏
株式会社ファーストリテイリング デジタル業務改革 サービス部 コアエンジニアリングチーム 佐野 大輔 氏

続いて、コアエンジニアリングチームの方々よりユニクロ・ジーユーの EC アプリの裏側をご紹介いただきました。まず、秋元氏より e コマース(EC)サイトのカート機能における大幅な性能改善とコスト削減の事例についてご紹介いただきました。

カート機能は、ユニクロやジーユーのアプリやウェブサービスで商品を選び、購入手続きを行う際に重要な役割を果たします。従来のアーキテクチャでは、Application Load Balancer の下に Amazon Elastic Container Service (Amazon ECS) があり、Amazon ECS の API Service が Amazon Aurora からデータを読み取る構成でした。しかし、この構成では人気商品のセール時などにトラフィックが急増すると、データベースがボトルネックとなり、レスポンスタイムが大幅に悪化する問題がありました。また、データベースのインスタンスを上位のものに変更することでインフラコストが圧迫されるという課題もありました。

これらの課題を解決するため、NoSQL の一つである Redis をメインデータベースとして採用することを決定しました。 Amazon ElastiCache を利用することで、高いスケーラビリティを確保しつつ、性能を大幅に向上させることができました。
新しいアーキテクチャでは、API Service から直接 Amazon ElastiCache にデータの読み書きを行い、Amazon ElastiCache と Amazon Aurora の間で非同期のデータ同期を行うようにしました。これにより、Redis の性能を最大限に引き出すことができました。

実装上の工夫として、Lua スクリプトを用いた自前のロック機能の実装や、Redis の Sorted Set による更新されたカートの効率的な抽出などが行われました。また、データマイグレーションはゼロダウンタイムで実施され、運用を継続しながら徐々に Redis にデータを移行することができました。

結果として、以前問題が発生したセールの 2 倍以上のトラフィックがあった際も、まったく性能劣化が見られませんでした。レスポンスタイムは p95 で10秒超から 160ms と大幅に改善され、さらに大きなトラフィック増加にも対応できる見込みが立ちました。コスト面でも大きな削減が実現し、Amazon ElastiCache for Redis の Data Tiering 機能を利用することで、さらなるコスト最適化が図られています。

最終的に、データベースのコストが 60 %以上削減され、将来 10 年に渡るスケーラビリティを確保することができました。クラウドサービスを効果的に活用することで、性能向上とコスト削減を同時に実現できることを示していただきました。

続いて、サーチプラットフォームについて、佐野氏よりご紹介いただきました。ファーストリテイリングのシステムは、各業務のマイクロサービスが相互に接続されており、データ連携基盤や API 連携で構成されています。サーチプラットフォームは、商品検索機能を提供するマイクロサービスで、在庫情報や価格情報、商品情報などを他のプラットフォームから取得して利用しています。主な機能には、キーワード検索、カテゴリーページの商品リスト作成、キーワードサジェスト、類似商品リスト作成、店舗在庫検索などがあります。

Amazon OpenSearch Service は現在サーチプラットフォームを含む一部のプラットフォームで利用されています。Amazon OpenSearch Service の特徴として、以下の 3 点が挙げられました。

  1. 柔軟な構造を持つデータを大量に登録可能
  2. キーワード検索や柔軟なクエリの実現
  3. フルマネージドサービスで、リクエスト量に応じたスケールイン/アウトが容易

Amazon OpenSearch Service の長所として、参照用途のアプリケーションに高い性能と拡張性を発揮すること、EC における商品検索のような典型的な機能を既に持っているため開発量を削減できることが挙げられました。

グローバルデジタルコマースの検索に求められる要件として、複数のブランド、多くの国・地域への展開、多言語サポートを効率的にサポートすることが重要です。サーチプラットフォームの実装におけるポイントとして、以下の 4 点が挙げられました。

  1. 機能性:言語特有の解析機能を自作するのは困難で非効率であり、構文解析や正規化などの機能が最初からサービスに組み込まれていることが重要
  2. 展開容易性:自動的にデータが Amazon OpenSearch Service に流れ込むアーキテクチャーの採用
  3. 拡張性:スケールイン/アウトの容易な実行
  4. 運用性:単語・シノニム登録のための効率的なツールの開発

今後の課題として、単語・シノニム登録の業務運用コスト削減が挙げられました。これに対して、機械学習由来の技術(大規模言語モデル、ベクターサーチ、セマンティックサーチなど)の活用が検討されています。また、キーワード検索以外にも、ユーザー体験を向上させる機能の開発や、サーチプラットフォームの改善と並行して新しい地域への展開を進めていくことが課題として挙げられました。

データ連携基盤の実行制御を実現する Amazon ECS を活用したアプリケーション開発

株式会社ファーストリテイリング デジタル業務改革サービス部 インテグレーションエンジニアリングチーム 阪本 圭 氏
株式会社ファーストリテイリング デジタル業務改革サービス部 インテグレーションエンジニアリングチーム 吉元 裕人 氏

続いて、インテグレーションエンジニアリングチームによる、データ連携基盤の取り組みについて阪本氏より紹介がありました。

まず、チームの主な役割として、システム開発の効率化とデータ連携基盤の開発・管理・運用が挙げられました。情報製造小売業として、End-to-End のプロセスに投資を行ってきた結果、データ連携やバッチ処理が複雑化・大規模化していました。そのため、データの整流化とデータ利活用のためのツール整備、そして多ブランド・多国展開後のデータ量に対応した高速な処理の実現が必要とされました。

これらの課題に対して、2 つの主要なコンセプトで取り組んでいます。1 つ目はバッチ処理基盤の整備です。処理依存性や並列分散を制御できるフレームワークを準備し、複雑な依存関係を管理しやすい形に整理しました。2 つ目はデータ連携基盤の整備です。ハブアンドスポーク型のクラウドネイティブな基盤を構築し、あらゆる情報を一元管理してデータの整流化を図っています。特徴として、定義ベースで簡単にルーティング制御ができること、ビジネス領域ごとの特性に合わせて分散配置できること、さまざまなプロトコルやデータフォーマットをカバーできることがあります。

この基盤に求められる中心的な要件として、以下の 4 点が挙げられました。

  1. 安定性:ビジネスの中核を担うため、高い安定性が必要であること
  2. パフォーマンス:ビジネスの変動に耐えられる性能とキャパシティをプランニングできること
  3. 可搬性:簡易に分散展開できること
  4. 多様なアプリケーションとの連携:さまざまなアプリケーションとのシームレスな連携が可能であること

続いて、データ連携基盤の具体的なアーキテクチャや、開発していく中での課題や工夫について吉元氏よりご紹介いただきました。

データ連携基盤は、各業務領域間でデータを効率的に連携させるためのハブアンドスポーク型のシステムとして設計されており、現在 10 のサービスとして 2 つのクラウド、6 つのリージョンで運用されています。システムの開発経緯としては、2015 年にバッチ処理基盤として始まり、徐々に機能を拡張してデータ連携基盤へと進化してきました。2019 年にはコンテナ化やインフラのコード化を実施し、2021 年にはマルチクラウドのサポートを強化しています。

開発・運用において重視している点として、環境の再現性、拡張性、カスタマイズの容易さ、スケーラビリティ、クラウド非依存性などが挙げられました。特に、Amazon ECS を利用したタスク実行の管理に関しては、API 呼び出しに単位時間当たりの回数制限があったり同期的なタスクの状態管理が困難であったりという課題に対して、解決策を独自に実装しています。

具体的には、ワーカーアプリケーションをラッパーでくるむことで、フレームワーク全体の一部として動作させ、ハートビートやコールバックを通じてタスクの状態を同期的に把握する仕組みを実装しています。これにより、ECS クラスターへの状態確認のための頻繁なポーリングによる問い合わせを回避し、アプリケーションの実行状況をよりタイムリーに把握・管理できるようになりました。

今後のチャレンジとしては、以下の 3 点が挙げられました。

  1. 導入の更なる省力化・セルフサービス化の推進:業務アプリケーションチームが容易にデータ連携の仕組みを構築できるようにする
  2. 新しいサービスとの連携強化:デジタル改革に伴う新サービスとの安定した連携を実現する
  3. データ活用の促進:データの蓄積・分析プロセスとの一層の統合を図り、ビジネス価値の創出につなげる

最後に、この取り組みを通じて、複雑化していたデータ連携やバッチ処理の整理統合を図り、クラウドサービスを適切に活用しながら独自のソリューションとしてパッケージ化することで、ビジネスへの貢献を目指していることをご紹介いただきました。

Part 3 に続く)

本ブログは、アマゾン ウェブ サービス ジャパン合同会社 ソリューションアーキテクト 阿南、三好が執筆しました。