У рубриці DOU Labsми запрошуємо IT-компанії ділитись досвідом власних цікавих розробок та внутрішніх технологічних ініціатив. Питання і заявки на участь надсилайте на editors@dou.ua.
Привіт, мене звати Євген Богатирьов. Я очолюю український розробницький центр американської компанії Waverley Software. Вже понад 2 роки ми у партнерстві з бостонською компанією Jibo Inc.створюємо програмне забезпечення для першого соціального робота для дому. Йдеться про робота Джибо, якого було визнано ТОП інновацією 2017 рокуза версією журналу Time. Українські команди працюють над побудовою серверної інфраструктури, мобільних додатків під iOS та Android та забезпеченням якості продукту. Команди розподілені у харківському та львівському офісах компанії, а деякі спеціалісти працюють віддалено з Києва, Одеси та Чорногорії.
Історія
У 2015 компанія Jibo.Inc звернулась до Waverley по експертизу. На той час головний офіс компанії Waverley працював у Кремнієвій долині вже більше 20 років. Українському представництву компанії було лише три роки.
Головна складність полягала в тому, що спочатку технічні завдання не були чітко сформульовані. Це суттєво ускладнювало роботу, але одночасно робило її ще цікавішою. Інженерам довелося робити багато припущень, ґрунтуючись на дуже малому обсязі інформації. Згодом, коли в компанію прийшли аналітики і дизайнери, які детально проаналізували як повинен функціонувати робот, виявилося, що близько 70 відсотків рішень були правильними.
Українські фахівці з самого початку розуміли, що беруться за особливий проект. Джибо наділений штучним інтелектом, тому може вчитися. Здатний запам’ятати до 16 осіб, розпізнавати обличчя і голоси. Зараз розробники створюють мобільний додаток, який дозволить власникам отримувати оновлення до Джибо так само, як оновлення для смартфонів. Робот вміє посміхатися і жартувати, нагадувати вам про справи і фотографувати, танцювати і навіть муркотіти, як кошеня, якщо ви його погладите. Він емоційний, і це те, чого не вистачає традиційним розумним помічникам для дому.
Джибо знайшов себе на обкладинці Time
Реалізація
Робота почалася у квітні 2015 року. Тоді була залучена невелика команда українських розробників для створення серверної інфраструктури робота. Для проекту ключовими вимогами було підтримання безпеки ти збереження надійності попри невпинний ріст навантаження.
Для досягнення цих цілей були використані такі практики та моделі:
1. Гнучкий підхід до побудови основної платформи
Як це часто трапляється у стартапах, з розвитком проекту функціонал змінюється та удосконалюється. Тому для досягнення максимальної гнучкості була обрана архітектура на базі мікросервісів. Її переваги:
- Неоднорідні сервіси (Heterogenous services) — кожен сервіс може бути реалізований за допомогою технології та мови, яка найкраще відповідає його вимогам і використовується розробниками команди.
- Розширене горизонтальне масштабування — мікросервісна архітектура рекомендована для того, щоб кожна служба була максимально гнучкою і легко масштабувалася для взаємодії з різним навантаженням.
- Високий рівень ізоляції — кожен сервіс використовує інші сервіси лише за допомогою своїх API. Це допомагає зберегти складність коду без зайвих зусиль.
Наріжний камінь основної платформи — це Security Gateway service, еластичний API, що дозволяє роботам і мобільним додаткам безпечно отримувати доступ до будь-яких сервісів. Дизайн API дозволяє розгортати нові сервіси без зміни безпеки самого шлюзу.
2. Якість
Крім тестування самого програмного забезпечення, серверна команда також розвиває вже існуюче рішення. Вона узагальнює спільний код та постійно вдосконалює підходи до архітектури. Це дозволяє оптимізувати потоки даних та алгоритми для зменшення навантаження на серверну інфраструктуру.
Кольоровий діапазон Джибо — один з засобів відобразити емоції робота
3. Продуктивність
Хоча сервіси призначені для лінійного масштабування, потенційно можуть виникнути проблеми з інфраструктурою, зовнішніми службами та іншими сервісами. Тому розподілені load-тести були розроблені та виконані так, щоб імітувати різну кількість роботів. До бета-тестингу серверна команда імітувала сценарії реального життя із завантаженням, еквівалентним 150 000 роботам. Під час тестування були виявлені та усунені різноманітні слабкі місця інфраструктури.
Сценарії базувались на поведінці користувачів, взятої безпосередньо з реального бета-тестування користувачами (аналіз поведінки через фактичні логи роботів).
4. Інфраструктура
На відміну від звичайної інфраструктури, де налаштування нового середовища займає кілька тижнів, а відтворення бага може розтягнутись на кілька днів, повна інфраструктура сервера Джибо може бути розгорнута протягом
Використання мікросервісів дає змогу застосовувати найновіші рішення для кожної частини програми. Ми побудували архітектуру мікросервісів на основі Docker і, як результат, досягли:
- гнучкості бекенду для подальшого зростання;
- гнучкості розробки, якої вимагає сама непостійна природа стартапу;
- високої надійності системи та можливості максимально швидкого відновлення при аварійних ситуаціях та системних помилках (Load balancing, AWS CloudFormation та ін.);
- повної сервісної автономності, тому кожен компонент може бути масштабований незалежно від інших.
З боку DevOps команда Waverley автоматизувала важливі частини процесу розробки, впровадивши безперервну інтеграцію (Сontinuous Іntegration) та безперервну доставку (Сontinuous Delivery), використовуючи централізовану систему керування програмним забезпеченням (управління користувачами, управління логами та системи моніторингу продукту).
З розвитком проекту команда поповнилась спеціалістами зі створення мобільних додатків. За допомогою нативних iOS та Android додатків відбувається налаштування профілю робота (безпечне підключення до Wi-Fi, реєстрація, додавання та розпізнавання членів родини), а також розробляються функції спілкування в реальному часі в чатах з шифруванням повідомлень та доступ до медіагалереї робота. Зараз команда розробляє SDK для дистанційного керування роботом за допомогою мобільного додатку. Які функції ще будуть доступні — наразі не розголошується.
Для досягнення найвищого рівня безпеки протоколи комунікацій базуються на бібліотеках Amazon і налаштовані таким чином, щоб ефективно працювати також на мобільних платформах. Щоб досягти максимальної конфіденційності та забезпечити дотримання Закону про захист конфіденційності дітей в Інтернеті, інженери застосували підхід, що забороняє серверу та постачальникам послуг мережі зчитувати будь-які дані, отримані роботами або мобільним додатком. Вони розробили спеціальну схему генерації та розподілу ключів шифрування. Як результат, всі повідомлення та медіафайли зберігаються на сервері в зашифрованому вигляді, і ніхто, крім людей, доданих в «сім’ю» робота, які мають спеціальний ключ доступу, не зможе отримати цей контент.
Частина проектної команди Джибо у харківському офісі
Результати та плани
10 років тому обкладинку журналу Time прикрашав перший iPhone. Тоді цей смартфон володів лише базовими функціями, на нього не можна було встановлювати сторонні додатки. У нього навіть не було буфера обміну для копіювання інформації. Але це вже був революційний прилад, який змінив звичне сприйняття телефонів. Так було запроваджено термін «розумний» телефон. Щось схоже сьогодні робить і Джибо. За задумом розробників, цей робот реалізує новий спосіб взаємодії людини і робота.
Перший реліз вже відбувся, і 3000 роботів вирушили до своїх власників. Наступні покоління роботів Джибо володітимуть набагато ширшим арсеналом можливостей. Робот вже зараз віддалено нагадує людське тіло — нахиляє і повертає голову, крутить корпусом, але навряд чи в нього з’являться руки і ноги. З самого початку було вирішено, що Джибо буде обтічної форми. Планується, що робот розпізнаватиме емоції людей і відповідно на них реагуватиме, а також стане повноцінною Open Source платформою, яку зможе розширювати кожен охочий. Будь-який розробник зможе створювати свої додатки, щоб наділити робота новими можливостями.
Команда, яка на початку проекту складалася з розробників серверної інфраструктури, зараз виросла до 13 осіб, які відповідають також за розробку мобільних додатків для керування роботом та безпеку продукту. Це був перший проект компанії у сфері робототехніки. За 2 роки роботи Джибо сильно розвинувся, а команда отримала чимало унікальних для українського ринку навичок завдяки співпраці з винахідниками з MIT та інших провідних технологічних інститутів.