この記事について
本記事は、2023年8月に社内で実施した勉強会の内容を基に、社外向けに再編集したものです。
記載の内容は執筆当時の情報であり、現在の仕様やベストプラクティスと異なる可能性があります。
実装にあたっては、必ず最新の公式ドキュメントをご確認いただくようお願いいたします。
前提
今回はユーザー個別に情報を返却するようなサービスを想定しています。
中国はグレートファイアウォールや ICP 登録、独立した AWS アカウント管理など、他地域とは異なる特殊な事情があるため、「中国」と「それ以外」で分けて考慮します。
中国以外の構成
1.いくつの地域に分散してサーバーを設置するか
単一リージョンにサーバーを設置した場合、遠方からのアクセスで遅延が発生するため、地域ごとにサーバーを分散設置すべきかを検討します。
検証
同一地点から各リージョンサーバーへのアクセス時間を計測しました。
参考ツール:
Global Accelerator Speed Test
https://speedtest.globalaccelerator.aws/#/
| リージョン | アクセス時間 |
|---|---|
| 東京 | 226ms |
| バージニア(米国東部) | 1,328ms |
| フランクフルト(ドイツ) | 2,118ms |
| シンガポール | 622ms |
| シドニー | 850ms |
アジア、ヨーロッパ、アメリカの3拠点程度に分散配置するのが現実的かもしれません。
※以下複数リージョンにサーバー設置の前提
2.どのような条件をもとにリージョンの振り分けを行うか
同一ドメインで運用する場合の一例として、AWS Route 53 を用いたルーティングポリシーがあります。
参考:
DevelopersIO , Guri / Hajime Oguri , 【新機能】Amazon Route 53 でアクセス元 IP をベースとしたルーティングがサポートされました(2023年8月閲覧)
https://dev.classmethod.jp/articles/amazon-route-53-now-supports-routing-based-on-source-ip/
- 位置情報ルーティングポリシー
ユーザーの地理的な場所(DNS クエリの送信元)に基づき、トラフィックを処理するリソースを選択できます。
例:ヨーロッパからのアクセスはフランクフルトの ELB にルーティングする、といった運用が可能です。
参考:
AWS公式ドキュメント, 位置情報ルーティング(2023年8月閲覧)
https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/routing-policy-geo.html - 地理的近接性ルーティング(トラフィックフローのみ)
ユーザーとリソースの地理的位置に基づき、最適なリソースにトラフィックをルーティングします。
参考:
AWS公式ドキュメント, 地理的近接性ルーティング(2023年8月閲覧)
https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/routing-policy-geoproximity.html - レイテンシー基づくルーティング
複数の AWS リージョンでアプリケーションがホストされている場合、ネットワークレイテンシーが最も低いリージョンに基づいてリクエストを処理し、ユーザー体験を向上させます。
参考:
AWS公式ドキュメント, レイテンシーに基づくルーティング(2023年8月閲覧)
https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/routing-policy-latency.html - IPベースのルーティング
ユーザーの IP 情報を用いてエンドポイントにマッピングすることで、パフォーマンス最適化やネットワークコスト削減の細かい制御が可能です。
参考:
AWS公式ドキュメント, IP ベースのルーティング(2023年8月閲覧)
https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/routing-policy-ipbased.html
サービスの特性によっては、リージョンごとにサブドメインを分けて運用する構成でも問題ないケースもあります。
3.DBの構成をどのようにするか
一般的な構成として「書き込みは1つのリージョンのDBで受け付け、各リージョンにはリードレプリカを設置する」方法があります。
- クロスリージョンリードレプリカ
AWS RDS では、異なるリージョンにリードレプリカを作成可能です。
参考:
AWS公式ドキュメント, Amazon RDS でのクロスリージョンリードレプリカでサポートされているリージョンと DB エンジン(2023年8月閲覧)
https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/Concepts.RDS_Fea_Regions_DB-eng.Feature.CrossRegionReadReplicas.html
ただし、リージョン間のレプリケーションラグが大きくなる場合があり、実運用では課題となることがあります。
参考:
Medium , kohbis(mitene / FamilyAlbum Team) , Amazon Aurora Global Databaseを導入するまで(2023年8月閲覧)
https://team-blog.mitene.us/mitene-multiregion-aws-aurora-global-database-c0434c60a204 - Rails での読み込み/書き込み分離
ActiveRecord では、書き込みと読み込みで異なる DB に接続する構成が可能です。
class ApplicationRecord < ActiveRecord::Base
self.abstract_class = true
connects_to database: { writing: :primary, reading: :primary_replica }
end
config/database.yml
production:
primary:
database: my_primary_database
username: root
password: <%= ENV['ROOT_PASSWORD'] %>
adapter: mysql2
primary_replica:
database: my_primary_database
username: root_readonly
password: <%= ENV['ROOT_READONLY_PASSWORD'] %>
adapter: mysql2
replica: true
参考:
Railsドキュメント, Active Record の複数データベース対応(2023年8月閲覧)
https://railsguides.jp/active_record_multiple_databases.html
- 実運用上の注意
一部環境(例:fb2)では、上記設定でもリードレプリカへのアクセスが期待通りに振り分けられないケースがありました。
その場合、Aurora の書き込み転送(Write Forwarding)機能を利用することで解決できる可能性があります。
参考:
DevelopersIO , いわさ, [アップデート] Amazon Aurora MySQL でリードレプリカの書き込み転送機能がサポートされたので使ってみた(2023年8月閲覧)
https://dev.classmethod.jp/articles/aurora-local-write-forwarding
中国の構成
1.中国にはグレートファイヤーウォールがあるため、中国国内向けにサーバーを設置する必要がある
「グレートファイアーウォール」とは、中国国内で運用されているインターネット検閲およびアクセス制御システムのことを指します。
グレート・ファイアウォールの仕組みについて
- DNSによるアクセス制御
- 接続フェーズの監視
- 特定キーワードに対するブロック
- 接続対象サイトに対するスキャン
そのため、中国から国外サイトへのアクセスは非常に遅延しやすい傾向があります。
参考:
サイバーセキュリティ.com, グレートファイアウォール(金盾)とは?世界最高峰のセキュリティを誇る中国の壁(2023年8月閲覧)
https://cybersecurity-jp.com/security-measures/6729
2.中国向けwebサイトを展開する場合、ICPライセンス(決済が必要な場合は、商用ICPライセンス)の取得が必要
どのようなWebサイトであっても、中国国内でウェブサイトを開設するときはICP登録が必要になります。 https://www.softbank.jp/biz/blog/business/articles/201907/what-is-icp/

https://www.softbank.jp/business/content/blog/201907/what-is-icp
実際には外資系企業は商用ICPライセンスを取ることがほぼできないため、中国国内で何かのオンラインビジネスをしたいと思っても不可能です。では、どのようにするのかというと、中国内資の企業が前面に立つ、あるいは内資の企業と合併して事業を行わなくてはならないというルールがあり、単独でオンラインビジネスを手掛けることはできません。
引用:ソフトバンク公式 ビジネスブログ, 吉村 真輝,【徹底解説】中国向けWebサイトの基礎知識①ICPライセンスって何?(2023年8月閲覧)
https://www.softbank.jp/business/content/blog/201907/what-is-icp
3.AWSの中国リージョンは存在するが、AWS中国専用のAWSアカウントが必要
参考:
TOKAIコミュニケーションズ, AWS中国リージョンの特徴を実際にログインして検証してみた(2023年8月閲覧)https://www.cloudsolution.tokai-com.co.jp/white-paper/2022/0408-297.html

https://www.cloudsolution.tokai-com.co.jp/white-paper/2022/0408-297.html
この図から確認できるように、AWS 北京・寧夏リージョンは他グローバルリージョンとネットワークから分離されています。
そのため日本で利用している既存AWSアカウントから、他グローバルリージョンを利用するのと同じ感覚でAWS 北京・寧夏リージョンを利用することはできません。
引用:TOKAIコミュニケーションズ, AWS中国リージョンの特徴を実際にログインして検証してみた(2023年8月閲覧)
https://www.cloudsolution.tokai-com.co.jp/white-paper/2022/0408-297.html
他のリージョンのように、Route53によるルーティングやクロスリージョンリードレプリカを用いたデータベース連携は利用できない可能性があります。
そのため、中国向け環境については別ドメインでの運用とする構成が現実的と考えられます。
