Stack Overflow (Stack Exchange Network) で使用されている構成については、Performance で公開されています。
SQL Server については、4 台のサーバーで構成されていることが公開されており、上記の情報では次のような構成となっているとされています。
- Stack Overflow
- RAM: 1.5 TB
- DB Size: 2.8 TB
- Stack Exchange / Careers / Meta
- RAM: 768 GB
- DB Size: 3.9 TB
このような環境で平均的な CPU の使用率が 10% 以下になっているということは有名な情報ではないでしょうか。
日本語時の情報としては Publickey のStack Overflowの裏側は、Webサーバ9台、SQL Serverが4台など。月間5億6000万PVをさばくシステムの状況を公開中 が有名かと。この記事は 7 年前のものとなるため、現状とはハードウェアのサイズが変わっていますが、基本的な構成は変えることなくサービスが提供されているかと思います。
構成についてはさらに詳細な情報が公開されており、次の記事から確認できるようになっています。
- Stack Overflow: A Technical Deconstruction
- Which tools and technologies are used to build the Stack Exchange Network?
SQL Server については、Windows Server 2016 + SQL Server 2019 で構成されており、どのようなハードウェアを使用しているかについても公開されています。(SQL Server のハードウェアについては、以前の環境となっているようで、現状使用している 1.5 TB の環境ではなさそうですが参考になります)
先日開催された、EightKB 2022 August で、Stack Overflow で使用されている Always On 可用性グループの SQL Server の運用についてのセッションがありました。
動画が公開 されており、Stack Overflow で使用されている SQL Server の実際の環境や運用について興味深い内容が沢山紹介されていました。
本稿では、先日開催されたイベントのセッション内で公開された情報や、Stack Overflow の環境の歴史を学ぶためにはどのような情報を確認できるかをまとめておきたいと思います。
私も適宜情報を再確認している状態で、本投稿は頻繁に追記を行っていこうと考えています。
Contents
Stack Overflow の SQL Server の構成
Stack Overflow で使用されている SQL Server については、Always On 可用性グループによる Live / Hot Standby 構成であり、二つのデータセンターで構成されていることは以前から公開されていました。
EightKB 2022 August では、この Always On 可用性グループの実際の運用について興味深い内容が語られていたのですが、その中では構成についても説明がありました。
Stack Overflow では、次のような SQL Server の構成が取られているとのことです。
データセンターとしてはニューヨーク (NY) とコロラド(CO) を使用しており、ニューヨークをメインのサイトとして、コロラドをバックアップ用のデータセンターとして使用しているとのことです。
Stack Overflow としては、5 個の DB / Stack Exchange としては 388 個の DB を使用しており、これらを可用性グループで冗長化し、分散型可用性グループ (DAG) を使用して、レポート用のサーバーにデータの連携を行っているとのことです。各サーバーは WSFC のクラスターインスタンスではなく、シングルサーバーの SQL Server を使用しており、シンプルなハードウェア構成が取られています。
セッション内では Stack Overflow で使用されている OSS として公開されている Opserver の画面でも構成が紹介されています。
3 ノードの Always On 可用性グループを NY と CO で構成し、要件に応じて、同期 / 非同期を使い分けていることが確認できます。DB についてはも、5 / 388 と上述のデータベースが作成されていることが確認できますね。
読み取りのワークロードについては、読み取りセカンダリーを活用してサービスが提供されています。
EightKB 2022 August では、この環境の可用性グループを運用する際の興味深いノウハウについていくつも発表が行われており、可用性グループを運用する際に意識しておきたいことがいくつもありましたので、可用性グループを使いこなす際には一度見ておくとよいかと思います。
Stack Overflow の SQL Server の変遷
上述のとおり、Stack Overflow では、2022/8 時点では、Windows Server 2016 + SQL Server 2019 の組み合わせが使用されています。
Stack Overflow は当初は、1 台の Windows Server 2008 Standard Edition でサービスが提供されていたということは、Our Dedicated Server で公開されています。当時は SQL Server については、SQL Server 2005 が使用されていたのではないでしょうか。
この環境がサービスの成長に合わせ、冒頭で紹介した環境に構成が変わっていくのですが、この構成の変遷についても情報が公開されており、SQL Server のバージョンアップについては、インプレースアップグレードを実施したタイミングの作業については Youtube で公開されていたりと、かなりオープンに情報が公開されています。
次のような情報を確認することで、Stack Overflow で使用されていた SQL Server の歴史を見ることができるのではないでしょうか。(
SQL Server に関しての情報だけでも興味深い内容が多々あるので、こまめに本投稿をアップデートしようと思っています。
2008
- 2008-04-28: Our Dedicated Server
- 2008-10-??: SQL 2008 upgrade & tuning for StackOverflow.com
- 2008-10-??: Before you upgrade to SQL Server 2008…
- 2008-10-29: Added a Second Server
- 2008-11-??: StackOverflow’s SQL 2008 FTS issue solved
2009
- 2009-01-??: New StackOverflow database server coming
- 2009-01-12: New Stack Overflow Server Glamour Shots
- 2009-01-25: New Stack Overflow Servers Ready
2010
- 2010-10-22: Datacenter Migration Oct. 23
- 2010-10-29: Stack Overflow’s New York Data Center
- 2010-10-30: Database Upgrade
2012
2013
- 2013-11-22: What it takes to run Stack Overflow
2015
- 2015-01-06: Stack Overflowの裏側は、Webサーバ9台、SQL Serverが4台など。月間5億6000万PVをさばくシステムの状況を公開中
- 2015-06-12: Scaling Stack Overflow: Keeping it Vertical by Obsessing Over Performance
- 2015-06-21: Stack Overflowを支えるモノシリックアプリをパフォーマンス重視でスケールアップする
2016
- 2016-02-17: Stack Overflow: The Architecture ? 2016 Edition
- 2016-03-29: Stack Overflow: The Hardware ? 2016 Edition
- 2016-05-03: Stack Overflow: How We Do Deployment – 2016 Edition
- 2016-11-15: How We Make Money at Stack Overflow: 2016 Edition
2018
- 2018-03-17: Stack Overflow SQL Server Upgrade (2016 to 2017)
- 2018-11-07: How we upgraded Stack Overflow to SQL Server 2017
- 2018-11-29: Stack Overflow: How We Do Monitoring – 2018 Edition
2019
- 2019-07-18: How Stack Overflow upgraded from Windows Server 2012
- 2019-08-06: Stack Overflow: How We Do App Caching – 2019 Edition
2020
- 2020-02-06: Recovering Lost Linked Servers
- 2020-02-21: A gotcha when upgrading to SQL Server 2019
- 2020-04-29: Stack Overflowがアーキテクチャを.NET Frameworkから.NET Coreに移行
[…] https://blog.engineer-memo.com/2022/08/08/stack-overflow-%e3%81%a7-sql-server-%e9%81%8b%e7%94%a8%e3%… […]
【後で読みたい!】Stack Overflow で SQL Server 運用を学ぶ際に見ておきたい情報 (Stack Overflow の SQL Server の歴史) | Tak's Bar
8 8月 22 at 15:34