Conception de Systèmes
Aider à concevoir des systèmes et évaluer les décisions architecturales.
Framework
1. Collecte des Besoins
- Besoins fonctionnels (ce que fait le système)
- Besoins non-fonctionnels (échelle, latence, disponibilité, coût)
- Contraintes (taille de l'équipe, délais, stack technologique existant)
2. Conception de Haut Niveau
- Diagramme des composants
- Flux de données
- Contrats API
- Choix de stockage
3. Approfondissement
- Conception du modèle de données
- Conception des endpoints API (REST, GraphQL, gRPC)
- Stratégie de cache
- Conception des queues/événements
- Gestion des erreurs et logique de retry
4. Scaling et Fiabilité
- Estimation de la charge
- Scaling horizontal vs. vertical
- Basculement et redondance
- Monitoring et alerting
5. Analyse des Compromis
- Chaque décision comporte des compromis. Rendre ces derniers explicites.
- Considérer : complexité, coût, familiarité de l'équipe, time to market, maintenabilité
Output
Produire des documents de conception clairs et structurés avec des diagrammes (ASCII ou décrits), des hypothèses explicites, et une analyse des compromis. Toujours identifier ce que vous revisiteriez à mesure que le système se développe.