Unicorn est un serveur applicatif HTTP en
Ruby comparable à
Mongrel ou à
Thin, sous
licence GPLv2. Il est utilisé notamment par
Twitter et
Github et vient d'atteindre la version 1.0.
Unicorn est compatible avec
Rack, une interface entre les serveurs applicatifs et les frameworks. Il peut ainsi être utilisé pour servir des applications Ruby, dont celles écrites en
Ruby on Rails. Il tourne avec Ruby 1.8, Ruby 1.9 et bientôt
Rubinius. Rappelons que Rubinius est une implémentation alternative de Ruby dont
la version 1.0 est sortie récemment.
Unicorn s'appuie au maximum sur les noyaux Unix pour éviter de réinventer la roue. Par exemple, la répartition des requêtes entre les différents processus se fait grâce à une socket partagée. Il est également possible de mettre à jour Unicorn, l'application ou l'interpréteur Ruby sans perdre la moindre connexion.
De même, Unicorn est optimisé pour servir des clients rapides. Il est donc très souvent utilisé derrière un reverse-proxy, qui pourra bufferiser les requêtes des clients lents.
A l'inverse, utiliser Unicorn pour des connexions longues comme du
Comet (Comet désigne un ensemble de techniques où un serveur maintient des connexions HTTP ouvertes pour pouvoir pousser des contenus vers les clients) ou des
websockets serait très inefficace, je vous conseille pour cela de regarder Rainbows : c'est un projet inspiré d'Unicorn qui vise justement à répondre à cette problématique particulère.