Now create !
OK.... but how ?!
Guillaume FAURE-DUMONT
@guillaume_fd
Business Layer Conception &
DataBase (schema) Design
Sommaire
- Conception Business Layer
- Comment réagit l'app
- => Comment on pense le métier
- Design schema DataBase
- Ce qu'il faut retenir comme info
- Qui sont mes clients
- J'ai quoi en stock
- Qui a payé quoi
- Le plus "efficacement" possible !
- Ce qu'il faut retenir comme info
Business Layer
Penser sa représentation du métier... en code !
- On veut remplacer l'humain dans notre processus métier 😱
- Automatiser ce qui peut l'être
- Représenter les choses évidentes en premier
- aller dans les détails ensuite
Exemple : ECOLE DE CODE 😈
Elèves
Les différencier
- Email /
Password
Cours
Contenu
- On sait qu'on va avoir besoin de plus, mais pour l'instant, c'est pas le cas
- On ne code PAS pour demain !
- On ne code PAS pour demain !
- On pourrait considérer qu'on a un seul cours
- Coup du MVP
- On veut automatiser
- => On a PLEIN de tout !
Commencer simple
Version simple
C'est fini ! T'as un compte, t'as accès aux cours !
- On veut rendre le truc plus flexible
- Accès distincts aux cours
Créer une relation (facultative) entre cours et élèves
- 🚨☢️⚠️☣️ NOMMAGE !
- Easy !!!
Comment nommer le fait qu'un élève ait accès à un cours ?
Inscription
Sous-sujets
Ne pas réinventer la roue !
Certains sujets sont des projets complets à eux seuls
- Payment
- Authentication
- ...
- Gestion d'images ?
- Storage en général ?
- ...
- Gestion front ?
Continuer à creuser (1/4)
Faire travailler les élèves ensemble
Faire des groupes
- Elèves ?
- Inscriptions ?
Comment on les regroupe ?
Plus la user a de libertés,
plus c'est compliqué à implémenter
Continuer à creuser (2/4)
Faire travailler les élèves ensemble
On lance une promo :
- Quand on a n élèves prêts à commencer
- Tous les x jours / mois / pleines lunes
Comment nommer ces groupes ?!
😱
Continuer à creuser (3/4)
Promotions
- Date de début
- Liste d'inscriptions
-
Un élève n'a accès au cours que si :
- La promotion a commencé
- Easy
- La promo en est à ce jour du cours
- Gros refacto en vue !
- La promotion a commencé
⚠️ L'app va commencer à fonctionner différemment !
LA TECH EST AU SERVICE DU PRODUIT !!
Continuer à creuser (4/4)
😡 T'es relou Guillaume, on le savait déjà !!
On savait qu'on aurait probablement besoin des promo !
La livraison de cette feature aurait probablement retardé la première livraison d'une bonne semaine !
L'important, c'est pas la chute, c'est l'atterrissage
SRP
C'est du coton
- Etre responsable d'UNE chose
- C'est déjà pas mal
- Personne d'autre n'a de droit dessus
- Pas de MAIS, pas de ET
Exemple e-commerce:
Ne permettez pas à un User de payer son panier !
On veut du CRUD
Prendre du recul :D
- Créer des notions :
- Elèves / Cours / Inscriptions / Promotions
- Faire les opérations du métier :
- Créer et modifier des instances !
ℹ️ Même les sessions Devise sont une ressource CRUD
🐢 TOUT EST CRUD ! 🐘
DataBase (schema) design
Ce flim n'est pas un flim sur le cyclimse
ATTENTION
DataBase (schema) design
- Pas de répétition de données
- Sauf si ... on en a besoin !
- Ha oui, et aussi ... les refs !
- Pas de données orphelines
- Sauf si...
- Sauf si...
- Accéder à la donnée efficacement
- PAS DE D'EXCEPTION !!
On veut agencer les notions entre elles
DataBase (schema) design
Contraintes
- Infra
- Prix
- Volumétries
- Requêtage complexe
- GEO
- JSON
- DOC
- ...?
Le SGBD n'est PAS un sujet !
DataBase (schema) design
Enfin si, mais bon...
Le langage SQL n'est PAS un sujet !
C'est LE langage pour parler avec un SGBD
- Très puissant
- Très limité
- Travailler intelligemment !
Rails est super-balèze pour parler SQL
(au début...)
DataBase (schema) design
Avoir un schéma en étoile
- C'est ce qu'il te faut... en théorie
- On travaille souvent sur 2 ou 3 entités centrales
- L'appli évolue... ton schéma aussi !
- Limiter les liens raccourcis
- Ton SGBD est plus fort que toi
- Et Rails le sait 😘
DataBase (schema) design
🙏🏻 Le sacro-saint INDEX 🙏🏻
- Une référence (unique ?) pour chaque chose
- Cours (inutile ?)
- Subscription (indispensable ?)
- User (la clef est ... ?)
- Index "composite"
- Attention
- L'ordre compte (beaucoup)
- Un index peu en flinguer un autre
- Surtout en écriture
DataBase (schema) design
La DB se suffit à elle-même
- Tout votre business est dans votre DB
- Tout protéger au maximum
- Colonnes non-vides
- Oui, ton modèle fait déjà le taf
- Je m'en fous, protège quand-même
- Tailles des string
- Bons types de données
- Colonnes non-vides
- Votre Data a du sens sans votre BL
Ba maintenant, elle va marcher beaucoup moins bien, forcement
REFACTO
- Penser son archi comme quelque chose de vivant
- Vous allez plus perdre
- De temps à le lire ...
- (pour le refacto)
- ...que de temps CPU !
- De temps à le lire ...
- LISIBILITE !
- Par votre codeur le plus junior
We got a winner
Q & A
Guillaume FAURE-DUMONT
@guillaume_fd
C'est quoi les REFS ? => 5
Conception @ THP
By Guillaume Faure-Dumont
Conception @ THP
- 200