⚠️ Эта страница автоматически переведена, и перевод может быть несовершенным.
blog-post

Manticore Search в масштабе на Google Cloud: история Locally

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 года, включая Manticore Search.

То, что началось как внутренний эксперимент, перешло в продакшн‑прототип, а затем в более широкую миграцию, всё это в рамках их существующей инфраструктуры Google Cloud.


Высокопроизводительная, многоцелевое поисковая платформа

Сегодня Manticore Search глубоко интегрирован в продакшн‑системы Locally и поддерживает множество нагрузок.

“Locally обрабатывает десятки тысяч запросов Manticore в секунду в продакшене.”
— Ben Hirsch, CTO & Co-founder, Locally

Вместо того чтобы обслуживать одну задачу, Manticore функционирует как универсальный поисковый слой. Он поддерживает запросы с тяжёлой агрегацией, гео‑поиски, e‑commerce поиск и автодополнение, основанное на векторах.

Как объясняет Хирш:

“Мы используем его четырьмя различными способами:

  1. Как высокодоступный индекс общих агрегаций, которые слишком дорогие или медленные для запросов из нашей основной реляционной базы данных в режиме выполнения.
  2. Как гео‑пространственный индекс данных о местоположении и запасах, используемый в критическом пути тысяч высоконагруженных сайтов брендов и ритейлеров.
  3. Для обеспечения работы e‑commerce поисковой системы, предоставляющей богатый фасетный, локализованный интерфейс доступности продуктов для более чем 50 000 ритейлеров по всему миру.
  4. Используя векторные эмбеддинги для создания доменно‑специфического, поддерживающего естественный язык автодополнения, ориентированного на нашу обширную базу клиентов и покупателей.”

Эта консолидация сократила необходимость в множестве специализированных систем и упростила процесс создания и поддержки функций, связанных с поиском. Эксплуатация 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 иллюстрирует прагматичный подход к инфраструктуре: тщательно оценивать, адаптировать архитектуру по мере роста системы и инвестировать в инструменты, которые остаются надёжными после внедрения. Их пример показывает, как практический поисковый стек может превратиться в долгосрочную инфраструктуру, когда важны производительность, стоимость и ясность эксплуатации.

Установить Manticore Search

Установить Manticore Search