L’article défend l’idée que dans les grands systèmes logiciels, une compréhension partielle de la base de code est non seulement inévitable, mais aussi suffisante pour travailler efficacement. L’auteur conteste la vision de Peter Naur, qui prône une maîtrise totale du code via une "théorie du programme", arguant que cette approche est irréaliste pour les systèmes complexes et à forte rotation d’équipes. Il souligne que les grands systèmes accumulent des cas particuliers impossibles à recréer de zéro, et que leur maintenance repose souvent sur une reconstruction progressive plutôt que sur une refonte complète.
L’auteur illustre son propos en expliquant que les équipes doivent souvent reprendre des bases de code abandonnées, en partant d’une compréhension locale avant d’étendre leur maîtrise. Il insiste sur le fait que la culture du "tout comprendre" est davantage valorisée dans les discussions en ligne, alors qu’elle est inadaptée aux environnements industriels à grande échelle. Selon lui, l’efficacité repose davantage sur la capacité à naviguer et modifier localement le code que sur une vision globale inaccessible.
Il s'agit d'un outil cli pour afficher des infos sur votre configuration matérielle et logicielle : distribution, version du noyau, etc. Il est hautement personnalisable
L'article explore les concepts fondamentaux de la conception de systèmes, essentiels pour les développeurs et les ingénieurs logiciels. Il aborde des sujets variés tels que l'architecture client-serveur, les adresses IP, le DNS, les proxys, la latence, les protocoles HTTP/HTTPS, les APIs, les bases de données SQL et NoSQL, ainsi que des techniques de mise à l'échelle comme le scaling vertical et horizontal, l'équilibrage de charge, l'indexation des bases de données, la réplication et le sharding. L'article vise à simplifier ces concepts pour les rendre accessibles, que ce soit pour des entretiens techniques ou pour la conception de systèmes scalables dans un environnement professionnel.
Les 7 commandes :
- lscpu : concerne le CPU
- lsblk : infos sur le stockage
- lsusb : infos sur les périphériques USB
- lspci : infos sur le périphériques PCI
- free -m : infos sur la RAM
- dmidecode : infos générales (voir les options memory, bios, system)
Il s'agit d'un algorithme utilisé dans les systèmes distribués.
Une image illustrant les différents composants d'un système Linux, avec les outils permettant de les observer
Tout est dans le titre