Salut,
Ça commence à se préciser donc je teste un peu la température auprès de mes fadas favoris, à savoir vous…
En ce moment je bosse (entre autres) sur un serveur web embarqué en C++11 (g++4.7 minimum – Wheezy donc, bien qu’en bricolant le sources.list/preferences ça fonctionne aussi sur Squeeze sans trop de paquets upgradés), basé sur la lib GNU libmicrohttpd, et dont l’empreinte mémoire de base est inférieure à 400ko (380ko aux dernières nouvelles, et encore c’est l’appli complète dont certaines parties sont propriétaires… vu le code je pense que le serveur lui-même atteint les 250-300ko). Bien sûr en réalité il est censé prendre plus, mais comme le reste c’est des libs partagées avec tout le système, ça “compte pas” dans l’occupation mémoire vu qu’elles sont déjà chargées de toutes façons (genre libc6, libstdc++ etc). Avec une AP wifi sur le serveur embarqué j’ai des temps de réponse < 50ms (CPU ARM @400MHz) donc je pense que c’est pas trop mal, surtout avec une pauvre carte SD comme stockage de masse (10 Mo/s… sérieusement ?) et quasiment pas de RAM pour faire tampon.
Accessoirement il gère Comet (server-push / long-polling en “quasi” temps réel, autant que faire ce peut en HTTP) ce qui me paraît suffisamment rare pour être mentionné, d’autant que ce type de serveur utilise d’habitude des technos qui sont énormément plus lourdes (des 100aines de Mo au bas mot d’après les produits que j’ai vus – basés sur Java / Node.js et autres trucs inutilisables quand t’as que 32mo de RAM sur ta machine).
Testé sur x86 / amd64 / ARM. Il est capable de servir “out of the box” des fichiers statiques (répertoire “www-root” et sous-répertoires, avec éventuellement fichiers d’index) avec ou sans indications de cache HTTP, le tout en moins de 50 lignes de code client (exemple livré avec). Par contre toute la partie dynamique y compris Comet doit être écrite en C++ – pas de langage de script pour rester svelte. Et évidemment c’est fortement multithread, faut pas avoir peur des mutex et autres condition_variable bien que la plupart des détails soient relativement masqués.
Pour ne rien gâcher, d’où le fait que j’en parle ici, j’ai l’autorisation écrite de ma boîte (après quelques négociations ) de le publier sous mon nom en LGPL.
Prévoir 3 à 6 mois avant d’avoir une version publiable… (faut que je refactorise, commente et documente, mais là tout de suite j’ai d’autres chats à fouetter – saloperies de deadlines inhumaines)
Ça intéresse du monde ? Vous pensez que ça vaut la peine que je nettoie le code et que je publie mon merdier ?
PS: oui forcément je suis fier de ce que j’ai “fait avec mes petites mains”. Mais le but de ce fil c’est surtout d’avoir des réactions “oh oui super on a jamais vu ça” ou au contraire “lol tu sers à rien y’en a 10.000 qui ont fait ça avant toi”… histoire que je sache où me placer quoi. Pas utile que je me fasse chier à maintenir un produit qui a déjà 10.000 concurrents plus pertinents avant même de commencer – oui je suis un gros fainéant – d’où la description technique un peu longue histoire de pouvoir comparer. Après tout mon Google-foo n’est pas sans faille, loin de là, surtout quand il s’agit d’une niche aussi limitée.