Rust в производстве: Qovery
Перевод | Автор оригинала: Gints Dreimanis
В этой статье из нашей серии статей о Rust in Production я беру интервью у Бенджамина Шастаньера, старшего инженера-программиста в Qovery.
Мы говорим о Qovery, плюсах и минусах Rust, а также о том, что разработчики должны помнить при работе над проектами на Rust.
Интервью с Бенджамином Частье
Не могли бы вы рассказать нам больше о Qovery и вашей роли там?
Облачные провайдеры появились в начале 2000-х, чтобы позволить любому создать технологическую компанию и управлять инфраструктурой. С годами управление этими поставщиками становится все более сложным и дорогостоящим. Например, AWS, который начинался с трех сервисов, теперь насчитывает более 200, каждый со своей спецификой. В результате в растущих технологических компаниях разработчики должны управлять не только своим техническим развитием, но и этими сложными инфраструктурами, которые тратят время, энергию и ресурсы.
Qovery стремится решить эту проблему, позволяя пользователям сосредоточиться на своих продуктах. Мы создаем новое поколение приложений для развертывания и управления. Что-то настолько простое, что могла бы использовать ваша бабушка !!!
Я работаю старшим инженером-разработчиком программного обеспечения в Qovery, в основном занимаюсь расширением движка Qovery, который представляет собой библиотеку уровней абстракции с открытым исходным кодом поверх облачных провайдеров.
Где вы используете Rust в своем стеке? Насколько большая часть кодовой базы Qovery написана на Rust?
Мы используем Rust в самых разных местах, от инструментов до ядра ядра (которое на 100% написано на Rust), отвечая за большую часть специального соуса Qovery.
Не весь стек написан на Rust, мы просто пытаемся уместить его там, где его использование имело бы смысл. Например, мы собираемся запустить новый прокси-сервер сообщений журнала низкого уровня, и Rust кажется идеальным инструментом для этого.
На сегодняшний день Qovery CLI (CLI, используемый разработчиками для взаимодействия с Qovery) и Pleco (инструмент, позволяющий очищать старые облачные ресурсы) написаны на Go, а бэкэнд Qovery в основном написан на Kotlin.
Как вы решили выбрать Rust? Есть ли какие-то особые требования, которые заставили вас выбрать его?
Вначале продукт Qovery был основан на стеке Python, который невероятно быстро разросся, поддерживая потребность в новых функциях продукта. Кодовую базу стало трудно должным образом поддерживать и тестировать из-за ее эмпирического дизайна. Трудно было продолжать его продлевать. В этот момент предлагалось переписать, и Rust выглядел очень привлекательно по многим причинам.
Вот основные из них:
- Rust - это строго типизированный язык, позволяющий выполнять множество проверок во время компиляции, что означает: больше никаких ошибок времени выполнения.
- Rust ориентирован на безопасность и безопасность, не влияя на скорость и производительность, даже если продукты не предназначены для производительности.
- Малый объем памяти. Это большое преимущество для Qovery, поскольку наше решение развертывается в инфраструктуре заказчика. Уменьшение потребностей в инфраструктуре - одна из наших основных целей.
- Безопасно по конструкции.
- Удивительный набор инструментов. Cargo, компилятор, fmt, clippy, и это лишь некоторые из них.
- Обработка ошибок. Rust настоятельно требует признания вероятности ошибок, возникающих в процессе компиляции.
Есть ли какие-нибудь библиотеки или фреймворки Rust, которые вы сочли полезными и хотели бы добавить?
- Meilisearch: альтернатива поисковым системам Algolia и Elasticsearch.
- Sonic: легкая альтернатива Elasticsearch.
- Sled: движок хранилища, написанный на Rust - альтернатива RocksDB.
- IsomorphicDB: клон PostgreSQL - хороший экспериментальный проект, написанный на Rust.
- Raft-rs: протокол консенсуса Raft, реализованный в Rust с помощью PingCap.
- Трассировка: используйте программы на Rust для сбора структурированной диагностической информации на основе событий.
Помог ли вам Rust добиться чего-то, что было бы сложно сделать с помощью любого другого языка программирования?
Как объяснялось ранее, одна из целей Qovery - оптимизировать использование облака клиентами за счет снижения затрат за счет распределения и масштабирования инфраструктуры в соответствии с их потребностями.
Поскольку Qovery развернут в инфраструктуре клиентов, очень важно, чтобы Qovery занимала как можно меньше места. Rust отлично справляется с этой задачей, позволяя ему работать с минимальными настройками (128 Mo RAM и> 1 vCPU).
Было бы не так просто добиться этого за такой короткий период времени с C или C++, которые позволяют это сделать, но не предоставляют такой высокоуровневый API, или с Go, Python или другим управляемым языком. для этого может потребоваться больше ресурсов.
Еще одно большое преимущество заключается в том, что система типов Rust предотвращает возникновение проблем во время выполнения, которые были бы очень раздражающими при работе в облачной инфраструктуре наших клиентов, поскольку ее может быть сложно отладить. Компилятор Rust гарантирует стабильность и отлично помогает избежать сбоев во время выполнения.
Есть ли места, где Rust терпит неудачу (поддержка экосистемы, продуктивность и т.д.)?
На сегодняшний день я думаю о двух:
- Экосистема все еще молода, и на сегодняшний день явно меньше библиотек, чем в других экосистемах, таких как Go или Python, особенно в части инфраструктуры. Некоторые библиотеки существуют, но еще не достигли версии 1 и могут быть нестабильными в том смысле, что их API, возможно, придется изменить до достижения версии 1.
- Время компиляции может быть немного большим. На самом деле это не неудобно, потому что компилятор делает за вас много работы и предотвращает появление 95% ошибок в производственной среде, но длительное время компиляции требует от нас творческого подхода к нашим конвейерам CI / CD, чтобы не замедлять время доставки перебор. Например, мы ввели кеш сборки, который сократил время сборки примерно в 5 раз.
Какие компании или проекты должны проверить Qovery для собственного использования?
По сути, Qovery идеально подходит для любой онлайн-компании, которой необходимо сосредоточиться на своем бизнесе. За 18 месяцев у нас есть 6500+ разработчиков из 120+ стран, которые используют Qovery. Обещание простое: получите опыт Heroku поверх своей учетной записи AWS.
Какие планы на будущее у Qovery?
Qovery - это построение будущего облака. Следите за обновлениями - в ближайшие недели будет объявлено о нашей инициативе под названием «meta.cloud».
Какие советы вы могли бы предложить тем, кто хочет запустить свой собственный проект на Rust с открытым исходным кодом (может быть как техническим, так и нетехническим)?
- Rust - потрясающий язык.
- Изучите и поймите основные концепции (право собственности, заимствование, срок службы и т.д.).
- Не рассчитывайте освоить его раньше, чем через 3-6 месяцев, даже если вы опытный разработчик.
- Поделитесь своим энтузиазмом и тем, что вы узнали, с сообществом - это поможет продвинуть этот замечательный язык.
- Создайте продукт / проект, над которым вам нравится работать.
- Наслаждайтесь Rust. :)
Хочу поблагодарить Бенджамина за интервью! Если вы хотите узнать больше о Qovery, перейдите прямо на их веб-сайт.
Для получения дополнительной информации о том, как Rust используется в промышленности, обязательно ознакомьтесь с нашей серией интервью, в которых мы говорим с такими компаниями, как 1Password и MeiliSearch.
А если вы хотите получать уведомления о новых статьях о Rust, которые мы публикуем, мы находимся в Twitter, на Medium и Dev.
Увидимся!