Заметки разработчика умного дома

Доклады вне привычной рамки

Отказоустойчивость
Распределенные системы
Другое
Микросервисы

Программный комитет ещё не принял решения по этому докладу

Целевая аудитория

Backend разработчики, мидл и выше.

Тезисы

Последние два года я отвечаю за бэкенд умного дома компании «Сбердевайсы». Помимо основной зоны ответственности, я часто выступаю техническим лидом для функций, затрагивающих все компоненты умного дома. Мне даже довелось побывать на стройке. Мой доклад — это попытка обобщить полученный за это время опыт.

Давайте представим, что мы решили запустить собственную экосистему умного дома для широкого потребителя. Вместе мы пройдём весь путь — от идеи до работающей системы, обслуживающей тысячи квартир и домов.

Мы начнём с формирования идеального образа результата: каким мог бы быть современный умный дом, если бы мы подключились на стадии проектирования. В данном сценарии столь популярные беспроводные технологии играют второстепенную роль, уступая место старым добрым UART, Modbus и т.д.

Затем мы скорректируем этот образ с учётом реалий, где основную массу потребителей составят пользователи с готовым жильём и ремонтом. В подавляющем большинстве случаев первое умное устройство будет использовать Wi-Fi или останется на полке магазина. А для различного рода датчиков, не подключённых к сети 230 Вольт, оптимальным решением будет протокол Zigbee. Выберем минимально необходимый набор устройств — это определит параметры нашего MVP. Сформируем технические требования, выберем ключевые метрики.

Требования определяют архитектуру. Оптимальным решением для устройств будет протокол MQTT, справедливо заслуживший популярность среди разработчиков умных устройств. В выборе ЯП и БД возможны варианты, но мы пойдём по пути Go + PostgreSQL.

Мы пройдём этап запуска и кратного роста нагрузки. Разберём, как решать проблемы масштабирования проекта. Основным вызовом будет балансировка большого числа долгоживущих TCP-соединений, что решается с помощью Nginx как для MQTT, так и для WebSocket.

Чем больше число пользователей сервиса, тем большее количество людей будет затронуто в случае плановой или незапланированной недоступности сервиса. Сбои в работе интернет-провайдеров также нарушают работу умного дома. Снизить чувствительность к таким событиям поможет повышение автономности нашего решения. Без доступа в интернет Zigbee Hub может выполнять простые сценарии автоматизации, лампочка — самостоятельно выполнять простые анимации, розетка — выключаться или включаться. Оборотной стороной такого решения будет высокая распределённость нашей системы, что усложняет реализацию фич и мониторинг.

В финале мы проработаем варианты дальнейшего развития — умный офис, умный отель, умный город.

Тимлид

Видео

Другие доклады секции

Доклады вне привычной рамки