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

Как Locally мигрировала с Elasticsearch на Manticore Search в Google Cloud, достигнув 16‑кратного снижения затрат, обрабатывая десятки тысяч запросов в секунду в геопоиске, электронной коммерции, агрегированиях и векторном поиске.

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