Livre blanc : ueo.ventures - un site web statique à page unique hébergé chez DownToZero
Ce livre blanc illustre comment DownToZero est utilisé pour héberger un site web statique. Nous donnerons des explications sur la manière dont le site a été construit ainsi que des données réelles sur son utilisation et sur la façon dont cela se répercute sur l’utilisation de DownToZero et donc sur le coût.
Qu’est-ce que ueo.ventures ?
ueo.ventures est un site statique fournissant des identifiants à des entités externes. Le site est très minimal et ne se compose que de 2 pages statiques. Il inclut :
- page index - indiquant le nom de la société
- page impressum - indiquant les obligations légales pour une entreprise privée
Comment est-il construit ?
Comme indiqué précédemment, le site ne contient que 2 pages. Ces pages sont des fichiers statiques dans un dépôt github. Pour rendre cela disponible sur DownToZero, nous devons empaqueter ces deux fichiers dans un conteneur Docker.
Voici le Dockerfile complet utilisé pour empaqueter le site.
FROM alpine AS runner
RUN apk add --update --no-cache lighttpd && rm -rf /var/cache/apk/*
ADD index.html /var/www/localhost/htdocs/
ADD impressum.html /var/www/localhost/htdocs/
CMD ["/usr/sbin/lighttpd", "-D", "-f", "/etc/lighttpd/lighttpd.conf"]
Et le pipeline que nous utilisons pour construire et déployer la version la plus à jour.
name: website
on:
push:
workflow_dispatch:
schedule:
- cron: '30 5 25 * *'
jobs:
build-website:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: build website
run: |
docker build -t xb35e5d0.cr.dtz.dev/ueo-ventures .
- name: Login to xb35e5d0.cr.dtz.dev
uses: docker/login-action@v3
with:
registry: xb35e5d0.cr.dtz.dev
username: apikey
password: ${{ secrets.DTZ_API_KEY }}
- name: uploading image to xb35e5d0.cr.dtz.dev
run: |
docker push xb35e5d0.cr.dtz.dev/ueo-ventures:latest
- name: Resolve image digest
id: resolve_digest
run: |
DIGEST=$(docker inspect --format='{{index .RepoDigests 0}}' xb35e5d0.cr.dtz.dev/ueo-ventures:latest)
echo "IMAGE_URL=$DIGEST" >> $GITHUB_ENV
- name: Deploy latest image to service
uses: DownToZero-Cloud/containers-service-update@main
with:
container_image: ${{ env.IMAGE_URL }}
api_key: ${{ secrets.DTZ_API_KEY }}
service_id: service-e1d1efd8
- name: Publish image URL to summary
run: |
echo "## Deployed image" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "${IMAGE_URL}" >> $GITHUB_STEP_SUMMARY
Quelle est son utilisation ?
requêtes
Le nombre de requêtes vers cette page est plutôt faible. Nous verrons donc beaucoup de cold-starts non optimisés. Le volume global par jour est en moyenne d’environ 200 requêtes par jour.
Voici un court ensemble d’exemples
| jour | requêtes |
|---|---|
| 2025-09-12 | 147 |
| 2025-09-13 | 116 |
| 2025-09-14 | 118 |
| 2025-09-15 | 121 |
| 2025-09-16 | 200 |
| 2025-09-17 | 169 |
| 2025-09-18 | 157 |
| 2025-09-19 | 268 |
| 2025-09-20 | 524 |
| 2025-09-21 | 496 |
| 2025-09-22 | 228 |
| 2025-09-23 | 246 |
| 2025-09-24 | 123 |
| 2025-09-25 | 79 |
| 2025-09-26 | 60 |
répartition des requêtes par cold-starts
Les cold starts (démarrages à froid) sont des démarrages où rien n’est présent sur l’hôte d’exécution. Les warm starts (démarrages chauds) sont lorsque l’image est déjà chargée sur l’hôte d’exécution, mais que le conteneur doit être démarré. Les host starts (démarrages à chaud complet) sont lorsque le conteneur est déjà démarré et en fonctionnement.
| jour | cold starts | warm starts | hot starts |
|---|---|---|---|
| 2025-09-12 | 63 | 48 | 14 |
| 2025-09-13 | 70 | 3 | 21 |
| 2025-09-14 | 61 | 3 | 22 |
| 2025-09-15 | 68 | 0 | 31 |
| 2025-09-16 | 84 | 3 | 27 |
| 2025-09-17 | 53 | 3 | 25 |
| 2025-09-18 | 72 | 2 | 27 |
| 2025-09-19 | 48 | 2 | 19 |
| 2025-09-20 | 501 | 2 | 10 |
| 2025-09-21 | 474 | 3 | 1 |
| 2025-09-22 | 199 | 3 | 2 |
| 2025-09-23 | 201 | 3 | 27 |
| 2025-09-24 | 71 | 5 | 31 |
| 2025-09-25 | 51 | 3 | 20 |
temps de réponse
Alors que la différence entre les cold-starts et les hot-starts semble importante en valeurs relatives, le temps de démarrage à froid global ne descend pas en dessous de 3 ms.
Percentiles de latence en ms
| état | p50 | p90 | p95 | p99 |
|---|---|---|---|---|
| cold | 0.536 | 1.003 | 2.0888 | 3.2584 |
| hot | 0 | 0 | 0.001 | 0.001 |
Consommation d’énergie
Tout cela se traduit par un certain type et motif d’utilisation. Notre métrique pour déterminer l’utilisation est le Watt. Nous mesurons la consommation d’énergie pour toute cette activité et fournissons des statistiques détaillées au fil du temps.
| jour | consommation d’énergie (en Wh) | | — | ———– :| | 2025-09-12 | 1.88 | | 2025-09-13 | 2.00 | | 2025-09-14 | 0.96 | | 2025-09-15 | 1.76 | | 2025-09-16 | 3.14 | | 2025-09-17 | 0.43 | | 2025-09-18 | 1.90 | | 2025-09-19 | 1.06 | | 2025-09-20 | 4.74 | | 2025-09-21 | 4.51 | | 2025-09-22 | 1.62 | | 2025-09-23 | 6.51 | | 2025-09-24 | 3.85 | | 2025-09-25 | 3.29 | | 2025-09-26 | 2.81 |
Tarification et efficacité des coûts
DownToZero facture le calcul uniquement en fonction de l’énergie consommée. Les tarifs actuels sont :
- Calcul : 0.010 EUR par Watt-heure (Wh) en mode normal ; 0.005 EUR/Wh en ecoMode.
- Stockage : stockage chaud - 0.0013 EUR / GB / jour ; stockage froid - 0.0007 EUR / GB / jour
Sur la base de l’utilisation mesurée de ce service ueo.ventures :
- Requêtes : ~203 requêtes/jour en moyenne sur la période d’échantillonnage (pic 524 ; minimum 60).
- Énergie : ~2.40 Wh/jour en moyenne (min 0.43 Wh ; max 6.51 Wh).
Coût estimé du calcul aux tarifs actuels :
- Mode normal : ~0.024 EUR/jour (~0.72 EUR par mois de 30 jours) ; fourchette quotidienne ≈ 0.004–0.065 EUR.
- ecoMode : ~0.012 EUR/jour (~0.36 EUR par mois de 30 jours) ; fourchette quotidienne ≈ 0.002–0.033 EUR.
Parce que vous payez par watt, il y a une incitation directe à garder les images légères, éviter les travaux inutiles lors des cold starts, et activer l’ecoMode lorsque cela est possible. Au fil du temps, cela peut réduire à la fois les dépenses et la consommation d’énergie.
Compromis : l’ecoMode peut impliquer des caractéristiques de performance différentes (par ex. latence de démarrage, ordonnancement) ; les coûts peuvent varier en cas de pics d’utilisation. Surveillez la consommation et ajustez au besoin.