Как язык программирования Rust изменил технологию TreeScale

Язык программирования Rust — это относительно новый язык программирования с огромными инновационными решениями, и, что удивительно, он предлагает неограниченно безопасное кодирование с производительностью, подобной C/C++.

Несколько слов о TreeScale

TreeScale — это сетевая технология, которая масштабируется с помощью математического принципа и алгоритмов три графа и обеспечивает бесконечное масштабирование без модификации предопределенных сервисов, просто подключая новый сервер/сервис к существующей среде дерева/графа.

На основе этой технологии компания TreeScale создала несколько сервисов с огромными улучшениями масштабируемости и сетевой производительности, таких как Container Registry, Cloud Queue Storage, выполнение контейнерных задач, таких как AWS Lambda, и т. д.

Путешествие в ржавчину

Изначально технология TreeScale была написана на C++, и производительность была на высоте! просто потому что это С++ :)

Но мы начали тратить огромное количество времени на исправление проблем между несколькими платформами, утечками памяти и системными ошибками типов при преобразовании из указателей. Я знаю, что разработчики C++ сказали бы, что это нормально, и вы должны писать свой код аккуратно, но для относительно небольшой компании это огромные инвестиции в проект, написанный на C++, потому что просто разработчики тратят много времени на исправление ошибок в коде, и очень легко что-то сломать по ошибке.

Поэтому мы начали изучать другие способы сделать TreeScale более продуктивным, и в то время мы поняли, что мы определенно потеряем часть производительности, если перейдем на другой язык.

После исследований и демо-приложения в Go мы нашли Rust!

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

Заключительные замечания

Язык Rust дал нам расслабленное кодирование, потому что, если вы что-то пропустите или напишете какой-то опасный код, компилятор Rust сообщит вам об этом или вообще не будет компилировать ваш код!

По производительности мы потеряли около 5%, что не критично, если сравнивать время разработки и развертывания по сравнению с C++. Основная причина снижения производительности связана с семантикой перемещения Rust вместо указателей C++. В любом случае вам придется сделать выбор: писать очень опасный код с производительностью или писать безопасный код, не задумываясь об управлении памятью.

Команда Rust проделала отличную работу, объединив управление памятью и безопасное программирование без существенной потери производительности, что делает их уникальными, и я уверен, что в некоторых местах они заменят C++.