×

何百万人ものユーザーのためのシステム設計 (パート2)

何百万人ものユーザーをサポートするシステムを設計することは小さな課題ではなく、継続的かつ継続的な改善が必要です。 何百万人ものユーザーのためのシステム設計(パート1)に続き、数百万人のユーザーに拡大するシステムを構築する方法を調べ続けます。

 2022年04月01日

何百万人ものユーザーをサポートするシステムを設計することは小さな課題ではなく、継続的かつ継続的な改善が必要です。 何百万人ものユーザーのためのシステム設計(パート1)に続き、数百万人のユーザーに拡大するシステムを構築する方法を調べ続けます。

何百万人ものユーザーをサポートするシステムを設計することは小さな課題ではなく、継続的かつ継続的な改善が必要です。 何百万人ものユーザーのためのシステム設計(パート1)に続き、数百万人のユーザーに拡大するシステムを構築する方法を調べ続けます。

1. CDN


CDNは、静的コンテンツの配信に使用されるサーバーの地理的に分散したネットワークです。 静的コンテンツには、画像、ビデオ、CSSファイル、JSファイルなどがあります。

動的コンテンツキャッシングは新しい概念であり、この記事の範囲を超えています。 リクエストパス、クエリ文字列、Cookie、リクエストヘッダーに基づいてHTMLページをキャッシュできます。

CDN – Mạng lưới phân phối nội dung cho hệ thống lớn

CDNのワークフロー

コンテンツ配信ネットワーク (CDN) の使用 - AWS Elemental MediaStore

 

・ユーザーが画像のURLを使用してimage.pngを取得した場合。 CDNによって提供されるURLのドメイン名。 最後の2つの画像URLは、AmazonサイトとAkamaiCDNでの画像URLの状態を示すために使用されます。

https://mysite.cloudfront.net/logo.jpg

https://mysite.akamai.com/image-manager/img/logo.jpg

・CDNサーバーのキャッシュにimage.pngがない場合、ネイティブWebサーバーまたはAmazonS3などのオンラインストレージからファイルを要求します。

・オリジンは、キャッシュされた画像の保存期間を説明するHTTPヘッダーTime-to-Liveを含むimage.pngをCDNサーバーに返します。

・CDNは画像をキャッシュしてユーザーAに返します。TTLが期限切れになるまで画像はキャッシュに残ります。

・ユーザーBが同じ写真にリクエストを送信します。

・TTLが満了していない場合、画像はキャッシュから返されます。

2. Stateless web tier


web tierをスケールアウトするには、Web層の状態を変換する必要があります。 これは、SQLやNoSQLなどの長期的なメモリ内セッションデータにとっての課題です。 クラスタ内の各Webサーバーは、データベースの状態データにアクセスできます。 これはstateless web tierと呼ばれます。

 

3. Stateful architecture


ステートフルサーバーとステートレスサーバーのいくつかの違いは、ステートフルサーバーは、ある要求から次の要求までクライアントのデータ(状態)を記憶することです。 ステートレスサーバーはその状態を記憶する必要はありません。

ユーザーAのセッションデータとユーザーイメージもサーバー1に保存されます。ユーザーAを認証するには、HTTPリクエストをサーバー1に送信する必要があります。リクエストがサーバー2などの別のサーバーに送信されると、リクエストはエラーを受け取ります。Aのセッションはそうではないためです。同様に、ユーザーBを認証するためのHTTP要求は、サーバー2に送信され、ユーザーCはサーバー3に送信される必要があります。

4. Stateless architecture


 

ステートレスアーキテクチャでは、ユーザーからのHTTPリクエストは、共有ストレージから状態データをロードする任意のWebサーバーに送信できます。 状態データは、Webサーバーの外部にあるデータ共有に保存されます。 ステートレスシステムは、よりシンプルで、より強力で、より拡張性があります。

Stateful and Stateless Applications and its Best Practices

セッションデータをWeb層から移動し、永続ストレージに保存します。 データ共有者は、RDBMS、Redis、NoSQLなどです。NoSQLは拡張性のための最も簡単な選択です。 Auto-scalingとは、トラフィックに基づいてWebサーバーを自動的に追加または削除するプロセスを意味します。 状態データがWebサーバーからクリアされた後、自動スケーリングが機能します。

ウェブサイトを徐々に拡大し、多くの海外ユーザーを魅了します。 可用性を向上させ、すべての地域でより良いエクスペリエンスを提供するには、複数のデータセンターをサポートすることが不可欠です。

5. データセンター


次の図は、2つのデータセンターの例です。

データセンター16選を比較!選定の重要ポイント8つを解説 | QEEE

 

通常の操作では、ユーザーは地理的にルーティングされ、英語でgeoDNSルーティングされます。geoDNSは、ドメイン名をユーザーの場所に基づいてIPアドレスに解決できるようにするDNSサービスです。データセンターがダウンした場合、すべてのトラフィックを稼働中のデータセンターに転送します。

マルチデータセンターを設置する際に取り組むべき技術的課題

・交通ナビゲーション
適切なデータセンターへのトラフィックを促進するには、効果的なツールが必要です。 GeoDNSを使用すると、ユーザーの場所に基づいてトラフィックを最寄りのデータセンターに転送できます。

・データ同期
異なるドメインのユーザーは、異なるローカルキャッシュまたはデータベースを使用できます。フェイルオーバーが発生した場合、トラフィックはデータが利用できないデータセンターに転送される可能性があります。一般的な戦略は、複数のデータセンター間でデータを複製することです。

・テストと展開
マルチデータセンターのセットアップでは、さまざまな場所でWebサイト/アプリをテストすることが重要です。自動展開ツールは、すべてのデータセンターでサービスの一貫性を維持するために重要です。

6. Message Queue


メッセージキューは、非同期通信をサポートする永続的なメモリ内コンポーネントです。 バッファとして機能し、リクエストを非同期で配信します。 メッセージキューの基本的なアーキテクチャは非常に単純です。 パブリッシャーまたはプロデューサーと呼ばれる入力サービスは、メッセージを作成し、メッセージキューに公開します。 サブスクライバーまたはコンシューマーと呼ばれる他のサービスまたはサーバーがキューに接続し、メッセージで定義されたアクションを実行します。

Messege Queue – Bộ phận không thể thiếu trong các hệ thống lớn và  microservice architecture | Từ coder đến developer – Tôi đi code dạo

 

デカップリングにより、メッセージキューは、拡張性と信頼性の高いアプリケーションを構築するための優れたアーキテクチャになります。 メッセージキューを使用すると、パブリッシャーはキューにメッセージを作成して、現在存在しないサブスクライバーが後でメッセージを処理できるようにすることができます。 サブスクライバーは、パブリッシャーがいない場合でもメッセージを読むことができます。

以下の画像では、Webサーバーが画像処理をメッセージキューにアップロードしています。 画像処理ワーカーは、メッセージキューから作業を受け取り、画像のカスタマイズタスクを非同期で実行します。 パブリッシャーとサブスクライバーは独立してスケーリングできます。 キューのサイズが大きくなると、処理時間を短縮するためにワーカーが追加されます。 ただし、ほとんどの場合キューが空の場合、ワーカーの数が減少する可能性があります。

数百万人以上のユーザー

システム拡張は無限ループです。 反復するたび、新しいことを学びます。 数百万人のユーザーに拡張するための新しい戦略では、より多くの調整が必要です。 たとえば、システムを最適化し、より均一なサブサービスに分割する必要がある場合があります。 このレッスンで学んだすべてのテクニックは、新しい問題を解決するための優れた基盤を提供します。 記事の最後に、調べたことの要約があります。

・ステートレスWebアーキテクチャ
・どこにでもバックアップを作成する
・可能な限りキャッシュする
・マルチデータセンターのサポート
・・CDNに静的リソースを保存する
・シャーディングを使用したデータのスケーリング
・複数のデバイスに階層を分割する
・システムを監視し、自動化ツールを使用する

 

オフショア開発でシステムをご検討されている方々はぜひ一度ご相談ください。

※以下通り弊社の連絡先

アカウントマネージャー: クアン(日本語・英語対応可)

電話番号: (+84)2462 900 388

メール:konnichiwa@hachinet.com

お電話でのご相談/お申し込み等、お気軽にご連絡くださいませ。

 無料見積もりはこちらから▶

いずれかのサービスについてアドバイスが必要な場合は、お問い合わせください。
  • オフショア開発
  • エンジニア人材派遣
  • ラボ開発
  • ソフトウェアテスト
※以下通り弊社の連絡先
電話番号: (+84)2462 900 388
メール: contact@hachinet.com
お電話でのご相談/お申し込み等、お気軽にご連絡くださいませ。
無料見積もりはこちらから

Tags

ご質問がある場合、またはハチネットに協力する場合
こちらに情報を残してください。折り返しご連絡いたします。

 Message is sending ...

関連記事

 2025年11月11日

SaaS開発者必見!Stripeで始めるサブスク課金システム実装入門:フロントもバックも分かる実践ガイド

SaaSビジネスの根幹は「安定した継続課金」にあります。どれだけ優れたプロダクトでも、請求や決済管理が煩雑だとスケールは難しい。そこで世界的に多くのスタートアップが導入しているのがStripeです。複雑な決済フローをAPIで簡潔に実装でき、フロントエンド・バックエンド双方が扱いやすい設計が魅力です。本稿では、SaaSにおけるStripeを使ったサブスク課金システムの導入方法を、技術とビジネスの両面から紹介します。

 2025年11月10日

成功するSaaSプロダクトには“解約防止戦略”がある:LTV最大化の秘訣をマーケター視点で解説

SaaSビジネスは「契約を獲得すること」よりも「契約を続けてもらうこと」で成長します。顧客が長く利用し、継続的に価値を感じてくれるほどLTV(顧客生涯価値)は高まります。その一方で、解約が多ければ事業はすぐに頭打ちになる。成功するSaaSには必ず、継続を支える明確な解約防止戦略があります。本稿では、その仕組みと実践方法をマーケティング視点でわかりやすく紹介します。

 2025年11月06日

SaaSのUI/UXでユーザーを虜にする3つの心理学的テクニック – 離脱を防ぎ、熱心なファンを育てる設計法

SaaS(Software as a Service)の世界では、機能の多さよりも「どれだけストレスなく、心地よく使えるか」がユーザーの評価を左右します。優れたUI/UXは単なる見た目の美しさではなく、ユーザー心理を理解し、行動を自然に導く“体験設計”の結果です。特に競争が激化する今、ユーザーが「使い続けたい」と感じるプロダクトを作るためには、心理学の知見をUI/UXに取り入れることが欠かせません。本記事では、SaaSのUI/UXでユーザーを虜にする3つの心理学的テクニックを具体例とともに紹介し、なぜそれが離脱を防ぎ、ファン化につながるのかを解説します。

 2025年10月31日

なぜ日本企業のSaaS化は進まないのか?現場文化とレガシーが生む本当の壁

近年、クラウド化やDX(デジタルトランスフォーメーション)が加速する中で、SaaSの導入は企業の生産性を高める有効な手段として注目されています。しかし、日本企業では欧米に比べSaaS化が思うように進まず、「なぜ日本だけ遅れているのか」という議論が続いています。その背景には、単なる技術格差ではなく、長年にわたるレガシーシステムへの依存、稟議や合意形成を重んじる企業文化、そして“現場の声が経営に届きにくい”という構造的課題があります。本記事では、現場のリアルな視点を交えながら、日本企業のSaaS化が進まない理由と、それを乗り越えるための具体的な突破口を探っていきます。

 2025年10月27日

2025年のSaaSビジネス成功法:成長企業が共通して実践する5つの戦略

2025年、SaaS(Software as a Service)ビジネスはもはや単なるクラウドソフトウェアの提供形態ではなく、企業の競争力を左右する戦略的基盤として位置づけられています。デジタル変革(DX)の進展、AIや自動化の普及、そして業界ごとのニーズ多様化により、SaaS市場は急速に成熟期へと向かっています。こうした中で成功している企業には明確な共通点があります。それは「顧客価値を中心に置き、柔軟で拡張性のある仕組みを持ち、継続的に進化を続けている」という点です。本記事では、2025年のSaaSビジネスで成功する企業が共通して実践している5つの重要なポイントについて掘り下げていきます。

 2025年10月20日

ノーコードで変わるアプリとWeb開発の違い|Bubble・Glide活用の実践ポイントとは?

「アプリとWebの違い」は、長年にわたり開発現場で重要な判断基準として語られてきましたが、近年のノーコードツールの進化によって、その境界はますます曖昧になりつつあります。特にBubbleやGlideなどの登場により、非エンジニアでも本格的なアプリやWebサービスを構築できる時代が到来しています。本記事では、アプリとWebの基本的な違いを再確認しながら、ノーコード時代における開発プロセスやチーム編成の変化、必要なスキルについて具体的に解説していきます。