
Проект
Zoe Admin
Единая админка для управления колонками Zoe, доступом пользователей и распределённой сервисной инфраструктурой в 2 000+ каютах.
- Роль
- Разработка админ-приложения · Работа в команде
- Стек
- Javascript · AngularJS · Express · gRPC · Protocol Buffers · CSS · Docker · Docker Swarm · Portainer · Git
- Период
- 2020-2021
- Результат
- Единое управление колонками
Обзор
Колонки Zoe, под единым управлением.
Zoe Admin — административное приложение для управления колонками с голосовым ассистентом Zoe, установленными более чем в 2 000 каютах круизного судна. Оно объединяет управление колонками, контроль доступа и мониторинг речевых сервисов для команд, отвечающих за работу продукта.
Задача
Эксплуатация колонок с голосовым ассистентом в масштабе круизного судна требует управления не только отдельными устройствами. Командам нужно следить за колонками Zoe в тысячах кают и одновременно понимать состояние серверов, поддерживающих голосовой опыт.
На серверах работают обученные модели синтеза и распознавания речи. Zoe Admin показывает парк колонок и поддерживающую их инфраструктуру в одном месте, а ролевое управление доступом связывает административные возможности с ответственностью каждого участника команды.
Роль и сотрудничество
Я работал над административным приложением как часть продуктовой команды. Мой вклад был сосредоточен на разработке интерфейса и сценариев управления колонками Zoe; сама платформа была результатом общей командной работы, а не индивидуальным проектом.
Приложение объединяло frontend на AngularJS и сервисы Express, работающие на Node.js. Backend админки также взаимодействовал с микросервисами на Python, которые разрабатывала другая команда. Команды использовали типизированные RPC-контракты на базе gRPC и Protocol Buffers: границы между сервисами оставались явными, а каждая команда могла работать со своим технологическим стеком.
Архитектура платформы
Административный интерфейс соединял два операционных уровня. Первый — парк колонок Zoe в более чем 2 000 каютах. Второй — серверная инфраструктура распознавания и генерации речи.
AngularJS задавал структуру насыщенных данными административных представлений, а Express обеспечивал серверный слой приложения. Из него вызовы gRPC и схемы Protocol Buffers связывали админку с Python-микросервисами другой команды разработки. RBAC был центральной частью продуктовой модели: доступ к разделам и действиям определялся назначенными ролями.
Вся инфраструктура была контейнеризирована с помощью Docker и оркестрировалась в кластере Docker Swarm. Portainer служил UI для просмотра и управления стеками, сервисами, контейнерами и узлами, поэтому типовые операционные действия не требовали постоянной работы через командную строку.
Операционная прозрачность
Zoe Admin показывал серверные метрики рядом с управлением каютами и колонками. Команда получала единое представление среды Docker Swarm, включая Python-сервисы с обученными моделями синтеза и распознавания речи. Portainer дополнял продуктовый интерфейс инфраструктурной информацией и инструментами управления.
Объединение этих сигналов сокращало расстояние между проблемой в конкретной каюте и инфраструктурным контекстом, необходимым для её исследования. Интерфейс проектировался как операционный командный центр, а не набор изолированных панелей.
Результат
Платформа поддерживает ежедневное управление колонками Zoe более чем в 2 000 каютах круизного судна. Она объединяет операции с колонками, RBAC, интеграцию микросервисов через gRPC и видимость инфраструктуры Docker Swarm в одном административном интерфейсе, созданном несколькими взаимодействующими командами.
Проект подтвердил важный принцип сложных внутренних продуктов: интерфейс должен показывать связи между пользователями, устройствами и инфраструктурой, не заставляя операторов восстанавливать их самостоятельно.
Визуальная галерея
Результаты
- 2,000+
- Кают под управлением
- RBAC
- Ролевое управление доступом
- gRPC
- Типизированная интеграция сервисов
- Swarm
- Оркестрация контейнеров
Обсудим проект
Давайте создадим что-то вместе.
Есть проект или просто хотите познакомиться? Я всегда открыт хорошему разговору.
Обсудить проект