TL;DR:
- Locally runs Manticore Search on Google Cloud as a core part of its production infrastructure
- Tens of thousands of queries per second across geo search, ecommerce search, aggregations, and vector search
- Migrated from Elasticsearch after long-term challenges with complexity, cost, and indexing speed
- Observed ~16× lower costs compared to equivalent Elasticsearch services
- Leverages GCP Compute Engine, Managed Instance Groups, and HAProxy for horizontal scaling
- Remains stable through peak seasonal traffic with minimal operational overhead
- Recommended by Ben Hirsch, CTO & co-founder of Locally
Контекст
Этот материал основан на прямом вкладе Бена Хирша, технического директора и соучредителя Locally. Он описывает, как компания эксплуатирует Manticore Search в продакшене на Google Cloud, сосредотачиваясь на архитектурных решениях, интеграции сервисов GCP, операционном опыте и уроках, которые могут быть полезны другим командам, развертывающим Manticore в GCP.
Перспектива основателя на поиск как базовая инфраструктура
Для Locally , поиск является базовой инфраструктурой. Платформа обеспечивает локализованные e-commerce решения для десятков тысяч розничных продавцов по всему миру и находится непосредственно в критическом пути многих высоко-нагруженных сайтов брендов и ритейлеров. Трафик сильно динамичен и выраженно сезонный, что накладывает строгие требования к производительности, надёжности и контролю затрат.
С точки зрения Бена Хирша, одновременно технического директора и основателя, решения по поиску являются долгосрочными инфраструктурными выборами. Они влияют не только на скорость запросов, но и на операционные расходы, продуктивность инженеров и возможность масштабироваться без добавления лишней сложности.
Locally использовала Elasticsearch в Google Cloud с первых дней — с 2013 года. Со временем команда поняла, что операционные издержки, стоимость и скорость индексации на больших объёмах мешают эффективно развивать платформу. Поэтому в начале 2024 года она начала присматриваться к альтернативам Elasticsearch , в том числе к Manticore Search.
То, что началось как внутренний эксперимент, перешло в продакшн-прототип, а затем в более широкую миграцию, всё это в рамках их существующей инфраструктуры Google Cloud.
Высокопроизводительная многоцелевая поисковая платформа
Сегодня Manticore Search глубоко интегрирован в продакшн-системы Locally и поддерживает множество нагрузок.
“Locally обрабатывает десятки тысяч запросов Manticore в секунду в продакшене.”
— Ben Hirsch, CTO & Co-founder, Locally
Вместо того чтобы обслуживать одну задачу, Manticore функционирует как универсальный поисковый слой. Он поддерживает запросы с тяжёлой агрегацией, гео-поиски, e-commerce поиск и автодополнение, основанное на векторах.
Как объясняет Хирш:
“Мы используем его четырьмя различными способами:
- Как высокодоступный индекс общих агрегаций, которые слишком дорогие или медленные для запросов из нашей основной реляционной базы данных в режиме выполнения.
- Как гео-пространственный индекс данных о местоположении и запасах, используемый в критическом пути тысяч высоконагруженных сайтов брендов и ритейлеров.
- Для поисковой системы e-commerce с богатой фасетной навигацией, которая показывает наличие товаров с учётом местоположения для более чем 50 000 ритейлеров по всему миру.
- Используя векторные эмбеддинги для создания доменно-специфического, поддерживающего естественный язык автодополнения, ориентированного на нашу обширную базу клиентов и покупателей.”
Эта консолидация сократила необходимость в множестве специализированных систем и упростила процесс создания и поддержки функций, связанных с поиском. Эксплуатация Manticore в Google Cloud позволила команде согласовать поисковую инфраструктуру с их существующими операционными инструментами и облачной средой.
Почему Locally отказалась от Elasticsearch
Решение Locally мигрировать от Elasticsearch было основано на более чем десятилетнем продакшн-опыте. Хотя Elasticsearch удовлетворял ранние потребности, со временем стало всё сложнее эффективно эксплуатировать его в масштабе Locally.
«Однако наши инженеры всегда считали его недоступным, и в результате нам никогда не удавалось набрать достаточный импульс для разработки на нём. Кроме того, Elastic был чрезвычайно сложным и дорогим в хостинге и обслуживании, а индексация данных в нашем масштабе была слишком медленной.»
Когда команда начала оценивать Manticore Search в начале 2024 года, производительность индексации сразу выделилась, тогда как производительность запросов оставалась сопоставимой.
«Мы начали экспериментировать с Manticore в начале 2024 года и сразу поняли, насколько он быстрый — сопоставимый с Elastic в режиме выполнения и значительно более быстрый при индексации.»
Финансовый эффект стал очевиден после развертывания прототипа.
«Затем мы развернули прототип в продакшене и заметили 16-кратное снижение затрат по сравнению с эквивалентными сервисами Elasticsearch.»
В этот момент Locally решила мигрировать оставшиеся нагрузки Elasticsearch на Manticore Search.
Развертывание в Google Cloud
Вся продакшн-инфраструктура Locally работает на Google Cloud Platform, что сделало её естественной средой для развертывания Manticore Search. Это позволяет команде использовать существующую облачную инфраструктуру, инструменты мониторинга и операционные практики.
Изначально команда оценивала запуск Manticore на Google Kubernetes Engine (GKE). Из-за больших размеров индексов и характера их нагрузки этот подход оказался непрактичным.
«Мы изначально пытались развернуть Manticore в GKE, но в конечном итоге отказались от этого подхода из-за размеров некоторых наших индексов.»
Вместо этого Locally приняла модель развертывания на основе Compute Engine, построенную вокруг виртуальных машин, управляемых групп экземпляров и внешней балансировки нагрузки. Этот подход оказался более подходящим для их крупномасштабных, состоянийных поисковых нагрузок.
«Сейчас мы используем вычислительные экземпляры и несколько групп экземпляров с авто-масштабированием, а также узлы HA Proxy для распределения нагрузки индексов и чтения.»
Раннее развертывание включало некоторые операционные сложности, но настройка стабилизировалась по мере того, как команда уточняла стратегию развертывания и масштабирования.
“Мы уже прошли два праздничных сезона с минимальными проблемами и практически без простоя.”
Архитектура в общих чертах
В продакшене конфигурация Manticore от Locally состоит из:
- Многоцелевые кластеры Manticore вместо одного монолитного кластера
- Управляемые группы экземпляров Google Cloud для автоматического масштабирования и замены узлов
- Узлы HAProxy, работающие в Compute Engine, для распределения нагрузки индексации и запросов
- Горизонтальное масштабирование с использованием возможностей авто-масштабирования в сочетании со встроенной репликацией Manticore для обеспечения избыточности
- Пользовательские панели Grafana, интегрированные с мониторингом для отслеживания производительности и состояния системы
Эта структура эволюционировала со временем, когда команда адаптировала архитектуру к реальным шаблонам трафика и росту данных, полностью используя возможности автоматизации инфраструктуры Google Cloud.
Производительность, стабильность и масштабирование
С точки зрения производительности запросов Manticore оставался постоянно быстрым под нагрузкой.
«Производительность запросов была феноменальной и неизменной».
Что касается стабильности, основной сложностью было понимание того, как система ведёт себя при реальном трафике.
«Что касается стабильности, нам потребовалось некоторое время, чтобы привыкнуть к тому, как Manticore потребляет ресурсы».
По мере роста объёма данных и трафика ранние архитектурные решения были пересмотрены. Изначально все индексы находились в одном кластере, что оказалось ограничивающим по мере роста платформы. Монолитный подход заставлял новые узлы долго присоединяться к кластеру и создавал единую точку отказа для многих производственных сервисов.
«Однако со временем мы разделили монолит на несколько целевых мини-кластеров (используя группы экземпляров GCP). Это позволило нам с лёгкостью справляться с ростом данных и трафика».
В сочетании с возможностями горизонтального масштабирования и встроенной репликацией Manticore такой подход привёл к более эффективной и устойчивой системе, способной адаптироваться к меняющимся нагрузкам.
Ежедневные операции
Сегодня эксплуатация Manticore Search в значительной степени автоматизирована. Масштабирование, замена узлов и распределение нагрузки обрабатываются управляемыми инфраструктурными сервисами и внутренними инструментами, уменьшая необходимость постоянного ручного вмешательства.
Как подытоживает Хирш:
«Ежедневные операции с Manticore теперь почти полностью автоматизированы и требуют минимум вмешательства. Это благодаря авто-масштабированию управляемых групп экземпляров GCP, балансировщикам нагрузки HAProxy (с внутренним динамическим инструментом конфигурации, который мы создали для мониторинга изменений MIG) и пользовательским панелям Grafana для мониторинга всех метрик здоровья задействованных сервисов».
Эта модель эксплуатации, построенная на возможностях автоматизации Google Cloud, позволяет команде сосредоточиться больше на разработке продукта и меньше на поддержке поисковой инфраструктуры. Интеграция с мониторингом, логированием и сервисами масштабирования создаёт согласованный опыт эксплуатации.
Заключение: осознанный выбор инфраструктуры
Для Locally внедрение Manticore Search в Google Cloud не было гонкой за новой технологией. Это был выбор инфраструктуры, соответствующей реальным производственным потребностям: высокий трафик, сезонная изменчивость, чувствительность к стоимости и желание ясности в эксплуатации — всё это в их существующей облачной экосистеме.
Переход от Elasticsearch к Manticore Search дал измеримые результаты: снижение затрат в 16 раз, более быструю индексацию и сопоставимую производительность запросов. Но, возможно, более важно то, что упростилась эксплуатация и команда получила систему, которую можно уверенно развивать и масштабировать, используя возможности надёжных сервисов Google Cloud.
С точки зрения Бена Хирша, одновременно CTO и со-основателя, самым важным результатом стало доверие к тому, как система ведёт себя в реальных условиях. После более чем десятилетнего опыта эксплуатации Elasticsearch в продакшене команда теперь обладает поисковой инфраструктурой, которая одновременно мощна и доступна.
Сегодня Manticore Search поддерживает несколько критически важных рабочих нагрузок на платформе Locally и продолжает надёжно работать в периоды пикового сезонного спроса. Архитектура эволюционировала от одного монолитного кластера к целевым мини-кластерам, демонстрируя, что сочетание Manticore Search и Google Cloud может адаптироваться по мере роста потребностей.
«Я бы однозначно рекомендовал эту конфигурацию другим командам, особенно если они планируют мигрировать от ElasticSearch к системе, которая быстрее, проще в масштабировании вверх и вниз и имеет низкий порог входа».
— Бен Хирш, CTO & со-основатель, Locally
Опыт Locally иллюстрирует прагматичный подход к инфраструктуре: тщательно оценивать, адаптировать архитектуру по мере роста системы и инвестировать в инструменты, которые остаются надёжными после внедрения. Их пример показывает, как практический поисковый стек может превратиться в долгосрочную инфраструктуру, когда важны производительность, стоимость и ясность эксплуатации.

