OS Malevich — як ми створили систему, що втілює ідею абсолютної простоти
Рік тому ми взялися за нелегке завдання — зберегти найкраще від операційної системи Ajax Hub, що вже існувала, усунути її слабкі місця і закласти надійний фундамент для подальшого розвитку системи безпеки Ajax. Адже хаб — це мозковий центр, і він має бути найбільш досконалим і надійним елементом. Тисячі годин роботи інженерів, сотні ітерацій і не одне елегантне рішення привели нас до OS Malevich. Не просто нової версії, а цілком нової операційної системи хаба.
Опинившись у глухому куті, не бійтесь повернути назад
Три роки тому ми вирішили створити інтелектуальну централь для керування системою безпеки — Ajax Hub. Написавши технічне завдання для пристрою, ми почали думати, на якому стеці технологій його реалізувати. Було три варіанти — просто програма на С, операційна система реального часу чи Linux.
Звичайна програма на С, як і операційна система, гарантувала б повний контроль, адже ми б самостійно написали кожен компонент системи. Але при цьому проект тривав би довго, погано масштабувався і потребував тривалого налаштування.
Linux давав багато готових рішень, засоби для паралельної й тому швидкої розробки. Ми мали би змогу програмувати на високорівневих мовах, використовувати абстракції і будувати з їхньою допомогою більш складний застосунок. Втім, отримали б і кібервразливості, відсутність часових лімітів у операцій, стандартні, й зазвичай не найкращої якості, драйвери. Що неприйнятно — ми продаємо надійність і безпеку.
Тому ми обрали операційну систему реального часу (RTOS). Так у нас з’явилася можливість створити багатофункціональний і водночас надійний застосунок. Системи реального часу використовуються в ліфтах, автомобільних гальмах, балістичних ракетах. Вони максимально надійні, адже якщо у визначений час механізм не спрацює, далі ця дія вже не має сенсу — трапиться катастрофа. У цьому ключова відмінність RTOS від Linux, де операції чекають своєї черги на виконання. І це одна з причин, чому Linux не використовується у професійних системах безпеки.
Розробка тривала півтора року. Ми створили наворочену ОС, що підтримує просунуті протоколи зв’язку із хмарою по декількох каналах, керує системою зі ста радіодавачів, здатна одночасно відправляти тривожні повідомлення по IP-каналах, телефонувати і надсилати SMS, підтримує пристрої автоматизації. Має всі необхідні для професійних охоронних систем можливості й захищена від атак. Нам вдалося вирішити початкове завдання — дати широку функціональність і забезпечити високу надійність.
Проте варто було випустити Hub на ринок, як з’явилася хвиля запитів на нові функції. Охоронні компанії вимагали пряме підключення до хаба — в обхід нашої хмари. Норвезькі партнери хотіли, щоб всі пожежні датчики при виявленні загоряння включали вбудовані сирени одночасно — зі швидкістю дротових пожежних сигналізацій. Німецький ринок вимагав відповідності продукту європейським стандартам на рівні Grade 2 і підтримки системою безпеки клавіатур. У Малайзії та Данії користувачі розраховували на широкі можливості домашньої автоматизації. Для Італії дуже важливою була окрема роль в системі для інсталяторів.
Тогочасна архітектура не дозволяла нам швидко розширити функціональність. Ми могли оперативно нарощувати функціональність мобільних додатків завдяки високорівневим середовищам розробки, проте написання програмного забезпечення хаба вимагало більше часу. Новації було важко тестувати, їх впровадження вимагало занадто великого ресурсу. Для побудови складної логіки був потрібен новий рівень абстракції, розрив заліза й софту.
Довелося вирішувати, як будувати систему далі. Перейти на Linux? Поступово вдосконалювати нашу ОС? Необхідно було зберегти надійність та стабільність операційної системи реального часу, але водночас отримати масштабованість на рівні високорівневих операційних систем, таких як Linux. Жодне з готових рішень знову нам не підходило, тож довелося придумати своє.
Простота має значення лише тоді, коли шлях до неї проходить через складнощі
В основу нової ОС лягла ідея спрощення. Ми поставили собі умову: додавання функцій не повинно ускладнювати систему та знижувати швидкість розробки. Щоб не збитись із запланованого курсу, проекту було присвоєно кодову назву «Малевич». На честь відомого київського художника Казимира Малевича, чия картина «Чорний квадрат» — яскравий приклад геніальної ідеї, що базується на абсолютній простоті.
Щоб створити ОS Malevich, необхідно було змінити все — архітектуру, підхід до програмування, стандарти оформлення коду, організацію роботи, середовища розробки. Хоча операційна система продовжувала ставити на чільне місце час виконання процесу, вона отримала риси Linux. Ми запровадили аналогічний механізм розподілу процесорного часу, в результаті якого процесор хаба завантажується максимум на 20% навіть при ресурсомістких задачах. Також система стала модульною, для взаємодії елементів використовуються стандартизовані API. За допомогою модулів легко працювати, швидко виявляти та усувати помилки, просто збільшувати функціональність і експериментувати, щоб досягти максимальної ефективності.
Ми вирівняли продукти Ajax з точки зору швидкості розробки. Ми можемо реалізовувати нові функції на хабі, серверах та в мобільних додатках однаково швидко. Наші ідеї більше не стримують технічні обмеження.
Сьогодні комп’ютерна програма не розглядається як витвір мистецтва. Її краса не зрозуміла широкому загалу. Але ми впевнені, що з часом ідеї, які ми реалізували, стануть класикою інтернету речей.
Читайте також: