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 работает по модели «обратный прокси-сервер»:
- Клиент (браузер, мобильное приложение) отправляет HTTP-запрос на сервер Varnish.
- Varnish проверяет, есть ли ответ на этот запрос в кэше.
- Если есть (кэш-хит), Varnish немедленно возвращает закэшированный ответ клиенту.
- Если нет (кэш-мисс), Varnish пересылает запрос на бэкенд-сервер (веб-сервер, например, Apache или Nginx).
- Бэкенд-сервер обрабатывает запрос и возвращает ответ.
- 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 плохо подходит для кэширования персонализированного или часто изменяющегося контента без тщательной настройки правил инвалидации.
Источники
- Официальный сайт Varnish Software. История компании.
- Документация Varnish Cache. Архитектура и принципы работы.
- Книга «Varnish Cache: A Practical Guide» (2015). Автор: Thijs Feryn.
- Статья «Varnish Cache: The HTTP Accelerator» в журнале Linux Journal (2009).
- Презентации Varnish Software на конференциях (FOSDEM, Velocity, O'Reilly Software Architecture).
- Отчеты аналитических агентств (Gartner, Forrester) о рынке кэширующих прокси-серверов.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →