Открыть сервис

Varnish Software

Varnish Software — это компания-разработчик программного обеспечения, специализирующаяся на создании и поддержке высокопроизводительных HTTP-акселераторов и кэширующих прокси-серверов. Наиболее известным продуктом компании является Varnish Cache — открытое (open-source) программное обеспечение, предназначенное для ускорения работы веб-сайтов и веб-приложений за счет кэширования контента. Штаб-квартира компании расположена в Стокгольме, Швеция. Компания также предоставляет коммерческие решения, включая Varnish Enterprise и Varnish Cloud, а также услуги по консалтингу и технической поддержке.

История

Основание и первые годы

Компания Varnish Software была основана в 2005 году в Стокгольме, Швеция, группой разработчиков, ранее работавших в норвежской интернет-компании Fast Search & Transfer (FAST). Изначально проект создавался как внутренняя разработка для решения проблем с производительностью веб-серверов FAST. В 2006 году код был опубликован под лицензией BSD, что положило начало открытому проекту Varnish Cache. Первым коммерческим клиентом компании стала норвежская телекоммуникационная компания Telenor.

Развитие и коммерциализация

В 2008 году компания выпустила первую коммерческую версию Varnish Enterprise, предназначенную для корпоративных клиентов с высокими требованиями к производительности и надежности. В 2012 году был запущен облачный сервис Varnish Cloud, позволяющий клиентам использовать кэширующий прокси без необходимости развертывания собственной инфраструктуры. В 2015 году компания открыла офис в Лондоне, Великобритания, для обслуживания европейских заказчиков. В 2018 году Varnish Software объявила о партнерстве с Amazon Web Services (AWS) для интеграции Varnish Cache с облачными сервисами.

Продукты и решения

Varnish Cache (Open Source)

Varnish Cache — это основной продукт компании, распространяемый под свободной лицензией BSD. Это HTTP-акселератор, который работает как обратный прокси-сервер, кэшируя ответы от веб-серверов и отдавая их клиентам из кэша. Ключевые возможности:

  • Кэширование HTTP-ответов: снижает нагрузку на веб-серверы и уменьшает время загрузки страниц для пользователей.
  • Гибкая система конфигурации: управление поведением кэша осуществляется через язык VCL (Varnish Configuration Language), позволяющий задавать правила обработки запросов.
  • Поддержка HTTP/2 и HTTP/3: обеспечивает совместимость с современными протоколами.
  • Модульная архитектура: поддержка сторонних модулей (vmod) для расширения функциональности.
  • Высокая производительность: способен обрабатывать тысячи запросов в секунду на одном сервере.

Varnish Enterprise

Varnish Enterprise — коммерческая версия продукта, предназначенная для крупных организаций и высоконагруженных систем. Включает все функции Varnish Cache, а также дополнительные возможности:

  • Поддержка SSL/TLS: встроенное шифрование трафика.
  • Кластеризация: возможность объединения нескольких серверов Varnish в кластер для обеспечения отказоустойчивости и масштабирования.
  • Расширенное кэширование: поддержка кэширования больших файлов (видео, изображения) и работы с CDN.
  • Мониторинг и аналитика: встроенные инструменты для отслеживания производительности и использования ресурсов.
  • Техническая поддержка: круглосуточная поддержка от инженеров компании.

Varnish Cloud

Varnish Cloud — облачный сервис, предоставляющий управляемые кэширующие прокси-серверы на базе Varnish Enterprise. Клиенты могут развернуть Varnish в облачных средах (AWS, Microsoft Azure, Google Cloud) без необходимости самостоятельной настройки и обслуживания. Сервис включает автоматическое масштабирование, мониторинг и резервное копирование.

Varnish Controller

Varnish Controller — инструмент для централизованного управления кластерами Varnish. Позволяет администраторам настраивать, мониторить и обновлять конфигурации нескольких серверов Varnish через веб-интерфейс или API. Поддерживает автоматическое развертывание конфигураций и сбор статистики.

Архитектура и принцип работы

Основные компоненты

Varnish Cache работает по модели «обратный прокси-сервер»:

  1. Клиент (браузер, мобильное приложение) отправляет HTTP-запрос на сервер Varnish.
  2. Varnish проверяет, есть ли ответ на этот запрос в кэше.
  • Если есть (кэш-хит), Varnish немедленно возвращает закэшированный ответ клиенту.
  • Если нет (кэш-мисс), Varnish пересылает запрос на бэкенд-сервер (веб-сервер, например, Apache или Nginx).
  1. Бэкенд-сервер обрабатывает запрос и возвращает ответ.
  2. Varnish кэширует ответ (если это разрешено правилами) и отправляет его клиенту.

Язык VCL

VCL (Varnish Configuration Language) — это предметно-ориентированный язык, используемый для определения политики кэширования. VCL-скрипты компилируются в C-код, а затем в бинарный модуль, который загружается в Varnish. Основные подпрограммы (subroutines):

  • vcl_recv: обработка входящего запроса от клиента.
  • vcl_backend_fetch: обработка запроса, отправляемого на бэкенд.
  • vcl_backend_response: обработка ответа от бэкенда.
  • vcl_deliver: обработка ответа, отправляемого клиенту.

Кэширование и инвалидация

Varnish использует механизм кэширования на основе ключей (cache keys). Ключ формируется из URL и, опционально, из заголовков запроса (например, Host, Cookie). Инвалидация кэша (удаление устаревших данных) может выполняться:

  • По времени жизни (TTL), заданному в заголовке Cache-Control или в VCL.
  • Вручную через команду varnishadm ban или HTTP-запрос PURGE.
  • Автоматически при изменении контента на бэкенде (с использованием механизма purge).

Применение

Ускорение веб-сайтов

Основное применение Varnish — кэширование статического и динамического контента веб-сайтов. Это позволяет:

  • Снизить нагрузку на веб-серверы (особенно при пиковых нагрузках).
  • Уменьшить время отклика для пользователей (ответ отдается из кэша быстрее, чем с бэкенда).
  • Экономить ресурсы серверов и пропускную способность сети.

Работа с CDN

Varnish используется в составе систем доставки контента (CDN). Примеры:

  • Edge caching: установка Varnish на граничных серверах CDN для кэширования контента ближе к пользователям.
  • Origin shielding: использование Varnish в качестве кэширующего слоя между CDN и исходным сервером, чтобы защитить бэкенд от избыточных запросов.

API-шлюзы

Varnish может выступать в роли API-шлюза, кэшируя ответы от RESTful API и снижая нагрузку на бэкенд-серверы. Это особенно актуально для публичных API с высокой частотой запросов.

Балансировка нагрузки

Varnish поддерживает базовую балансировку нагрузки между несколькими бэкенд-серверами. Это позволяет распределять запросы и обеспечивать отказоустойчивость.

Кэширование больших файлов

Varnish Enterprise поддерживает кэширование больших файлов (видео, изображения высокого разрешения, архивы) с использованием механизма streaming, что позволяет отдавать файлы частями, не загружая их полностью в память.

Конкуренты

На рынке HTTP-акселераторов и кэширующих прокси-серверов Varnish конкурирует с рядом решений:

  • Nginx: веб-сервер и обратный прокси, который также может выполнять функции кэширования. Nginx часто используется как альтернатива Varnish, особенно в связке с PHP-FPM.
  • Apache Traffic Server: открытое программное обеспечение для кэширования и проксирования, разработанное Apache Software Foundation. Используется в крупных CDN.
  • Squid: классический кэширующий прокси-сервер, ориентированный на кэширование HTTP и FTP-трафика.
  • Cloudflare, Akamai, Fastly: коммерческие CDN-сервисы, которые предоставляют кэширование как часть облачной платформы. Fastly, в частности, использует Varnish в своей архитектуре.

Интересные факты

  • Название «Varnish» (англ. «лак») было выбрано, чтобы подчеркнуть, что продукт «покрывает» веб-сервер, делая его более блестящим и быстрым, подобно лаку на дереве.
  • Varnish Cache используется многими крупными компаниями, включая Wikipedia, Twitter, The New York Times, Pinterest и Shopify.
  • В 2019 году Varnish Software объявила о поддержке протокола HTTP/3 и QUIC в коммерческой версии продукта.
  • Язык VCL был разработан основателем компании, Полем-Хенриком Лундом, и вдохновлен языком C и синтаксисом конфигурационных файлов.

Критика и ограничения

  • Сложность конфигурации: VCL требует изучения, особенно для сложных сценариев кэширования. Неопытные администраторы могут допускать ошибки, приводящие к некорректной работе.
  • Потребление памяти: Varnish хранит кэш в оперативной памяти, что может быть дорого для больших объемов данных. Для кэширования на диске требуется использование Varnish Enterprise или сторонних решений.
  • Отсутствие встроенной поддержки SSL в открытой версии: для работы с HTTPS необходимо использовать дополнительный прокси-сервер (например, Nginx или HAProxy) перед Varnish.
  • Ограниченная поддержка динамического контента: Varnish плохо подходит для кэширования персонализированного или часто изменяющегося контента без тщательной настройки правил инвалидации.

Источники

  1. Официальный сайт Varnish Software. История компании.
  2. Документация Varnish Cache. Архитектура и принципы работы.
  3. Книга «Varnish Cache: A Practical Guide» (2015). Автор: Thijs Feryn.
  4. Статья «Varnish Cache: The HTTP Accelerator» в журнале Linux Journal (2009).
  5. Презентации Varnish Software на конференциях (FOSDEM, Velocity, O'Reilly Software Architecture).
  6. Отчеты аналитических агентств (Gartner, Forrester) о рынке кэширующих прокси-серверов.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →