Инструмент Userver опубликован как бесплатное open source решение. «Яндекс» уже несколько лет эффективно его использует в своих приложениях Go, «Еда», «Лавка», «Доставка» и другие. Фреймворк находится в стадии бета – переезда на открытую разработку.
Особенности разработки
«Яндекс» опубликовал исходный код Userver на GitHub, где также доступна документация к фреймворку, примеры использования и шаблоны для создания собственных сервисов. Все материалы доступны по свободной лицензии Apache 2.0. Инструмент позволяет вести разработку на языке C++.
При создании Userver компания опиралась на три принципа:
- Простота. По словам представителей компании, стажеры при помощи фреймворка могут написать новый микросервис за неделю.
- Надежность. Платформа помогает отслеживать ошибки на этапе компиляции и дает подсказки по устранению проблем.
- Полнота. Userver поддерживает инструменты для тестирования, кэширования, логирования, использования баз данных, JSON, BSON, YAML и другие.
Ключевые возможности
Изначально Userver создавался для переноса приложения «Яндекс.Такси» с монолитной архитектуры на микросервисную. Фреймворк представляет собой корутинный движок для асинхронного взаимодействия по CPU с операционной системой. Языком разработки был выбран C++ благодаря возможности переиспользовать старый код, отсутствию привязки к конкретному вендору и поддержке статической типизации. Внутренняя архитектура инструмента заточена на максимально эффективное решение задач ожидания ввода-вывода.
При разработке приложения на Userver разработчику достаточно писать линейный код. Движок фреймворка самостоятельно обеспечивает эффективное использование кода, переключаясь на выполнение других корутин в специально отмеченных местах. Поэтому программа не простаивает в ожидании данных от ОС, а обрабатывает другие запросы.
Пример кода
В качестве преимуществ Userver в «Яндексе» отмечают применение языка C++. Если кодовая база на «плюсах», то удастся избежать внедрения нового языка и переписывания исходников. Также российский инструмент сразу предлагает всю необходимую функциональность.
Планы на будущее
Сейчас доступна лишь бета-версия фреймворка. В «Яндексе» рассказали, что Userver уже несколько лет успешно применяется в сотнях высоконагруженных сервисов компании.
Компания намерена развивать фреймворк как open source решение. Ближайшие доработки будут во вспомогательных репозиториях. Они коснутся улучшения сервиса динамической конфигурации, добавления новых примеров использования, внедрения новый функций, таких как приоритизация таск-процессоров. После этого компания выпустит первый релиз Userver.