userver используется в продакшене в Такси, Маркете, Еде, Лавке, Доставке, Финтехе и многих других сервисах
и Райдтеха Яндекса
Эффективные асинхронные драйверы для баз данных и протоколов передачи данных. MongoDB, PostgreSQL, Redis, ClickHouse, MySQL/MariaDB, YDB
HTTP/{1.1, 2}, gRPC, AMQP 0-9-1, Kafka, TCP, TLS, WebSocket
Богатый набор высокоуровневых компонентов для кэшей, задач, распределенной блокировки, логирования, трассировки, статистики, метрик, JSON / YAML / BSON
Функциональность для изменения конфигурации сервиса «на лету»
Настраиваемые «на лету» драйверы с дедлайнами, таймаутами, контролем перегрузки и многими другими вещами для отказоустойчивости
Полный набор асинхронных низкоуровневых примитивов синхронизации и абстракций над возможностями операционной системы
userver входит в топ 15 фреймворков по версии TechEmpower —
открытого проекта, который измеряет производительность фреймворков
в контексте выполнения фундаментальных задач: сериализации JSON,
доступа к базе данных и составления шаблонов на стороне сервера.
Всего в рейтинге более 500 решений
В отличие от большинства решений из топа, код на userver остаётся понятным и линейным, без «лапши» из колбеков несмотря на мигания сети, падения и восстановления баз данных.
«Написание на userver напоминает мне Python — я пишу только то, что нужно написать, с минимумом бойлерплейта. Но при этом я нахожу ошибки в момент компиляции, а не когда всё падает в продакшене»
зависимостей в проектах на Kotlin. Предоставляет предметно-ориентированный язык для декларации фабрик и настраиваемого валидатора графа зависимостей
Проект android-приложения Яндекс Маркет состоит из более чем 350 gradle-модулей, которые работают с графом зависимостей через Scout
Библиотека обслуживает 6000 зависимостей быстро и с возможностью масштабирования
Второе место по бенчмарку среди популярных DI-фреймворков:
Dagger, Koin, Kodein и Katana
В репозитории Scout кроме библиотеки хранится набор инструментов,
утилит, тестов и бенчмарков, а ещё — подробная документация.
У библиотеки есть две версии: scout с ключами типа KClass
и scout-with-compiled-keys с ключами типа int
«Библиотека недавно вышла из бета-тестирования. В это время каждое принятое решение было пересмотрено множество раз, но API Scout на протяжении полутора лет оставался практически неизменным. Мы создавали продукт для себя, и нам нравится результат. Теперь пора им поделиться»
В основе решения лежит работа со скоупами —
частями приложения со своим жизненным циклом и набором зависимостей
Одно из ключевых преимуществ: максимальная compile-safety без кодогенерации. Если код может быть написан, он точно будет работать предсказуемо
yx_scope создавался как инструмент для Flutter-приложений Яндекса. Фреймворк помогает удовлетворить потребности как приложений, которые не требуют сложных связей и многомодульности, так и запросы крупных проектов, разбитых на десятки скоупов и модулей
Широта применения и универсальность — причины, по которым мы решили отдать yx_scope на опенсорс. Решение поможет повысить безопасность дерева зависимостей и получить гибкость через систему скоупов
Расширить набор правил линтера
Разработать больше инструментов, например, возможность визуализировать дерево скоупов до компиляции или отслеживать их жизненный цикл в рантайме
Подготовить адаптеры с другими популярными библиотеками
Возможно ещё больше упростить написание с помощью новой фичи языка Dart — макросов
«В разработке на Flutter мы использовали разные DI-фреймворки и в каждом нам бы хотелось что-то улучшить. Поэтому yx_scope включает в себя всё лучшее из нашего опыта — и мы хотим поделиться этим решением с комьюнити.
И, конечно же, хочется получить фидбек и контрибьюты, потому что фреймворку ещё есть куда развиваться — теперь комьюнити может принять в этом участие»
Подружиться в соцсетях