Dans la récente interview avec Scott Hanselman, Roberta Arcoverde, responsable de l’ingénierie chez Stack Overflow, a révélé l’histoire de l’architecture de Stack Overflow. Ils traitent plus de 6000 requêtes par seconde, 2 milliards de pages vues par mois, et ils parviennent à rendre une page en 12 millisecondes environ. Nous imaginons qu’ils utilisent une solution de microservice fonctionnant dans le Cloud avec Kubernetes.
Mais l’histoire est un peu différente. Leur solution a 15 ans, une application monolithique géante fonctionnant sur site. Il s’agit d’une seule application sur IIS qui exécute 200 sites. Cette application unique s’exécute sur neuf serveurs Web et un seul serveur SQL (avec l’ajout d’un serveur de secours).
Ils utilisent également deux niveaux de cache, un sur SQL Server avec une grande RAM (1,5 To), où ils ont 30 % d’accès à la base de données en RAM, et deux serveurs Redis (maître et réplique). En plus de cela, ils disposent de trois serveurs de moteurs de balises et de 3 serveurs de recherche élastiques, qui sont utilisés pour 34 millions de recherches quotidiennes.
Tout cela est pris en charge par une équipe de 50 ingénieurs, qui parviennent à déployer en production en 4 minutes plusieurs fois par jour.
Leur stack technique complète est :
- C# + ASP.NET MVC
- Dapper ORM
- StackExchange Redis
- MiniProfiler
- Jil JSON Deseliazier
- Exceptional logger for SQL
- Sigil, a .Net CIL generation helper (for when C# isn’t fast enough)
- NetGain, a high-performance web socket server
- Opserver, monitoring dashboard polling most systems and feeding from Orion, Bosun, or WMI.
- Bosun, backend monitoring system, written in Go
Si vous voulez en savoir plus sur leur architecture, il existe une série d’articles de Nick Craver, l’un des ingénieurs de 2016. C’est un peu dépassé, mais l’architecture devrait être la même.
Source : https://newsletter.techworld-with-milan.com/p/stack-overflow-architecture