О компании

Компания Genotek предоставляет передовые геномные технологии в единой системе: от получения образцов ДНК до подготовки результатов генетико-медицинских тестов, персонифицированных медицинских рекомендаций, советов по образу жизни и генеалогической информации.

От анализа генома к генеалогическим деревьям

Геном человека состоит из трех миллиардов нуклеотидов. Его анализ позволяет, например, выявлять предрасположенность к различным заболеваниям, как наследственным, так и многофакторным, на риск возникновения которых влияет и образ жизни. Также каждый человек может расшифровать свой геном и сравнить его с геномами людей, у которых все предки принадлежат к одному этносу, чтобы узнать о своем происхождении.

И, конечно, анализ генома позволяет находить родственников. Например, если есть два человека, у которых геномы схожи на 50%, то можно с высокой уверенностью говорить, что это родитель и ребенок либо родные братья или сестры. Если совпадений меньше, это более дальние родственники. Так, сравнивая ДНК, можно найти своих четвероюродных братьев или сестёр.

В базах данных Genotek хранится уже очень много генетических данных, с помощью которых вот уже пять лет люди ищут своих родственников. Для удобства своих клиентов компания разработала сервис, который позволяет клиенту бесплатно создать свое генеалогическое древо и даже объединить его с деревьями-родственниками.

От соблюдения законодательства к serverless

С момента основания в 2010 году Genotek использовал собственные серверы для хранения и обработки персональных и других чувствительных данных, облачные ресурсы Google, включая стандартные и прерываемые виртуальные машины, а также высокоуровневые сервисы AppEngine.

Однако, генетическая информация российских граждан рассматривается как персональные данные. Соответственно, она должна храниться на территории РФ. Кроме того, Genotek собирает и хранит другие категории чувствительной информации: контакты клиентов, их медицинские данные, информацию о происхождении и самочувствии.

Поэтому после появления 242-ФЗ, который обязывает операторов персональных данных обрабатывать и хранить персональные данные россиян с использованием баз данных, размещенных на территории РФ, для соблюдения законодательства, а также чтобы увеличить скорость обработки данных, все данные клиентов были перенесены на Yandex Cloud.

Однако в дальнейшем биоинформатики Genotek начали активно применять в своей работе управляемые базы данных, поскольку это позволяло значительно экономить ресурсы специалистов на обслуживании приложений и сервисов. А когда облачная платформа презентовала сервис Yandex Cloud Functions и возможности бессерверных технологий, то его решили применить для новых проектов.

Как разрабатывались генеалогические деревья

В Genotek работают фронтенд- и бэкенд-разработчики, веб-программисты и DevOps-инженеры, а также биоинформатики, которые занимаются анализом ДНК. Создание генеалогических деревьев тесно связано с поиском родственников по генетическим данным, поэтому за разработку сервиса взялась именно команда биоинформатиков. И несмотря на то, что у них не было большого опыта в разработке приложений, им удалось относительно легко и быстро создать новый сервис, опираясь на serverless-технологии и управляемые базы данных на Yandex Cloud.

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

Фронтенд сервиса работает с Yandex Cloud Functions как с API — по запросу функция забирает нужные данные из базы и строит деревья для каждого пользователя под каждый его запрос. Чтобы не тратить время на разработку отображения графов в интерфейсе нового сервиса, была использована готовая библиотека yfiles, а для хранения информации использовали управляемые базы данных:

  • Yandex Managed Service for MongoDB — для хранения данных;
  • Yandex Managed Service for ClickHouse — для хранения истории изменений;
  • Yandex Managed Service for Elasticsearch — для хранения логов.

Весь стек работает следующим образом:

  • Функция по запросу получает нужные данные из базы данных MongoDB, и строит деревья для каждого пользователя под каждый его запрос. Также, функция может редактировать и изменять эти данные.
  • С одним деревом могут работать несколько человек, поэтому нужно следить за историей изменений. Для контроля было решено использовать Yandex Managed Service for ClickHouse. Когда функция вносит изменения в дерево, она автоматически добавляет запись в базу данных.
  • Для контроля за логами функций используется Yandex Managed Service for Elasticsearch.
  • А когда на Yandex Cloud Functions был добавлен язык R, его стали активно использовать для склейки деревьев.

Пример нового сервиса здесь: https://demo.genotek.ru/genealogical-tree

Что дальше

Сейчас в сервис генеалогических деревьев добавлено около 100 000 человек. Применение бессерверного подхода позволило биоинформатикам Genotek сосредоточиться на написании кода и не задумываться о производительности, обслуживании и масштабировании баз данных.

В будущем с помощью Yandex Cloud Functions пользователям будут рассказывать о новых родственниках на основании данных из ДНК-тестов, появится возможность загружать фотографии и другие файлы, а также импортировать и экспортировать генеалогические деревья в формате GEDCOM.

Мнение

Александр Ракитько,
CPO в Genotek
Александр Ракитько,
CPO в Genotek

Это тот случай, когда испытываешь эстетическое удовольствие не только от внешнего вида продукта, но и от его технической реализации. Мы превращаемся в больших поклонников serverless‑технологий. Если кратко, то их суть в том, что всю заботу о сервере на себя берет Yandex Cloud. Вам не нужно думать о выделении ресурсов, администрировании сервера, бэкапах баз данных. Это сильно облегчает жизнь, экономит расходы и позволяет сосредоточиться непосредственно на разработке.