【レポート】グローバル対応の促進!「スマートニュースの世界展開を支えるテクノロジー」 #AWSSummit

サービスのグローバル対応を進めるために、Global Accelerator や Aurora Global Database の利用を検討されているようです。
2020.09.11

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、崔です。

皆さんは、スマートニュースを利用されているでしょうか。
私は、もちろん利用しています。スマホアプリの中でも、毎日利用しているアプリのうちのひとつです。

今回は、2020年9月8日から9月30日の間で開催されているAWS Summit Online のセッションで「スマートニュースの世界展開を支えるテクノロジー」を視聴しましたので、レポートをお届けします。
グローバル展開されているスマートニュースが、どのように改善されようとしているのか、裏側がわかるセッションでした。

セッション情報

スピーカー

スマートニュース株式会社

  • Engineering Division, Engineering Manager, Backend Systems, 井口 貝 氏
  • Engineering Division, Software Engineer, 和田 拓朗 氏

概要

日本発のニュースアプリ SmartNews は世界でも展開しており、特にアメリカでユーザ数を伸ばしています。 従来、バックエンドシステムは AWS 東京リージョンに構築していましたが、アメリカでのユーザ数増加に従い US リージョンにも構築することで、より良いユーザ体験を提供できるということがわかりました。 本講演では、Amazon Global Accelerator をはじめとする様々な製品を活用して、どのように私達が世界展開に備えるためのマルチリージョナルアーキテクチャを構築したか、についてお話します。

資料

アジェンダ

  • Key Takeaways
  • SmartNewsとは
  • サービスの世界展開とシステム課題
  • AWSのグローバル系サービス群による解決方法
  • 現状の取り組み
  • 今後のロードマップ
  • まとめ

Key Takeaways

このセッションを聞いて、持ち帰ってただきたいことは3つ。

  • SmartNewsがサービスとして世界展開をしていること
  • その世界展開において、どのようなシステム課題があり、AWSのグローバル系サービスを使ってどのように解決しようとしているのか
  • そのシステム課題解決の今後の展望について

SmartNewsとは

  • 日本発のサービスとして、北米ならびに世界150ヶ国以上で利用されているニュースアプリ
  • サービスの規模として、月間利用者数が2000万人を超えており、またダウンロード数も5000万を超えている
  • 2020年の従業員数は300人を超えており、3カ国6拠点でサービス・組織ともにグローバルレベルで拡大を続けている

AWSのサービスを非常に多岐にわたり利用しており、特にDatabaseやNetworking/Routingに関して、グローバル展開に便利な機能を使い課題解決を図っている。

サービスの世界展開とシステム課題

  • Smartnewsは、米国においては主要なニュースアプリの一つ
  • 2018年には英語圏において、メディアへの送客元として第10位にランクインしているアプリ
  • 2019年には米国のユーザー数で前年比5倍以上の成長を記録
    • 米国で最も早く成長しているニュースアプリ

  • サービスをグローバル展開しているが、それを一気に引き受けるシステムは 現在はAWSの東京リージョンのみで稼働
  • 米国やその他の国や地域のユーザーは、大西洋を渡ったアクセスを強制されている
  • この結果、ニュースの取得や閲覧体験において、日本国内と比べて数百ミリ秒程度の速度差が見られる

サービスとして、すべてのユーザーにニュースの取得・閲覧体験の快適さを提供したい」という強い思いと、「快適さが増えることによるユーザーの中長期的なエンゲージメント向上への期待」から、このような現状のシステム構成に大きな課題を持っている。

AWSのグローバル系サービスによる解決手法

その課題をAWSのグローバル系のサービスを使って、どのように解決しようとしているか。
解決したいシステム課題というのは、米国やその他の国・地域のユーザーからのアクセスにも可能な限り素早く応答するシステムを組むというもの。

  • システムを複数リージョンに配置して、ユーザーからのアクセスを適切に分散させる仕組みが必要
  • システム全体のデータ整合性を保ちつつ、それを各リージョンに配布する戦略も合わせて必要

AWS Global Accelerator

まず、システムを複数リージョンに配置して、アクセスを適切に分散させる仕組みについて、AWS Global Accelerator(AGA)を利用予定。

AGAの利点としては、ユーザーのネットワークのトポロジーに応じて最適な AWSリージョンが選択できること。
このため、レイテンシーの向上が期待できる。
また AGAのedgeからAWSリージョン上へのシステムへの経路としては AWS専用のバックボーンネットワークが利用される為、サービスへの経路最適化も可能。
複数のリージョンにシステムを構築し、各リージョンのALBに対して AGAを利用してアクセスを分散させていく。

Aurora Global Database

次に、システム全体のデータ整合性を保ちつつ、それを各リージョンに配布する戦略について。

データベースに関しては、既にAuroraをメインで利用していることもあり、Aurora Global Databaseという機能を利用。
戦略としては、データの書き込みを単一のリージョンに集約し、読み取り専用のクラスターを複数のリージョンに配置してレプリケーションを実施。
これによりwrite global, read local と呼ばれる状態を実現しようと考えている。

Aurora Global Database の利点は次の点。

  • storage layerでの高速レプリケーションにより
    • レプリカラグの最小化
    • writerに対する負荷を小さく

また、multi-writeによるデータ整合性担保の複雑性を回避することも狙い。

Amazon ElastiCache Global Datastore

もう一つキャッシュレイヤーへの適用も検討。

キャッシュレイヤーとして、Distributed CacheとしてRedisを利用しており、この箇所にはElastiCache Global Datastore の利用を検討。
Auroraと同じく、Cacheに対しても単一リージョンでの書き込みと複数リージョンでの読み込み、write globalとread localを実現。

現状の取り組み

2020年のロードマップとしては、6つの項目があり、Proof of Conecept までが完了している。

Proof of Conecept の効果測定として、

  • Multi-Regional Architectureを構築し、効果測定を行う(東京とバージニアリージョン)
  • 米国やその他の国・地域のユーザからのアクセスにも可能な限りlow-latencyで応答したい」という課題が解決されるか検証

構成としては、次のようなかたち

  • 東京リージョン及びバージニアリージョンに、EKSクラスタを構築
  • AGAのバックエンドにALB(kubernetesのIngress)を設定
  • バージニアリージョンには Aurora Global DatabseとElastiCache Global Datastoreを作成

検証パターンとしては、下記のパターンで実施した。
AWS Global Accelerator の有無。
Aurora Global Database 利用時の、ElastiCache Global Datastore の有無。

検証結果は、次のとおり。

結論から言うと、Case4では改善が見られた。
(AGA,Aurora Global Database, ElastiCache Global Database 全て採用したケース)
米国西海岸からでは27%ほどの改善、東海岸では95%の改善結果であった。

検証結果のまとめは次のとおり。

  • APIのレスポンスタイムを最大95%削減することができた
  • 米国の西海岸と東海岸では、改善結果に差があった
    • 西海岸のリージョンにも構築することで改善は見込める

今後のロードマップ

  • どのようにMulti-Regionalにしていくか
    • offline/online 両方のワークロードを持つ箇所など
    • DynamoDB Global Tablesの検討
  • replication lagへの対応
  • disaster recovery の運用設計
    • failover/failback検証
    • AGAのregion traffic切替検証

  • サービスとしてのダウンタイムが無いようにどのように移行するか
  • ロールバック手法の検証

まとめ

所感

スマートニュースでは、現在、東京リージョンのみで、米国のユーザに対してサービス提供しているようです。
これを改善するために、AWS Global Accelerator、Aurora Global Database、 ElastiCache Global Datastore の利用を検討しているとのことでした。
PoCを実施し、それらを採用した結果についても、満足いくものが得られているようです。
また、バージニアだけでなく、例えば、オレゴンリージョン等も併用すると、米国内のレスポンスは大幅に改善される見込みでした。
今後は、システム移行の検討や、ロールバック手法等の検証を進めていくとのことでした。
これからのグローバル対応についても、注目していきたいと思います。