Livre blanc : ueo.ventures - un site web statique à page unique hébergé chez DownToZero

Ce livre blanc illustrera comment DownToZero est utilisé pour héberger un site web statique. Nous fournirons des informations sur la manière dont le site a été construit ainsi que des données concrètes sur son utilisation et comment cela se reflète dans l’utilisation de DownToZero et donc dans le coût.

What Is ueo.ventures?

ueo.ventures est un site statique fournissant des credentials à des entités externes. Le site est très minimaliste et ne comprend que 2 pages statiques. Il comprend :

  • page index - indiquant le nom de l’entreprise
  • page impressum - indiquant les obligations légales d’une entreprise privée

How is it build?

Comme mentionné précédemment, le site ne contient que 2 pages. Ces pages sont des fichiers statiques dans un dépôt github.
Pour les rendre disponibles sur DownToZero, nous devons empaqueter ces deux fichiers dans un conteneur docker.

Voici le Dockerfile complet utilisé pour empaqueter le site web.

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

How much is it used?

requests

Le nombre de requêtes vers cette page est assez faible. Nous verrons donc beaucoup de cold-starts non optimisés. Le volume global quotidien est en moyenne d’environ 200 requêtes par jour.

Voici un court échantillon des données

day requests
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

splitting the request by cold-starts

Les cold starts sont des démarrages où rien n’est présent sur l’hôte d’exécution.
Les warm starts sont quand l’image est déjà chargée sur l’hôte d’exécution, mais que le conteneur doit être démarré.
Les hot starts sont quand le conteneur est déjà en fonctionnement.

day démarrages froids démarrages tièdes démarrages chauds
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

response times

Bien que la différence entre les hot et cold starts semble significative en valeur relative, le temps global de cold-start ne descend jamais sous 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

Power Consumption

Tout cela se traduit par un certain type et modèle d’utilisation. Notre métrique pour déterminer l’utilisation est le Watt. Nous mesurons la consommation énergétique de toute cette activité et fournissons des statistiques détaillées dans le temps.

day consommation électrique (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

Pricing & Cost Efficiency

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 / Go / jour ; stockage froid - 0,0007 EUR / Go / jour

Basé sur l’usage mesuré de ce service ueo.ventures:

  • Requêtes : environ 203 requêtes/jour en moyenne sur la période d’échantillonnage (maximum 524 ; minimum 60).
  • Énergie : environ 2,40 Wh/jour en moyenne (min 0,43 Wh ; max 6,51 Wh).

Coût calculé estimé aux tarifs actuels :

  • Mode normal : environ 0,024 EUR/jour (environ 0,72 EUR pour un mois de 30 jours) ; fourchette journalière ≈ 0,004–0,065 EUR.
  • ecoMode : environ 0,012 EUR/jour (environ 0,36 EUR pour un mois de 30 jours) ; fourchette journalière ≈ 0,002–0,033 EUR.

Comme vous payez par watt, il y a un incitatif direct à garder les images légères, éviter les travaux inutiles sur les cold starts, et opter pour ecoMode lorsque cela est possible. Avec le temps, cela peut réduire à la fois les dépenses et la consommation d’énergie.

Compromis : ecoMode peut impliquer des caractéristiques de performance différentes (par exemple, latence au démarrage, planification) ; les coûts peuvent varier avec les pics d’utilisation. Surveillez la consommation et ajustez au besoin.