はじめに

こんにちは。NTTデータグループ クラウド技術部です。
AWS主催のグローバルイベント「AWS re:Invent 2023」が2023年11月27日から12月1日の5日間にわたりアメリカ・ラスベガスで開催されました。
今回はAWS re:Invent 2023参加報告レポート第5弾として、AWS Ambassadorである筆者の川畑が特に面白かったと感じたセッションをご紹介します。

そのセッションとは、「Modernization of Nintendo eShop: Microservice and platform engineering (GAM306)」です。

タイトル通り、日本が世界に誇る代表的なゲーム会社である「任天堂」が、自社のオンラインショップである「Nintendo eShop」をAWS上でマイクロサービスを用いて、モダナイズ(近代化して再構築)した事例セッションになります。

マイクロサービスはAWSをはじめとしたクラウドで新たにWebサービス開発を行おうとする際に、採用されるケースが多くなってきたアーキテクチャスタイルです。 なお、筆者は当サイト「TECH+」にて、2019年頃からAWSにおけるクラウドネイティブやマイクロサービスをテーマにした連載を寄稿しており、その特徴やメリットはぜひこちらの記事をご参照ください。

【参考出典】
1)AWSで作るマイクロサービス
https://news.mynavi.jp/techplus/series/aws2/
2)AWSで作るクラウドネイティブアプリケーションの基本
https://news.mynavi.jp/techplus/series/AWS/
3)AWSで作るクラウドネイティブアプリケーションの応用
https://news.mynavi.jp/techplus/series/aws_adv/

この「マイクロサービスを用いてモダナイズする」というセッションは、筆者のまさに専門技術のど真ん中にあるテーマであり、日本を代表するグローバル企業の「任天堂」がどのようにそれを達成したのか非常に興味を惹かれるものでした。
なお、セッション自体はすでにYouTubeのAWS Events ページでも公開されています。

筆者と同じようにこの分野に強い興味がある方はぜひ動画をご覧ください。
ただ、発表は全編英語となります。本記事ではこのセッションで素晴らしいと感じた点を、筆者の見解や感想を交えて日本語でお伝えします。

Nintendo eShopのモダナイゼーションプロセス

筆者と同じく、任天堂のゲーム製品と共に人生を歩んできた読者ならおそらく利用したことはあるでしょう(筆者は6才の頃からファミコンのスーパーマリオ3で遊んでいました)。 「Nintendo eShop」は、Nintendo Switchや3DSなどゲーム機の中からもインターネットを経由してソフトをダウンロード購入できる、オンラインショップです。

セッション中の説明によれば、「Nintendo eShop」では、ゲームビジネスの拡大に伴い、以下のような段階を経て、変化を遂げていったそうです。

  1. オンプレミス
    Java / Tomcat / Oracle Databaseで構築されたモノリシックなアプリケーション。 ビジネスの拡大に伴い、様々な機能・非機能要求が求められるようになっていった。
  2. AWSへの移行
    スケーラビリティやアジリティを享受するためにAWSへ移行。移行したのはよいものの、その後アプリケーションが増え、多くのアプリケーションがOracle Databaseの単一のスキーマテーブルを共有していたため、リリースコストやテストの大変さなどが課題に。
  3. アプリケーションのモダナイゼーション
    ビジネスにおける短期間でのリリースサイクルを実現するため、すなわち、迅速な開発や長期間保守しやすい環境を構築するためにマイクロサービスアーキテクチャを選択。同時に、プラットフォームエンジニアリングといった技法を合わせて開発生産性のさらなる向上を実現した。

パッと聞いたところ、多くの企業でも同じような課題を抱えていて、参考になりそうな点が多々ありそうです。さて、任天堂はどのようにして開発のBダッシュを実現したのでしょうか。

マイクロサービスの戦略

任天堂はモダナイゼーション戦略としてマイクロサービスを採用しました。その中で実に模範となるようなアプローチを取っています。

開発における迅速性(アジリティ)を向上させるために、各マイクロサービスにおける責任単一の原則や、開発者の責任範囲に応じたドメイン境界の設定(ドメイン駆動設計)、それにあわせたチーム構造・役割分担など、マイクロサービスアーキテクチャのメリットを最大限に享受できるよう工夫しています。

また、プラットフォームエンジニアリングというアプローチで開発を実現しています。
これは各自がセルフサービスでアプリケーションが動くプラットフォームを構築できるよう、統制が取れたツールセット・仕組みを組み合わせます。これによりチームが独立して開発を行い、影響範囲を局所的に抑えることが可能になります。

マイクロサービスを実現するための、AWSマネージドサービスの活用

AWSで短期間のリリースサイクルを実現するために、例えば以下のようなかたちで、AWSマネージドサービスを活用しています。

  • 各マイクロサービスでAWSアカウントを分離し、Organizationsを使って権限などの統制をとりながら、アプリケーション環境やチームの独立性を担保。
  • コンテナオーケストレーターは、各チームがプラットフォームを管理できるように、マルチテナントなクラスターとなるEKSではなくECSを使う。
  • 各AWSアカウントのVPC上に構築したサービスはVPC Latticeを使い、クロスアカウント・クロスVPCなマイクロサービスを実現する。
  • サービス間の認証・認可や、リクエストの流量制御など、横断的な処理はECS Service Connect Proxyを使ってサイドカー的に実現する。

上記は説明の中で「なるほど」と感じた一例ですが、AWSでマイクロサービスのメリットを実現するために、任天堂さんが各マネージドサービスを高度・発展的に使いこなしていることがよくわかるセッションでした。

おわりに

マイクロサービスという言葉が巷に登場して早10年ほどが経過し、そのアーキテクチャが年々当たり前のようになってきました。そして任天堂の事例を通じて、それを実現するための素晴らしい工夫を知ることができました。

マイクロサービスアーキテクチャは、サービスの分割方法やトランザクションの管理をどうするのかといった点に関心が持たれることが多いですが、今回の「Nintendo eShop」の事例では、開発リリースサイクルの短期化や年々増加する要求リクエストを効率よく処理するためのスケーラビリティなど、ビジネス上の課題に対し、マイクロサービスの模範のようなアプローチで対応されています。

re:Inventのユースケースセッションでは、AWSを活用して課題を解決する事例が紹介され、これは多くの企業が抱える同じような問題に対する参考になると思います。
新サービスや機能追加発表、ゲームイベントが目立つre:Inventではありますが、こうしたセッションに目を向けるのも 一つの醍醐味です。次回参加される方は、ぜひこうしたユースケースセッションにも注目してみてください。

著者紹介

川畑光平 KAWABATA Kohei

NTTデータ エグゼクティブ ITスペシャリスト ソフトウェアアーキテクト・デジタルテクノロジーストラテジスト(クラウド)
金融機関システム業務アプリケーション開発・システム基盤担当、ソフトウェア開発自動化関連の研究開発を経て、デジタル技術関連の研究開発・推進に従事。
Red Hat Certified Engineer、Pivotal Certified Spring Professional、AWS Certified Solutions Architect Professional等の資格を持ち、アプリケーション基盤・クラウドなど様々な開発プロジェクト支援にも携わる。

NTTデータの取り組みの詳細はこちら

[PR]提供:NTTデータ