Strona Główna / Blog

Czy Gigantyczny Serwis Potrzebuje Gigantycznej Infrastruktury – StackExchange

Mirek Burnejko

Mirek Burnejko

Rozmawiam w języku Amazon Web Services, Microsoft Azure i Google Cloud Platform. Skontaktuj się z nim pisząc na ten adres.

Kilka dni temu trafiłem na artykuł StackOverflow: 560M Pageviews A Month, 25 Servers, And It’s All About Performance. StackExchange, w skład którego wchodzi również StackOverflow, ma 54 miejsce na świecie pod względem największego ruchu w Internecie.

Artykuł przeszedłby pewnie przez sito codziennych wiadomości, że do obsługi takiego ruchu używają 25 serwerów (mowa jest również o 27), a cały ruch może być obsłużony przez… 5 (8). 8 serwerów do ponad 500.000.000 odsłon miesięcznie.

Zagłębmy się więc w architekturę StackOverflow. Znajdziesz tu opis tego co posiadają plus linki do materiałów źródłowych, gdzie znajdziesz bardziej szczegółowe informacje, prezentacje i opisy.

Czytaj dalej.

Spójrzmy Na Liczby

Statystki z 30 dni.
Ruch HTTP wysłany: 18.5 TB
Zapytania do Load Balancera: 2.8 miliarda
Zapytania SQL (tylko dla stron internetowych): 8.3 miliarda
Dane przesłane z CDN: 15.75 TB
Zapytania do CDN: 1.39 miliarda
Cache hit ratio: 99.59%
Zapytania non-cache: 5.7 miliona
Ruch przechodzący przez przełączniki rdzeniowe: 0.5 Petabajta

110.000 linii kodu
27 serwerów (ponoć wystarczy 8, aby serwis działał w 100%)
Serwery bazodanowe obciążone na poziomie 10%
5 poziomów cache

Spójrzmy Na Sprzęt

11 serwerów Dell R610 – IIS
2x Xeon E5640, 32 GB RAM
Windows Server 2012
RAID 1, 2x Intel 300GB SSD
4x 1Gb network teaming

3 serwery Dell R720xd – Bazy Danych
Windows Server 2012
2x Xeon E5-2580, 384 GB RAM
21 dysków, 4 na system
RAID10, 16+1 Intel 710 200GB SSD na bazy
2x 10GB network teaming

3 serwery Dell R710 – Bazy Danych
Windows Server 2012
2x Xeon X5680, 288 GB RAM
6 dysków, 2 na system
RAID 10, 4 Intel S3700 800GB SSD na bazy
2x 10GB network teaming

Dodatkowo:
3 serwery Dell R620HAProxy, NGINX, Orion Monitoring
7 serwerów Dell R610Redis, Tag engine/search, NetBackup, Logi, VMware ESXi

1x Macierz iSCSI Equal Logic PS6110X (tylko dla ESXi)
2x Cisco ISR G2 3945
2x Cisco ASA 5525-X
2x Cisco Nexus 5596UP + Nexusy 2000 (jako extender)

Do pracy serwisu wystarczą:
2x SQL Server
2x Serwery WWW
1x Serwer Redis
1x Serwer Tag Engine
1x Serwer Elasticsearch
1x Load balancer
1x Przełącznik
1x Firewall
1x Router

Spójrzmy Na Oprogramowanie

Windows Server 2012 x64
Web Server IIS 8.0
SQL Server 2014 CTP2 na Windows Server 2012 R1 x64
Język programowania C#
CentOS 6.x

Narzędzia:
IDE Visual Studio 2012 & 2013
Framework Microsoft ASP.NET
Web Framework ASP.NET MVC 5 z MiniProfiler
View Engine Razor 3
Browser Framework jQuery 1.7.1
Data Access Layer LINQ to SQL and Dapper
Cache Redis 2.8.4
Instancja GitLab

Dodatkowe narzędzia:
reCAPTCHA
DotNetOpenId
Prettify
Google Analytics
TeamCity
HAProxy
Cacti
MarkdownSharp
Kiln
Orion
LESS
MathJax
Elasticsearch

Spójrzmy Na Kaszowanie

5 poziomów cache:
1- Poziom sieciowy: przeglądarka, CDN, proxy
2- Poziom pamięci serwera: HttpRuntime.Cache
3- Poziom Redis: rozproszony zbiór typu klucz-wartość
4- Poziom SQL Server: Cała baza jest keszowana w pamięci RAM
5- Poziom dysków SSD: Używane tylko gdy serwer SQL „rozgrzewa się”

Spójrzmy Na Materiały Referencyjne

The Architecture of StackOverflow – Developer Conference 2013
What it takes to run Stack Overflow
Which tools and technologies are used to build the Stack Exchange Network?
The architecture of StackOverflow
StackOverflow Update: 560M Pageviews A Month, 25 Servers, And It’s All About Performance
How much bandwidth does SE eat up?

Spójrzmy Na Podsumowanie

Jak widać StackExchange stawia na ludzi. Marcin Mazurek z Allegro wspominał w Progress Bar o Site Reliability Engineers (SREs). Ci ludzi nie są tani :). StackExchange ma ich pięciu. Jestem ciekaw Twojej opinii i takiego podejścia. Więcej pieniędzy w ludzi, mniej w sprzęt. Nie będę zgadywał, która opcja wychodzi taniej.

Dołącz do listy mailingowej!

Dołącz do naszego newslettera

Staramy się wysyłać tylko wartościowe informacje, np. co miesiąc dostaniesz spis najważniejszych nowości z chmur Azure, AWS i GCP, z krótkimi opisami i linkami.