Перейти к основному содержимому

Чек-лист проверки prod-инсталляции Time

Карточка клиента

Название компании
Кол-во пользователей (лимит лицензии, шт.)

Чек-лист

КомпонентОжиданиеПримечания
Инфраструктурные сервисы
k8s
  • кластер минимум из 3-х независимых нод
Вывод команды
kubectl get nodes
PostgreSQL
  • master + replicas
Вывод команды
select pg_is_in_recovery();
  • версия: v13-v14
Вывод команды
select version();
Redis
  • Cluster: master + replicas (минимум 1)
Вывод команд redis-cli
# https://redis.io/commands/cluster-info/
CLUSTER INFO

# https://redis.io/commands/cluster-nodes/
CLUSTER NODES
Kafka + Zookeeper
  • Kafka: минимум 3 ноды
Вывод команды
kafka-broker-api-versions \
--bootstrap-server localhost:9092 \
| grep -oE ".+:9092"
  • Zookeeper: минимум 3 ноды
Вывод команды
zookeeper-shell localhost:2181 ls /brokers/ids
  • созданы необходимые топики (см. Installation Guide → kafka-init):
  1. time.messenger.hp
  2. time.messenger.lp
  3. messenger.time.users.events.private
  4. messenger.time.dl.users.events.private
  5. messenger.time.users.indexing.events.private
  6. messenger.time.dl.users.indexing.events.private
  7. messenger.time.posts.events.private
  8. messenger.time.dl.posts.events.private
  9. messenger.time.channels.events.private
  10. messenger.time.dl.channels.events.private
  11. messenger.time.files.events.private
  12. messenger.time.dl.files.events.private
  13. messenger.time.sessions.events.private
  14. messenger.time.dl.sessions.events.private
  15. messenger.time.channel_members.events.private
  16. messenger.time.dl.channel_members.events.private
  17. messenger.time.emojis.events.private
  18. messenger.time.dl.emojis.events.private
Вывод команды
kafka-topics \
--bootstrap-server localhost:9092 \
--list --exclude-internal
  • partitions: минимум 1 (желательно — равное количеству нод в кластере Kafka), за исключением топика:
    • time.messenger.hp: должна быть ровно одна партиция
Вывод команды
kafka-topics \
--bootstrap-server localhost:9092 \
--describe --exclude-internal
  • replication factor: минимум 2 (для всех топиков)
Вывод команды
kafka-topics \
--bootstrap-server localhost:9092 \
--describe --exclude-internal
  • Роли пользователя Time для указанных топиков:
    • ACCESS_ROLE_CONSUMER
    • ACCESS_ROLE_PRODUCER
Elasticsearch / OpenSearch
  • минимум 3 ноды, у каждой роль master-eligible + data
Вывод команды
# выведет список нод и их роли
curl localhost:9200/_cat/nodes
Вывод команды
# выведет JSON, в котором версия будет по пути: version.number
curl localhost:9200/
S3
  • бакет для медиа-файлов Time создан и у time-server есть к нему доступ на read/write/delete
  • медиа-файл загружается в мессенджер успешно через веб-интерфейс
  • медиа-файл скачивается из мессенджера успешно через веб-интерфейс
  • медиа-файл удаляется из мессенджера успешно через веб-интерфейс
  • Все сервисы запущены в отказоустойчивом режиме согласно сайзингу (Time. Flavors)
Time High Availability
time-server
  • запущен как минимум в 2-х экземплярах (репликах)
Вывод команды
# выведет список подов со статусом для указанных лейблов
kubectl get pods \
--namespace <неймспейс> \
--selector='app.kubernetes.io/name=time-app'
time-front
  • запущен как минимум в 2-х экземплярах (репликах)
Вывод команды
# выведет список подов со статусом для указанных лейблов
kubectl get pods \
--namespace <неймспейс> \
--selector='app.kubernetes.io/name=time-front'
  • Time доступен через веб-интерфейс
time-push-notification-server
  • запущен как минимум в 2-х экземплярах (репликах)
Вывод команды
# выведет список подов со статусом для указанных лейблов
kubectl get pods \
--namespace <неймспейс> \
--selector='app.kubernetes.io/name=time-push-notification-server'
  • push-уведомления работают (отправить любое сообщение другому собеседнику либо в чате, не забыть включить/разрешить уведомления на моб. устройстве)
    • Android
    • iOS
time-probers (опционально)
  • запущен как минимум в 2-х экземплярах (репликах)
Вывод команды
# выведет список подов со статусом для указанных лейблов
kubectl get pods \
--namespace <неймспейс> \
--selector='app.kubernetes.io/name=time-probers'
  • бот настроен (метрика time_probers_probe_issues_count == 0):
  • отправка тестовых постов
  • чтение тестовых постов
  • поиск тестовых постов
  • Time развернут в режиме High Availability согласно сайзингу (Time. Flavors)
Донастройка Time
авторизация
  • настроена: пользователи успешно авторизуются
плагины
(при необходимости)
  • включены и проверены (проверка зависит от плагина и его фукнциональности)
SMTP-сервер
(при необходимости)
  • настроен: письма с уведомлениями приходят на почту
Публикация
адреса
  • Time опубликован наружу по HTTPS + WSS (домен + сертификат) — при открытие веб-интерфейса это происходит по защищенному соединению
Мониторинг
метрики
  • метрики приложений Time и инфраструктуры — собираются в систему мониторинга (метрики видны на дашборде)
логи
  • логи приложений Time и инфраструктуры — собираются в систему мониторинга (логи приложений можно найти)
алерты
  • алерты на основе метрик настроены и проверены: алерты срабатывают и уведомления по ним приходят (в целям проверки можно уменьшить кол-во реплик приложения до нуля, либо завысить/занизить пороги в самих алертах)
Функциональные требования
Тестирование
функциональных
требований
  • «Расширенный чек-лист тестирования Time» — пройден, замечаний нет
Импорт данных
Импорт данных (при необходимости)
  • выполнен в достаточном объеме (визуальная проверка наличия сообщений, каналов, медиа-файлов, аватарок и пр.)
Итоги
  • Приёмка инсталляции на стороне заказчика — успешно пройдена, замечаний нет