«Яндекс» выложил в открытый доступ Userver — инструмент для разработки приложений с микросервисной архитектурой Статьи редакции

Компания использует его, например, в «Яндекс Go», «Лавке», «Доставке», «Маркете» и других сервисах.

  • Яндекс опубликовал исходный код и документацию фреймворка Userver. Его могут использовать все разработчики по открытой лицензии Apache 2.0, инструмент доступен на GitHub.

  • Userver подходит для разработки приложений с микросервисной архитектурой. Изначально его делали для «Такси», и с его помощью компания перешла с монолитного приложения на архитектуру, которая позволяет разрабатывать отдельные независимые компоненты — микросервисы — и использовать их в разных приложениях.

  • Например, микросервис поиска водителя в «Такси» можно использовать для поиска курьера в «Доставке». То же самое можно делать с похожими задачами — расчётом времени прибытия и другими. Микросервисы автономны, поэтому в приложения можно легко добавлять новые функции и обновлять его.
  • В Userver есть всё необходимое для разработки, диагностики, мониторинга, отладки и экспериментов, говорит Антон Полухин, один из авторов фреймворка и руководитель бэкенд-разработки решений для продуктовых команд RideTech и eCom. Например, он подсказывает как исправить ошибки ещё на этапе компиляции, умеет работать с разными базами данных и другое, а также подходит для разработки приложений как в больших, так и в маленьких компаниях.

0
112 комментариев
Написать комментарий...
Boris Medvedev

зачем писать в 2022 году фреймворк для микросервисов на C++?

Ответить
Развернуть ветку
Павел Елисеев

Поддерживаю. C++ хорош для CPU&Memory bounded задач. Если ты все равно ждешь сеть, зачем тут C++? Есть множество более высокоуровневых и удобных языков для этой задачи.

Ответить
Развернуть ветку
Гала Перидоловна

У крупных компаний сейчас на стойку без переподписки ставят оборудование на сотни гбит. Думаю у Яндекса сейчас или 25 гбит, либо 100 гбит. Что вы там в сети будете ждать?

Ответить
Развернуть ветку
Павел Елисеев

Даже самые мощные сетевые карточки медленнее IPC. Нужно правильно выбирать компромиссы. C++ сложный язык с ручным управлением памятью и высокими требованиями к разработчику. Эти ограничения имеет смысл принимать, когда требуется низкоуровневая оптимизация производительности, например, при работе с железом.

Для того что бы показывать котиков в интернетах и клепать веб-сервисы вполне подойдут менее требовательные php/java/python/nodejs/go.

Ответить
Развернуть ветку
Какой-то никнейм

Моё личное имхо, что на С++ ещё и больше времени занимает разработка. Если речь про маленькие проекты, которые делаются несколькими людьми (не несколькими бэкендерами, а в сумме несколькими людьми), то там я слабо представляю, как можно месяца за 4 сделать нормальный MVP для сложной бизнесовой системы на плюсах небольшим коллективом, придется же велосипеды изобретать

Ответить
Развернуть ветку
Гала Перидоловна

userver и есть этот велосипед. Он позволяет разрабатываться быстро. Писать код на C++ не сильно дольше, чем на Go. Я переходил с C++ на Go и первое время было достаточно мучительно жить без нормального RAII, например. Ну или темплейтов.

Ответить
Развернуть ветку
Sergei Zotov

Это не имхо, это факт)

Ответить
Развернуть ветку
109 комментариев
Раскрывать всегда