Два года назад швейцарский производитель устройств для ухода за детьми AGU заказал разработку приложения у Softeq. Для этого менеджерам AGU пришлось спуститься ровно на один этаж — минские R&D-офисы компаний находятся в одном здании.
dev.by встретился с обоими партнёрами, чтобы поговорить про развитие интернета вещей в Беларуси и запустить милк-машину и небулайзер.
«Мы делаем вещи, которые позволяют современным родителям экономить время»
Думаю, что с Softeq читатели dev.by знакомы неплохо. Можете рассказать подробнее про AGU?
Евгений Мороз, Product Manager в AGU: AGU — швейцарская компания, которая занимается разработкой устройств по уходу за детьми. Один из R&D-офисов компании находится в Минске. Сейчас в нашей линейке около 20 устройств: девайсы смарт-системы AGU, а также бытовые приборы и медицинские устройства. Вся продукция AGU ориентирована на «умный уход за детьми». Самый ценный ресурс современных родителей — это время, поэтому мы делаем такие вещи, которые позволяют его максимально сэкономить.
Что сегодня происходит на рынке интернета вещей? Насколько активен его рост?
Евгений: Постоянно интересуюсь этой темой. Каждые два года IoT-устройств становится в два раза больше, рост рынка примерно 50% в год. В тренде GPS-девайсы — маячки позиционирования, трекеры (кстати, у нас тоже есть детские часы с GPS). Большое распространение получили устройства для вызова помощи пожилым людям или детям. Но наибольшей популярностью пользуется, пожалуй, категория «здоровье» — девайсы для измерения различных показателей (сердцебиения, давления и т. д.) и мониторинга качества сна.
Вадим Кушнарёв, Project Manager в Softeq: Недавно я анализировал японский рынок, который во многом задаёт направление процессу диджитализации мира. Японцы разработали план технологического развития до 2024 года и назвали его «Пятое поколение». В основе этой инициативы три направления: IoT, big data и AI. В Японии большой процент пожилого населения, для ухода за которым всё активнее привлекается интернет вещей. Уверен, умных вещей для детей там тоже хватает.
Евгений: Умных вещей для детей во всем мире большое количество, но цель AGU — объединить их в одну экосистему. Наше изучение рынка показало, что подобного в мире не делает никто.
Мы стараемся объединить устройства четырёх категорий (здоровье, кормление, безопасность и комфорт) в единый workspace, чтобы создать для ребёнка как минимум умную детскую комнату, а лучше сразу умный дом.
Насколько активен белорусский рынок умных вещей и готовы ли белорусы покупать такие инновационные девайсы в больших количествах?
Евгений: Я бы не сказал, что белорусский рынок сильно отличается от западных. Наши устройства рассчитаны на родителей в возрасте 20-35 лет. А это люди, которые мыслят широко и прогрессивно независимо от места проживания, постоянно пользуются смартфонами, поэтому умные вещи они принимают на ура.
Какое место интернет вещей занимает в деятельности Softeq?
Вадим: Думаю, каждый третий проект Softeq — это IoT-проект, ведь интернет вещей является глобальным трендом, направлением, развитие которого диктуется временем. Сейчас у нас в работе проекты умной кроватки, смарт-ошейника, умных устройств для управления медиаконтентом и другие.
Мы работаем с полным циклом разработки: от расстановки компонентов на плате до настройки высоконагрузочных вычислений в облачной среде. В прошлом году Softeq был удостоен бронзовой награды IoT Innovator Awards в категории Best IoT Hardware — Consumer. Думаю, AGU выбрали нас именно благодаря нашей обширной экспертизе. Ну, и неформальной атмосфере в компании (Улыбается).
«Если говорить об устройстве как о приборе, то уникальность стопроцентная»
Как началось сотрудничество Softeq с AGU?
Евгений: Основатели швейцарской компании изначально выбрали Беларусь как базу для разработки приложения, потому что у нашей страны репутация сильного центра разработки. Приложение AGU мы начинали создавать в 2016 году с другим подрядчиком. Работали с ним около года. Поначалу всё было неплохо, но потом стали приходить некачественно протестированные билды. Серверная часть тоже была организована не лучшим образом. Было принято решение найти более надёжного, долгосрочного партнёра. Выбирали между тремя-четырьмя компаниями и в итоге остановились на Softeq.
Вадим: Softeq и AGU — соседи по офисам, это удобно.
Проводите совместные корпоративы?
Евгений: Был такой опыт. (Смеётся.)
Вадим: Мы всегда рады классным ребятам на наших корпоративах. (Смеётся.)
Вадим: Никакой разницы в часовых поясах — можно обсудить вопрос, просто постучав в соседнюю дверь. Это сыграло определённую роль в принятии решения о партнёрстве, ведь легаси-проект — это всегда дополнительные риски.
Был довольно длительный этап переговоров на разных уровнях — хотелось достичь понимания, что наши компании совместимы и разработки сочетаются. Когда начали работать, первым делом запустили knowledge transfer-фазу: перенимали знания о проекте, получали доступ в системы, общались с предыдущим вендором. Параллельно билдили прототип, смотрели на возможность компиляции проекта. Мы тестировали проект, чтобы выяснить, что пошло не так в работе с предыдущим вендором. После трансфер-фазы вышли на уровень планирования и итерационной работы с проектом по стабилизации и выпуску новых девайсов и нового функционала. В итоге наше сотрудничество длится уже почти два года.
Евгений: При передаче проекта Softeq провели его аудит, оценили качество билдов для разных платформ, определили проблемы и узкие места. На данный момент изначальный список уязвимостей закрыт полностью.
Перед нами лежит умный термометр, который можно подключать к приложению AGU. Что в этой умной вещи от AGU, а что от Softeq?
Евгений: Термометр полностью изготовлен AGU, а всё, что в смартфоне, — от Softeq. Хотя изначальный концепт приложения тоже исходил от AGU, но вся имплементация — это Softeq.
В линейке продуктов AGU, как уже говорилось, больше десятка умных вещей для ухода за детьми. Как вы определяете, какие вещи наиболее востребованы родителями?
Евгений: Это непростой процесс. Мы ориентируемся на рынок. В AGU есть визионеры, которые собирают опыт в десятках разных стран и могут предсказывать потребности рынка. Наши маркетологи постоянно находятся в командировках и тоже исследуют рынки Европы, Азии и США. На основе всех этих данных и делается прогноз, что будет нужно рынку в ближайшее время. Наш опыт позволяет различать краткосрочные и долгосрочные тренды.
Насколько уникальны эти устройства?
Евгений: Смотря с чем сравнивать. Если говорить об устройстве как о приборе, то уникальность стопроцентная. Мы его придумали, сделали дизайн, дополнили функционалом приложения. В определённых категориях у AGU, конечно, есть конкуренты, но мы создавали и патентовали и такие девайсы, которые никто до сих пор не повторил.
Например?
Евгений: Например, смарт-лампа. Это полностью наша собственная запатентованная разработка. В лампе три разных типа диодов, благодаря которым можно создать любой световой режим, сочетать их в рассветы, закаты и любую интенсивность света от 2000К до 6000К. По сочетанию своих спектров диоды максимально близки к солнечному свету.
«Нам удалось выйти из состояния легаси в состояние активного продакшна с собственным кодом»
Как и где производятся сами девайсы?
Евгений: Когда AGU проектирует устройство, она ищет и технологического партнёра для его выпуска. Девайсы производятся на заводах в Китае, а также на Тайване, где у нас тоже открыт R&D-офис, который отвечает за взаимодействие с производителем. Качество производственных процессов и соответствие производителя международным стандартам и в целом требованиям AGU контролирует офис в Швейцарии.
Сколько устройств выпускается ежегодно?
Евгений: Десятки тысяч девайсов.
В каких странах кроме Беларуси они продаются?
Евгений: Сейчас мы представлены в большей части стран Евросоюза, скоро запустим продажи в азиатском регионе. Кроме того устройства реализуются почти во всех странах СНГ и Прибалтики.
Сколько человек в Softeq занимается разработкой приложения для AGU?
Вадим: Core team — 6 человек. Периодически подключаем дополнительные ресурсы, и тогда команда расширяется до 10-12 человек.
В чём специфика разработки приложения для IoT?
Дмитрий Бохан, Web Backend Developer в Softeq: Так как устройств много и все они подключены к разным платформам, то вероятность появления неожиданной ошибки гораздо выше, чем обычно. Например, мы столкнулись с массой трудностей в работе над софтом для наших смарт-часов. В часах есть GPS-приёмник, который определяет местоположение девайса. Когда девайс находится под навесом или в здании, спутник периодически теряет его из вида. Но в этих местах доступны точки Wi-Fi или мобильные вышки. Имея информацию о вышках и точках, мы можем определить местоположение. Раньше мы использовали Google Location Service, но в определенный момент Google изменил формат запросов получения координат, что сделало невозможным старый метод триангуляции. Долго искали новый сервис по определению местоположения. Нужно было найти готовое решение с точки зрения триангуляции…
Вадим: …И мы нашли стороннее решение. Понимая риски перехода к новому провайдеру, мы дополнительно сохраняем присутствие предыдущего сервиса с некоторой корректировкой его работы. То есть создаётся связка, где новый сервис позволяет GPS-часам определять местоположение пользователя гораздо точнее, но в случае остановки работы этого сервиса, мы переключаемся на стабилизированный и исправленный предыдущий. Это связано и со стоимостью сервисов геолокации: легаси-поддержка от Google гораздо дороже. Стоимость, которую мы сейчас определили, является оптимальной для подобных операций. Поэтому было решено сделать микс из предыдущей и новой имплементаций, где все сервисы — и Google Cloud, и кастомную разработку — сможет обслуживать один подрядчик.
Евгений: Да, в любых системах, которые подразумевают обслуживание сервиса третьей стороной, правило хорошего тона — резервирование «N+1». Мы должны имплементировать дополнительный сервис на случай отказа первого.
На каком языке написано приложение?
Вадим: Мобильное приложение для iOS написано на Swift, для Android — на Java. Для серверной части используем PHP и NodeJS. Работаем с самыми последними версиями программного языка и библиотек. Если говорить про интеграцию, то Softeq занялся и firmware-частью — активно взаимодействуем с подрядчиками из Китая и с Тайваня. В новых устройствах Softeq является частью R&D-цепочки, а в старых компания быстро даёт фидбэк, чтобы можно было улучшить стабильность или пользовательский опыт. Весь фидбэк (ревью, комментарии и обращения пользователей в службу поддержки) мы обрабатываем и анализируем, чтобы своевременно обновить приложение. Можно сказать, что нам удалось выйти из состояния легаси в состояние активного продакшна с нашим собственным кодом.
«Что-то здесь не так, и приложение предупредит об этом»
Представим ситуацию, когда смарт-часы на руке первоклассника перестали подавать сигнал родителям, а он в это время вышел из школы и решил пойти домой самостоятельно. Сбой девайса может нанести вред ребёнку? Вы закладываете подобные риски в свою работу?
Евгений: Это тонкий вопрос. Всегда есть связка физического устройства и приложения. На какой стороне появится узкое место, предсказать сложно. Мы стараемся закрыть максимум уязвимостей. Но вряд ли можно говорить о вреде ребёнку.
«Под капотом» наших решений сотни человеко-часов работы. Я приведу пример с милк-машиной. На каждом рынке специальные люди покупают все доступные молочные смеси (тонны материала!). Каждая смесь тестируется вручную. Для совместимости с нашей смарт-машиной она должна быть не слишком жирной, достаточно сыпучей и хорошо растворимой. Есть стандартная процедура: мы проверяем каждую смесь для каждого объёма более 10 раз. В итоге всё оцифровывается, переходит в базу приложения, и пользователю достаточно просканировать штрих-код на упаковке со смесью. Приложение знает возраст и вес ребёнка, сопоставляет эти данные с информацией на упаковке смеси и предостережёт от ситуации, когда количество смеси, рекомендованное производителем для конкретного возраста, не совпадает с количеством, которое готовится. Родители собираются приготовить 200 мл для 3-недельного младенца? Что-то здесь не так, и приложение предупредит об этом.
Вадим: Все устройства из линейки «здоровье» имеют протокол коммуникации bluetooth. Передать данные можно и без наличия интернета. Конечно, если девайс вышел из строя, то родитель не сможет измерить температуру. Но мобильное приложение или серверная часть используется только для хранения данных. К тому же у нас есть специальные процедуры по синхронизации данных, чтобы не произошла их потеря. К этому мы относимся очень щепетильно. Если пользователь измерил данные, наша задача — сохранить их. Онлайн «общаются» только часы. Там требуется именно такая коммуникация, чтобы получить данные о вышках и сетях, чтобы родитель мог видеть в реальном времени, что происходит с ребёнком.
Евгений: В каждом устройстве есть резервный сценарий использования. Если в часах недоступен GPS или что-то случилось с приложением, можно использовать девайс по обычному GSM-протоколу. На случай, если в термометре «отвалился» bluetooth или мы не можем сохранить данные в приложении, у устройства есть собственная память.
Я так понимаю, работа тестировщиком на этом проекте тоже не совсем привычная…
Вадим: На этом проекте от тестировщика требуется большая гибкость и креативность. Это нетрадиционные для ИТ проекты. Тестировать их сложно. Но у нас разработан целый комплекс тестовой документации: тест-кейсы, тест-сьюты, тест-раны. Это делается для того, чтобы узнать, насколько стабильна та или иная версия продукта.
Поскольку IoT-направление является для Softeq ключевым, к тестированию мы подходим очень тщательно и готовим креативные кадры для этих целей. В QA-департаменте у нас создан Mobile+IoT Unit, в рамках которого мы аккумулируем экспертизу в этой сфере, готовим курсы в LMS, совместно с Softeq Academy проводим TeqTalks.
Алеся Гончарик, QA Engineer в Softeq: Честно говоря, это мой любимый проект. Здесь всё зависит от конкретного устройства: нужно понимать нюансы тестирования протоколов взаимодействия устройств и их интеграции. Необходимо чётко представлять, чего ты хочешь от девайса, какие функции стоит проверить в первую очередь. Без доли креатива не обойтись. Например, небулайзер мы добавляли в приложение с нуля. Что это за девайс, точно знают родители маленьких детей, мне же приходилось гуглить. Работала с девайсом, получала фидбэк от людей, у которых есть дети.
По итогам тестирования каждого устройства я говорю разработчикам, что должно быть в приложении, какие фичи обязательны.
Случается, что девайсы, которые соединяются по bluetooth в одном помещении, начинают конфликтовать друг с другом, и тогда вообще трудно разобраться в багах и взаимодействиях, но это и интересно.
Одни устройства помогают тестировать другие. Например, мне надо было тестировать индикатор температуры в условиях её постепенного повышения. На себе, как вы понимаете, это проверить не получится, поэтому я нагревала воду в милк-машине до определённой температуры и переливала в стаканчик, к которому был прикреплен индикатор температуры. Затем раз в несколько минут меняла воду в стаканчике на другую, более высокой температуры. Таким образом удалось протестировать построение графика изменения температуры в приложении и отработать сценарии отправки уведомлений при её повышении.
Дмитрий: А мне нужно было тестировать качество сигнала смарт-часов от спутника и без него. Все программисты ленивые, поэтому бегать на первый этаж на улицу мне не хотелось: я открывал окно и клал часы на подоконник. Они определяли местоположение по спутнику. Я забирал их обратно — они теряли местоположение и подключались к вышке.
Алеся: Самый сложный момент тестирования — перед релизом нового функционала. Во время разработки новый модуль тестируется полностью, как и все остальные, которые могут быть с ним связаны. Перед тем, как релизить багфиксы, уже проверяются все главные функции каждого девайса (их 2-3 в основном), ну, а тестирование API полностью автоматизировано.
Какое из этих устройств стало самым проблематичным для разработки и тестирования?
Алеся: Думаю, смарт-часы. У них очень много функций, которые связаны между собой, и чтобы разобраться, как они влияют друг на друга потребовалось довольно много времени и общения внутри команды.
Привлекаете врачей для создания девайсов категории «здоровье»?
Евгений: Когда устройство медицинского профиля выходит на рынок, выполняется процедура его сертификации под требования местного законодательства. Нередко частью сертификации являются клинические исследования. Плюс у нас есть врачи-консультанты, которые помогают нам в процессе разработки, обращая внимание на проблемы определённых групп пациентов. Например, в разработке небулайзера было как минимум два врача. Милк-машина — не медицинское устройство, но в некоторых странах AGU устанавливает её в детских отделениях больниц и роддомах.
В последнее время в ИТ-сфере остро стоит тема хранения и защиты персональных данных. В вашем случае речь идёт о медицинской информации, касающейся детей…
Вадим. В Европе есть стандарт хранения и обработки данных GDPR. Разговоры об этом стандарте шли ещё два года назад, а с 2018-го его начали активно имплементировать. Этот стандарт включает в себя юридические аспекты, затрагивающие и бизнес. Например, штрафные санкции. Поэтому очень важно соблюдать его с самого начала. Мы придерживаемся GDPR и EULA, который описывает процедуру хранения пользовательских данных. Также мы внедрили систему шифрования данных, которая защищает их от внешнего доступа. Мы соответствуем всем стандартам Евразийского рынка. Если захотим выйти на американский рынок, то будем придерживаться HIPAA Compliance — у команды есть знания, как ввести и этот стандарт.
Есть какие-то конкретные планы на ближайшее будущее?
Евгений: Наша компания планирует разработку новых продуктов на несколько лет вперёд, это касается и приложения в том числе. Сегодня мы точно знаем, какие фичи хотим запустить, например, следующей весной, какие устройства подключить. Кроме того, у нас уже полностью готов концепт приложения AGU 2.0, которое предложит пользователю новые возможности и будет полезным ещё до рождения ребенка. Мы хотим сделать шаг от управления устройством к чему-то большему.
Вадим: Softeq в свою очередь готов помочь AGU в реализации всех планов и сделать уход за ребёнком максимально комфортным и технологичным.
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.