Architecture

Architecture

High-Level System Design of YouTube or a Video Streaming App

Cet article aborde la conception d'un système à haute échelle pour une application de streaming vidéo comme YouTube. Il traite des exigences fonctionnelles et non fonctionnelles, y compris les capacités de téléchargement et de diffusion de vidéos, la prise en charge de diverses résolutions, ainsi que la nécessité de maintenir une disponibilité élevée et une consistance éventuelle des uploads. Des questions pertinentes pour l'entretien sont également posées, comme les limites de taille des vidéos et le support des plateformes.

Architecture

The Ultimate Guide to WhatsApp System Design: How It Powers Billions of Conversations Daily

Cet article explore en profondeur le design système de WhatsApp, mettant en lumière comment il gère les conversations en face à face, la messagerie de groupe et le partage de fichiers, tout en assurant la vie privée et l'évolutivité pour des milliards d'utilisateurs. Il s'adresse aux développeurs et aux passionnés de technologie souhaitant comprendre l'architecture de grandes applications de messagerie.

Architecture

High-Level System Design: Metric Monitoring and Alerting System

Cet article présente la conception d'un système de surveillance et d'alerte des métriques. Il détaille les exigences fonctionnelles et non fonctionnelles d'un tel système, incluant les types de métriques à monitorer (CPU, mémoire, etc.), la scalabilité nécessite, et les alertes via divers canaux. Le système doit garantir une haute disponibilité et fiabilité pour traiter jusqu'à 100 millions d'utilisateurs actifs avec des données historiques à conserver sur un an.

Architecture

Formes normales : guide pratique pour développeurs

Cet article explique l'importance des formes normales dans la conception des bases de données pour optimiser les performances, réduire la redondance des données et faciliter la maintenance à long terme. Il détaille les trois niveaux fondamentaux de normalisation et les enjeux de la dénormalisation dans certains contextes. Un bon usage des formes normales contribue à une architecture logicielle plus robuste et à une gestion plus efficace des données.

Architecture

I Appeared in 50+ System Design Interviews — Here Are the Most Frequently Asked Questions (and How…

L'article partage l'expérience d'un candidat ayant passé plus de 50 entretiens techniques axés sur la conception de systèmes. Il souligne que les questions en conception de systèmes sont souvent larges et ouvertes, avec des exemples fréquemment demandés comme la création d'un réducteur d'URL. L'auteur note que ces questions testent non seulement la pensée algorithmique, mais aussi la capacité à faire des choix stratégiques et à comprendre les compromis impliqués.

Architecture

FAANG System Design: Handling Leader Failure in Distributed Databases

Cet article aborde la gestion des défaillances de leaders dans les bases de données distribuées. Lorsqu'un leader échoue, un suiveur doit être promu pour continuer le service. Le processus de basculement (failover) peut être automatique ou manuel, impliquant des étapes telles que la détection de la défaillance, le choix d'un nouveau leader et la reconfiguration des clients pour envoyer leurs écritures au nouveau leader. Plusieurs mécanismes sont utilisés pour garantir que le système continue de fonctionner de manière fiable.

Architecture

8 Common System Design Problems and How to Solve Them

Cet article aborde huit problèmes courants rencontrés lors de la conception de systèmes informatiques et propose des solutions pratiques. Il souligne l'importance d'optimiser les performances des applications à grande échelle, en permettant aux ingénieurs de concevoir des systèmes capables de gérer des millions d'utilisateurs. Parmi les challenges discutés, on trouve les requêtes lentes des bases de données et la nécessité d'implémenter un mécanisme de cache, comme Redis, pour améliorer l'expérience utilisateur en réduisant la latence.

Architecture

Code Is a Side Effect of Communication: A Key Lesson on My Path to Software Architect

Cet article aborde l'importance de la communication dans le développement logiciel, en soulignant que les problèmes rencontrés dans un projet proviennent souvent de malentendus entre les personnes, plutôt que du code lui-même. Il insiste sur l'importance pour les développeurs de comprendre le domaine d'activité et de collaborer étroitement avec les équipes commerciales, afin que le code reflète effectivement le langage du métier. En adoptant une approche de conception pilotée par le domaine (DDD), les équipes peuvent améliorer la clarté des spécifications et réduire les risques de malentendus.

Architecture

Architecting Low Latency at Scale: How to Design High-Speed Distributed Systems

Cet article aborde les défis liés à la latence dans les systèmes distribués et propose des stratégies pour concevoir des systèmes à haute vitesse. Il met en lumière les trois principales sources de latence : la latence d'application, la latence de la couche de base de données ou de stockage, et la latence du réseau. La gestion efficace de ces sources peut transformer des systèmes lents en expériences utilisateur rapides et optimales, essentielles pour le succès commercial.