Какую версию ClickHouse использовать в производстве?
Прежде всего, давайте обсудим, почему люди задают этот вопрос в первую очередь. Существуют две ключевые причины:
- ClickHouse разрабатывается с достаточно высокой скоростью, и обычно в год выпускается более 10 стабильных версий. Это создает широкий выбор версий, и это не простая задача.
- Некоторые пользователи хотят избежать затрат времени на определение, какая версия лучше всего подходит для их сценария использования, и просто следовать совету кого-то другого.
Вторая причина более фундаментальна, поэтому мы начнем с нее, а затем вернемся к навигации по различным версиям ClickHouse.
Какую версию ClickHouse вы рекомендуете?
Соблазнительно нанять консультантов или довериться известным экспертам, чтобы избавиться от ответственности за вашу производственную среду. Вы устанавливаете конкретную версию ClickHouse, которую кто-то другой рекомендовал; если возникают какие-то проблемы с ней - это не ваша вина, а чья-то другая. Это мышление - большая ловушка. Никто не знает лучше вас, что происходит в вашей производственной среде.
Итак, как же правильно выбрать, на какую версию ClickHouse обновиться? Или как выбрать вашу первую версию ClickHouse? Прежде всего, вам нужно инвестировать в настройку реальной предпроизводственной среды. В идеальном мире это могла бы быть полностью идентичная теневое копирование, но это обычно дорого.
Вот несколько ключевых моментов для обеспечения разумной глубины в предпроизводственной среде с невысокими затратами:
- Предпроизводственная среда должна выполнять набор запросов, максимально близкий к тем, которые вы собираетесь выполнять в производстве:
- Не делайте ее только для чтения с какими-то замороженными данными.
- Не делайте ее только для записи, просто копируя данные без создания каких-либо типичных отчетов.
- Не очищайте ее полностью вместо того, чтобы применять схемные миграции.
- Используйте выборку реальных производственных данных и запросов. Постарайтесь выбрать выборку, которая все еще является представительной и делает
SELECT
запросы с разумными результатами. Используйте обфускацию, если ваши данные конфиденциальные, и внутренние политики не позволяют им покидать производственную среду. - Убедитесь, что предпроизводственная среда охвачена вашим мониторингом и программным обеспечением для оповещения так же, как и производственная среда.
- Если ваше производство охватывает несколько дата-центров или регионов, убедитесь, что ваша предпроизводственная среда делает то же самое.
- Если ваше производство использует сложные функции, такие как репликация, распределенные таблицы и каскадные материализованные представления, убедитесь, что они настроены аналогично в предпроизводственной среде.
- Существует компромисс между использованием примерно такого же количества серверов или ВМ в предпроизводственной среде, как и в производстве, но меньшего размера, или гораздо меньшего количества, но одинакового размера. Первый вариант может выявить дополнительные сетевые проблемы, в то время как последний проще управлять.
Второй областью, в которую стоит инвестировать, является инфраструктура автоматизированного тестирования. Не предполагайте, что если какой-то запрос успешно выполнен один раз, он будет продолжать работать так всегда. ОК иметь некоторые юнит-тесты, где ClickHouse имитируется, но убедитесь, что ваш продукт имеет разумный набор автоматизированных тестов, которые запускаются против реального ClickHouse и проверяют, что все важные сценарии использования по-прежнему работают должным образом.
Дополнительным шагом вперед может быть внесение этих автоматизированных тестов в открытую тестовую инфраструктуру ClickHouse, которая постоянно используется в повседневной разработке. Это определенно потребует дополнительных временных и трудовых затрат, чтобы узнать, как ее запустить, а затем как адаптировать ваши тесты к этой системе, но это окупится, обеспечивая, что версии ClickHouse уже протестированы на них, когда они обнародуются как стабильные, вместо потери времени на сообщение о проблеме после факта и ожидания внедрения исправления, его обратной совместимости и выпуска. Некоторые компании даже имеют такие вклады тестов в инфраструктуру как внутреннюю политику (называемую Правило Бейонсе в Google).
Когда у вас есть ваша предпроизводственная среда и инфраструктура тестирования, выбор лучшей версии становится простым:
- Регулярно запускайте ваши автоматизированные тесты против новых версий ClickHouse. Вы можете делать это даже для версий ClickHouse, которые помечены как
testing
, но дальнейшие шаги с ними не рекомендуется. - Разверните версию ClickHouse, которая прошла тесты, на предпроизводственной среде и убедитесь, что все процессы работают как ожидалось.
- Сообщите о любых проблемах, которые вы обнаружили, в ClickHouse GitHub Issues.
- Если не было серьезных проблем, должно быть безопасно начинать развертывание версии ClickHouse в вашей производственной среде. Инвестирование в автоматизацию постепенного выпуска, реализующую подход, аналогичный канаречным релизам или зелено-синим развертываниям, может еще больше снизить риск проблем в производстве.
Как вы могли заметить, в описанном выше подходе нет ничего специфического для ClickHouse - люди делают это для любой инфраструктуры, на которую они полагаются, если серьезно относятся к своей производственной среде.
Как выбрать между версиями ClickHouse?
Если вы посмотрите на содержимое репозитория пакетов ClickHouse, вы увидите два типа пакетов:
stable
lts
(долгосрочная поддержка)
Вот некоторые рекомендации по выбору между ними:
stable
- это тип пакета, который мы рекомендуем по умолчанию. Они выпускаются примерно раз в месяц (и таким образом предоставляют новые функции с разумной задержкой), и три последних стабильных релиза поддерживаются в отношении диагностики и бэкпортирования исправлений ошибок.lts
выпускаются дважды в год и поддерживаются в течение года после их первоначального выпуска. Вы можете предпочесть ихstable
в следующих случаях:- Ваша компания имеет какие-то внутренние политики, которые не позволяют частые обновления или использование ПО, не являющегося LTS.
- Вы используете ClickHouse в некоторых вторичных продуктах, которые либо не требуют сложных функций ClickHouse, либо не имеют достаточных ресурсов для его обновления.
Многие команды, которые изначально думают, что lts
- это правильный выбор, часто все равно переключаются на stable
из-за какой-то новой функции, которая важна для их продукта.
Еще один момент, который нужно держать в памяти при обновлении ClickHouse: мы всегда внимательно следим за совместимостью между релизами, но иногда это нецелесообразно, и некоторые незначительные детали могут измениться. Поэтому убедитесь, что вы проверили журнал изменений перед обновлением, чтобы увидеть, есть ли какие-либо замечания о несовместимых изменениях.