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

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

author image
View as markdown
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 поиск и автодополнение, основанное на векторах.

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

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

  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 одной командой в Linux или macOS:

curl https://manticoresearch.com | sh

Для расширенных вариантов установки см. полное руководство по установке и документацию .

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