Итоги H1 2016: TLS стал дешёвым, контейнеры повзрослели, реестр ПО давит
Полгода Let's Encrypt GA, Docker+k8s в проде, реестр отечественного ПО и ClickHouse. Что оставили в H2, от чего устали и что берём в работу дальше.
Итоги первого полугодия 2016: Let's Encrypt GA, ClickHouse open-source, реестр ПО, контейнеры в проде
Полгода прошло быстро и неровно. Январь-февраль - спокойно: читали документацию, обновляли стенды, закрывали хвосты с прошлого года. Март встряхнул DROWN-атакой, апрель - GA Let's Encrypt, май - анонсом ClickHouse, июнь - сразу несколькими вещами одновременно. К концу июня ощущение, что за шесть месяцев произошло то, на что обычно уходит год-полтора. Попробуем разобраться что именно и что с этим делать.
TLS перестал быть платным
Это, наверное, самый очевидный сдвиг. В январе мы тестировали closed beta Let's Encrypt, в апреле раскатывали GA на первые 15 клиентских доменов, в мае обкатали certbot в связке с Ansible. Сейчас Let's Encrypt - уже не «можно попробовать», а «ставим по умолчанию» на любом новом проекте без wildcard и EV.
Что изменилось в голове: раньше «поставить TLS» - это задача, которую надо было запланировать, выделить бюджет, согласовать с клиентом. Теперь это операция на двадцать минут в рамках любого другого деплоя. Сертификат перестал быть ресурсом, за которым следят. Он просто есть, и cron его обновляет.
Платные сертификаты никуда не делись - EV и wildcard там, где нужны. Но это теперь исключение с обоснованием, а не правило.
Контейнеры в проде: кое-что уже работает, кое-что ещё нет
Docker 1.10, 1.11 - оба прошли у нас за эти полгода. Docker Compose v2 со Swarm смотрели в апреле. Kubernetes дошёл до 1.2 с Ingress; в июле ждём 1.3 со StatefulSets. Схема «stateless-сервисы в k8s, базы данных отдельно на VM» - она и работает в производстве.
Что работает хорошо. Stateless: веб-приложения, API-серверы, воркеры - k8s c ними справляется, и оперировать удобнее чем VM-флотом. Rolling update, автоскейлинг, Ingress для маршрутизации - всё это реальные инструменты, не демо-сценарии.
Что ещё требует осторожности. Stateful - базы, очереди. StatefulSets идут в 1.3, мы посмотрели на них заранее на PostgreSQL, но в production не несём. Нет ещё наработанного операционного слоя: бэкапы, апгрейды, PITR внутри контейнерного кластера. Это не «плохо», это «требует времени на обкатку».
Мониторинг контейнерной среды - отдельная история. Prometheus 1.0 на подходе, мы его уже смотрели. Grafana + Prometheus + node_exporter + cAdvisor - это стек, который реально работает для метрик контейнерной инфраструктуры и не требует того лицензионного бюджета, который нужен для Zabbix в крупных конфигурациях.
ClickHouse: от анонса до рабочего стенда за месяц
Это была неожиданно быстрая траектория. Яндекс анонсировал открытие в мае, код открыл 15 июня, и к концу июня у нас уже есть рабочий тестовый стенд на 500 млн строк событий. Полгода назад для аналитики больших объёмов у нас выбор был между «PostgreSQL с партиционированием» и «Spark, что тяжело».
Теперь есть третий вариант: ClickHouse, который разворачивается за час и на тех же агрегационных запросах даёт результат за секунды там, где PostgreSQL считал минуты. На production с таким объёмом тестирования никто идти не будет, но как инструмент в арсенале - уже обозначился.
Реестр ПО и импортозамещение: давление не уходит
Это тот трек, который требует больше всего переговоров и меньше всего технической работы - и именно поэтому от него устаёшь иначе. Реестр зависал в начале года, первые итоги по реестру смотрели в марте, в апреле пилотировали Astra Linux SE, в июне закрыли требования госклиента через Postgres Pro.
Наблюдение по полугодию: требование «из реестра» звучит в ТЗ всё чаще, но сам реестр не всегда содержит то, что реально нужно клиенту для работы. В результате либо клиент переформулирует требования - и тогда работаем с нормальным стеком, - либо берём то, что в реестре, и тщательно проверяем совместимость. Postgres Pro - приятный сюрприз: совместимость с PostgreSQL высокая, операционных неожиданностей меньше, чем ожидали.
Сертификаты ФСТЭК на ПО - отдельная головная боль. Актуальная версия и сертифицированная версия не всегда совпадают. За этим надо следить вручную, и это никуда не денется.
Что берём в H2
Несколько вещей, которые уже ясны:
-
ClickHouse на первый production-проект. Есть клиент с аналитикой событий, где PostgreSQL уже начинает скрипеть под нагрузкой. Стенд показал что нужно, осталось сделать нормальный операционный слой вокруг ClickHouse: бэкапы, мониторинг, процедура обновления.
-
StatefulSets в k8s - осторожное продвижение. Dev и staging-окружения - разумное место для отработки. Production с данными - не раньше чем появятся нормальные процедуры для PITR и апгрейдов.
-
HTTP/2 докатить до всех nginx. Смотрели в апреле, часть клиентов уже перевели. Оставшиеся - в очереди.
-
Terraform для инфраструктуры. 0.6 использовали, 0.7 с модулями уже смотрели. Хотим перевести больше клиентской инфраструктуры на IaC - сейчас это половина, хочется ближе к двум третям.
-
Импортозамещение - готовиться к следующей волне. Требования в ТЗ будут только расширяться. Нужен внятный список «что из реестра реально работает и с чем» - не в голове, а зафиксированный.
H1 получился насыщенным без плана на это. H2 хочется сделать чуть более управляемым - хотя инфраструктурная жизнь имеет свойство этот план корректировать.