Год назад мы взялись за непростую задачу — сохранить лучшее от существующей операционной системы Ajax Hub (2G), устранить слабые места и заложить надежный фундамент для дальнейшего развития системы безопасности Ajax. Ведь хаб — мозговой центр, он обязан быть самым совершенным и надежным звеном цепи. Тысячи часов инженеров, сотни итераций и не одно элегантное программное решение привели нас к OS Malevich. Не новой версии, а совершенно новой операционной системе хаба.
Оказавшись в тупике, не бойтесь повернуть назад
Три года назад мы решили создать интеллектуальную централь для управления системой безопасности — Ajax Hub (2G). Написав техническое задание по устройству, стали думать, на каком стеке технологий его делать. Было три варианта — просто программа на С, операционная система реального времени или Linux.
Обычная программа на С, как и операционная система, гарантировала бы полный контроль, ведь мы бы сами написали каждый компонент системы. Но при этом проект делался бы долго, имел слабую масштабируемость и требовал длительной отладки.
Linux давал много готовых решений, возможность параллельной и, следовательно, быстрой разработки. У нас была бы возможность программировать на высокоуровневых языках, использовать абстракции и строить с их помощью более сложное приложение. Но заодно мы бы получили киберуязвимости, отсутствие временных лимитов у операций, стандартные и, зачастую, не лучшие драйвера. Что неприемлемо — мы продаем надежность и безопасность.
Потому выбрали операционную систему реального времени (RTOS), получив возможность создать многофункциональное и одновременно надежное приложение. Системы реального времени используются в лифтах, автомобильных тормозах, баллистических ракетах. Они максимально надежны, ведь если в строго определенное время не сработает механизм, после это действие уже не имеет смысла — случается катастрофа. В этом ключевое отличие RTOS от Linux, где операции дожидаются в очереди исполнения. И это одна из причин, почему Linux не используется в профессиональных системах безопасности.
Разработка длилась полтора года. Мы создали навороченную ОС, поддерживающую продвинутые протоколы связи с облаком по нескольким каналам, управляющую сетью из сотни радиодатчиков, способную одновременно отправлять тревожные сообщения по IP–каналам, звонить и слать SMS, поддерживающую устройства автоматизации. Обладающую всеми необходимыми профессиональной охранной системе возможностями и защищенную от атак. Нам удалось решить изначальную задачу — дать обширную функциональность и обеспечить высокую надежность.
Но стоило выпустить Hub (2G) на рынок, как пошла волна запросов о новых фичах. Охранные компании просили прямое подключение к хабу — в обход нашего облака. Норвежские партнеры хотели, чтобы все пожарные датчики при обнаружении возгорания включали встроенные сирены одновременно — со скоростью проводных пожарных сигнализаций. Немецкий рынок требовал соответствия продукта требованиям европейских стандартов на уровне Grade 2 и поддержки системой безопасности клавиатур. В Малайзии и Дании пользователи рассчитывали на обширные возможности домашней автоматизации. Для Италии крайне важной была отдельная роль для инсталляторов.
Существующая архитектура не позволяла нам стремительно наращивать функциональность. Мы могли быстро добавлять возможности в мобильные приложения за счет высокоуровневых сред разработки, но на написание софта хаба требовалось больше времени. Новации было сложно тестировать, их внедрение требовало слишком много ресурса. Для построения сложной логики был необходим новый уровень абстракции, разрыв железа и софта.
Пришлось решить, каким образом дальше строить систему. Уходить на Linux? Постепенно дорабатывать нашу ОС? Требовалось сохранить надежность и стабильность операционной системы реального времени, но при этому получить масштабируемость на уровне высокоуровневых ОС типа Linux. Ни одно из готовых решений нам снова не подходило, пришлось придумать свое.
Простота имеет ценность только если путь к ней пройден через сложности
В основу новой ОС легла идея упрощения. Мы поставили перед собой условие: добавление функциональности не должно усложнять систему и снижать скорость разработки. Чтобы не сбиться с намеченного курса, дали проекту кодовое имя «Малевич». В честь известного киевского художника Казимира Малевича, чья картина «Черный квадрат» — яркий пример гениальной идеи, в основе которой лежит бесконечная простота.
Для создания OS Malevich пришлось изменить всё — архитектуру, подход к программированию, стандарты оформления кода, организацию работы, среды разработки. Хотя операционная система продолжила ставить во главу угла время выполнения процесса, у нее появились черты Linux. Мы реализовали схожий механизм распределения процессорного времени, в результате чего процессор хаба даже в ресурсозатратных задачах загружен максимум на 20%. Также система стала модульной, для взаимодействия элементов используются стандартизированные API. С модулями легко работать, ошибки быстро выявляются и устраняются, просто наращивать функциональность и экспериментировать для достижения наилучшей эффективности.
Мы выровняли продукты Ajax по скорости разработки. Можем реализовывать новые фичи на хабе, серверах и в мобильном приложении одинаково быстро. Наши идеи больше не сдерживают технические ограничения.
Компьютерная программа не считается сегодня предметом искусства. Ее красота не понятна широким массам. Но мы уверены, что со временем реализованные нами идеи станут классикой в интернете вещей.
Читайте также: