## La régulation de l’activité d’une application par homéostasie
Composants:
* capteurs (fournissent une valeur entre 0 et 1)
* déterminateur stratégie
* actionneur
Stratégies:
* diminution critique (capteurs à 1)
* diminution
* maintien
* augmentation
* augmentation critique (capteurs à 0)
### Capteurs pour le crawler
#### CPU
```
1 | /
| /
| / Utilisation nominale du cpu
| ______________/ entre 20% et 80% sinon trop
| / ou trop peu utilisé
| /
| /
|_/_ _ _ _ _ _ _ _ _ _ _
0 <- mesure -> 1
```
#### Logs
```
1 | /--------------------
| /
|/
| Capteur en "alerte" dès
| qu'il y a des erreurs
|
|
|_ _ _ _ _ _ _ _ _ _ _ _
0 <- mesure -> 1
```
Actions prises :
```json
{"time":"14:25:42.100","strategy":"dramaticIncrease"}
{"time":"14:26:22.894","strategy":"dramaticIncrease"}
{"time":"14:26:59.476","strategy":"dramaticIncrease"}
{"time":"14:27:18.195","strategy":"decrease"}
{"time":"14:27:41.290","strategy":"decrease"}
{"time":"14:30:18.256","strategy":"dramaticDecrease"}
```
Montée en charge progressive
![](pictures/cpu_usage.png)
### Evolutions possibles
* Ajout de facteurs (ie: utilisation rabbitmq)
* Machine learning