Calcul des scores
Méthode de calcul des scores
Généralités
Les teams peuvent visualiser l’évolution de leur score, minute par minute, depuis les graphiques proposés par la dashboard du jeu.
A noter que la dashboard se met à jour automatiquement toutes les 10 secondes (il n’est pas nécessaire d’actualiser la page manuellement).
A chaque Team est associée un tableau contenant des données de scoring. Voici un exemple de map représentant un score :
const score_sample = {
    timestamp: '2020-03-10T14:01:56.666Z',
    up: 500,
    down: 30,
    ec2: 15,
    loadBalancer: 5,
    profit: 500
}
A t = 2020-03-10T14:01:56.666Z, la team détenant ce score a traité avec succès, depuis le début du jeu, 500 requêtes et en a perdu 30.
A cet instant, elle a utilisé 15 minutes d’EC2 et 5 minutes de LoadBalancer.
Dans notre exemple, si ce score est calculé 5 minutes après le début du jeu et qu’initialement la team est entrée dans le jeu avec un load balancer redirigeant les requêtes vers un autoscaling group de 3 instances, nous avons :
- 5 minutes de load balancer
 - 5 × 3 = 15 minutes d’EC2
 
Le “profit” représente le résultat d’exploitation cumulé :
Ainsi dans notre exemple, avec les paramètres suivants (la détermination de ces paramètres est décrite plus bas) :
- le gain par requête correctement traitée est de 1.6606 $
 - le coût d’une EC2 par minute est de 13.2 $
 - le coût d’un load balancer par minute est de 26.46 $
 
On a :
profit = 500 × 1.6606 - 15 × 13.2 - 5 × 26.46 = 500 $
Détermination des coûts des ressources
Le bénéfice sur une minute, pour 1 load balancer et 3 ec2 (situation type au cours du jeu) est modélisé par l’équation suivante :
Avec :
| Symbole | Valeur | 
|---|---|
| n | Nombre de requêtes traitées en moyenne par minute | 
| g | Gain obtenu pour le traitement d’une requête | 
| Cec2 | Coût d’une Ec2 pour une minute d’utilisation | 
| Clb | Coût d’une LoadBalancer pour une minute d’utilisation | 
| B | Bénéfice sur une minute | 
Par conséquent le gain obtenu pour le traitement d’une requête est le suivant :
Le coût des ressources s’inspire des coûts réels pratiqués par AWS, rehaussés de manière à pouvoir s’adapter au contexte du jeu.
Les coûts des ressources pouvant être trouvés dans la section Billing de la console AWS sont :
EC2 :
- $ 0,0132 per On Demand Linux t2.micro Instance Hour
 
Load Balancer :
- $ 0,02646 per Application LoadBalancer - hour
 
RDS :
- $ 0,019 per RDS instance - hour
 
Lambda :
- $ 0,0000002083 pour 128 Mo par 100 ms
 - 0,0000002083 × 10 × 3600 = 0,0074988 $ / heure
 
ECS (FARGATE) :
- 0.0486 $ par vCPU / heure
 - 0.0053 $ par Go / heure
 
Dans le jeu, les coûts sont calculés de la manière suivante :
D’où les coûts suivants, pratiqués dans le jeu :
EC2 :
- $ 13,2 per On Demand Linux t2.micro Instance Minute
 
Load Balancer :
- $ 26,46 per Application LoadBalancer - minute
 
RDS
- $ 19 per RDS Instance
 
Lambda :
- $ 7.4988 par minute
 
ECS (FARGATE) :
- $ 29,6 par conteneur en config recommandée (0.5 vCPU, 1Go RAM)
 
Ces coûts nous permettent de déterminer le gain associé au traitement d’une requête :
- si l’on considère qu’en moyenne 100 requêtes seront traitées avec succès chaque minute
 - si l’on souhaite que le bénéfice d’une team soit de 100$ en moyenne par minute
 
g = ( 100 + 3 × 13,2 + 26,46100 ) / 100 = 1.6606 $
Dans les cas où la team n’est pas opérationnelle :
- aucune requête n’est traitée et l’architecture est en place (1 LB + 3 Ec2) :
- la team perd 66,06 $ par minute
 
 
- aucune requêt n’est traitée et aucune ressource n’est utilisée :
- la team ne perd pas d’argent