Poul-Henning Kamp, uno dei noti sviluppatori di FreeBSD, che ha partecipato alla creazione di sistemi come MD5crypt, GEOM, GBDE e FreeBSD Jail, ha presentato il rilascio di Varnish-Cache 8.0, un proxy caching ad alte prestazioni progettato per funzionare come acceleratore HTTP. Il progetto è distribuito con licenza BSD ed è stato utilizzato in passato da progetti come Facebook, Wikimedia, Twitter, Vimeo, Tumblr, New York Times e Guardian.
Le alte prestazioni sono garantite grazie all'uso della multithreading, al multiplexing delle connessioni tramite chiamate epoll/kqueue e all'impiego delle chiamate di sistema sendfile e madvise. Su hardware comune è in grado di gestire un flusso di 20 Gbps e di garantire un'accelerazione nella risposta alle richieste da 300 a 1000 volte. La cache è memorizzata nella memoria virtuale. Una caratteristica di Varnish è la capacità di assemblare le pagine restituite a pezzi sul lato front-end, definendo la logica di assemblaggio nel linguaggio ESI (Edge Side Includes).
Varnish offre anche un sistema di configurazione flessibile, che consente l'uso di estensioni in linguaggio C. Per la configurazione viene utilizzato un linguaggio speciale, VCL, che viene poi compilato in codice binario eseguibile. VCL permette di descrivere la politica di gestione delle richieste: definire i contenuti da trattare, da dove ottenerli e come trasformarli prima della restituzione. La funzionalità di base può essere ampliata tramite moduli. Sono presenti meccanismi per il bilanciamento del carico, il monitoraggio dello stato e il tempo di risposta del backend.server.
In concomitanza con l'annuncio della nuova versione, è stata annunciata anche una prossima modifica del nome del progetto. A partire dalla prossima versione, "Varnish Cache" sarà rinominato in "Vinyl Cache" a causa di rivendicazioni legate al marchio Varnish, registrato dalla Varnish Software, che ha partecipato allo sviluppo e ha supportato finanziariamente il progetto open source "Varnish Cache". 22 anni fa, lo sviluppo di Varnish Cache fu finanziato dal giornale norvegese Verdens Gang, che assunse Poul-Henning Kamp per scrivere il codice e la società Linpro per il supporto. Successivamente dalla Linpro è nata la Varnish Software. Si è così creato un legame in cui il nome Varnish Cache viene associato al progetto open source, mentre Varnish Software a una società commerciale.
La possibilità di utilizzare il nome Varnish nel titolo del progetto open source è stata concessa oralmente e Paul-Henning Kamp non ha insistito per un accordo scritto. Fino a poco tempo fa, l'azienda e il progetto open source coesistevano pacificamente, ma poi sono intervenuti avvocati specializzati in proprietà intellettuale, la cui posizione è che non è possibile utilizzare il nome Varnish Cache in alcun contesto senza esplicito permesso.
Poiché la necessità di ottenere il permesso da Varnish Software ha ostacolato alcuni partecipanti nel unirsi allo sviluppo, è stato fatto un tentativo di negoziazione, ma gli avvocati continuano a sostenere che il nome Varnish Cache appartiene a Varnish Software e ne consentono l'uso da parte del progetto open source a determinate condizioni e con la possibilità di veto. Varnish Cache non è disposto ad accettare tali restrizioni, in quanto intende continuare a svilupparsi come progetto indipendente.
Dopo la rinominazione, per ulteriori coordinamenti nello sviluppo si prevede di creare una partnership non profit, che opererà sotto la giurisdizione danese. Nello statuto è specificato che l'organizzazione non può possedere né gestire denaro. Tra gli obiettivi dichiarati ci sono: lo sviluppo, la manutenzione e la distribuzione del software. Chiunque può unirsi all'organizzazione dopo l'approvazione dei membri esistenti. Sarà organizzato un comitato elettivo dai partecipanti per la gestione.
Le principali novità di Varnish-Cache 8.0:
- Nel processo in background di varnishd, responsabile per la ricezione delle richieste dai clienti, la trasmissione delle richieste ai backend e la memorizzazione nella cache delle risposte, è stato implementato il parametro "uncacheable_ttl" per determinare il tempo di vita (TTL) degli oggetti contrassegnati come non memorizzabili nella cache.
- Il valore del parametro ban_any_variant è impostato di default a 0, nel quale la lista di blocco si applica solo alle varianti corrispondenti degli oggetti.
- L'invio del comando stop ora porta ad aspettare il completamento di tutte le transazioni in corso (gestori VCL).
- Aggiunta la supporto per il riferimento da codice VCL ad alcuni parametri runtime, utilizzando la sintassi "param.".
- Aggiunta la possibilità di sovrascrivere la logica di generazione delle risposte "304 Not Modified".
- Sono state rimosse le funzioni VMOD obsolete std.real2integer(), std.real2time(), std.time2integer() e std.time2real(), che devono essere sostituite con la sintassi "std.integer(real=std.round(…), fallback=…)" o "std.integer(time=…, fallback=…). La funzione format_rfc1123() è stata rinominata in cookie.format_date().
- In VUT e varnishtest è stata garantita la registrazione delle tracce dello stack nel log dopo un arresto anomalo.
- Nell'utility varnishadm è stata aggiunta la variabile "obj.last_hit", che può essere utilizzata per organizzare la rimozione di oggetti dalla cache che non sono stati consultati da tempo.
- Nell'utility varnishstat sono stati aggiunti nuovi contatori statistici VCP.ref_hit, VCP.ref_miss, transit_stored e transit_buffered.
Fonte: opennet.ru
