- PVSM.RU - https://www.pvsm.ru -
Примечание от переводчика: Rust относительно молодой язык программирования, и на этом этапе развития всегда интересные опыты практического применения. Известно, что Intel, DropBox, Amazon, Facebook, Google и другие используют Rust в своих проектах. Про применение Rust в проекте от Microsoft было известно, но подробностей не было, и это вероятно первая официальная публикация про применение Rust в компании Microsoft. (технические детали по самому продукту приводятся «как есть», подробности уточняйте на сайте компании)
Azure IoT Edge — это кроссплатформенный программный проект с открытым исходным кодом, созданный группой разработчиков Azure IoT в Microsoft. Azure IoT Edge — “это служба Интернета вещей на основе Центра Интернета вещей. Эта служба предназначена для клиентов, которым необходимо анализировать данные не в облаке, а на пограничных устройствах. В результате перемещения части рабочей нагрузки в пограничную область устройства тратят меньше времени на отправку сообщений в облако и быстрее реагируют на события.” [взято из официальной русскоязычной документации (1) — прим. переводчика]
В этом посте объясняются некоторые причины, по которым мы выбрали Rust в качестве языка программирования для реализации компонента Security Daemon в продукте.
Security Daemon [1]загружает среду выполнения Azure IoT Edge. Он выступает в качестве посредника связи между средой выполнения Azure IoT Edge и многими хост-службами, такими как среда выполнения контейнера и аппаратные устройства криптографии Hardware Security Modules (HSM) и Trusted Platform Modules (TPM).
Когда мы начали работу над Security Daemon (далее по тексту edgelet), мы определили следующие основные цели проектирования:
Согласно этим пунктам, мы должны были выбрать один из следующих языков программирования: C или C++, или Rust, который компилируется в нативный код. Нежелание нести накладные расходы на сборщик мусора означало, что Go нам не подходит. Требования демона, связанные с безопасностью, означали, что мы хотели избежать ошибок, связанных с памятью и параллелизмом. Как оказалось, с учётом этих ограничений, Rust идеально подходит для нас. В предыдущей публикации (2) на этом блоге [имеется ввиду блог “Microsoft Security Response Center” — прим.перевод], были рассмотрены преимущества при выборе в качестве языка программирования Rust.
Прежде чем мы выпустили Azure IoT Edge в общий доступ, мы привлекли внешнего поставщика средств безопасности для тестирования программного обеспечения на проникновение. Тот факт, что они не обнаружили ни одной проблемы с безопасностью кодовой базы на Rust, было для нас подтверждением правильности нашего выбора. С самого начала мы решили, что компилятор будет обрабатывать все предупреждения как ошибки, включая ошибки, проверенные clippy. Наша система непрерывной интеграции отклоняет пул реквесты, которые не проходят rustfmt, что обеспечило согласованное форматирование кода по всей базе кода.
Процесс обновления компилятора Rust и Cargo [система сборки и управления пакетами — прим. переводчика] работают без проблем в Azure IoT Edge. Обновление до новой версии компилятора — почти всегда безболезненное действие.
Следующим шагом стало изучение языка. По сравнению с другими популярными языками программирования, у Rust достаточно высокий порог вхождения, и мы опасались того, какое влияние это изучение окажет на сроки проекта. В нашей команде были опытные разработчики на C, C++, C# и Java, и к счастью для нас, также было несколько разработчиков кто были очень увлечены Rust!
Мы придумали практические семинары по Rust, в которых проводили команду по тем частям языка, которые, по нашему опыту, были довольно трудными для понимания. Эти затраты времени оказались весьма полезными. Мы обнаружили, что изучение языка в итоге оказалось не такой большой проблемой, как мы себе представляли.
За 4-6 недель, почти каждый участник команды внес нетривиальный вклад в исходный код на Rust.
При том, что наш первый опыт выхода на продакшен с продуктом на базе Rust в Microsoft был полностью удачным, мы отметили бы несколько сложных моментов:
Здесь было бы справедливо отметить, что Azure IoT полностью интегрирован с языком программирования Rust. С тех пор как мы выпустили Azure IoT Edge, использование Rust только увеличилось. Множество проектов облачных сервисов, над которыми сейчас ведется активная работа, пишутся на Rust. Троица, которую предлагает Rust (безопасность памяти, безопасность data race и производительность), идеально подходит для Azure IoT. Надеемся, нам будет что еще сказать об этом в будущем!
Радж Венгалил, главный менеджер SWE, IoT Platform
(1) docs.microsoft.com/ru-ru/azure/iot-edge [2]
(2) msrc-blog.microsoft.com/2019/07/22/why-rust-for-safe-systems-programming [3]
(3) tokio.rs [4]
От переводчика: спасибо за помощь в переводе Legatus88 [5], Funkill [6], русскоязычной телеграмм группе Rust (@rustlang_ru), КДПВ отсюда [7].
Автор: nemilya
Источник [8]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/open-source/332014
Ссылки в тексте:
[1] Security Daemon : https://github.com/Azure/iotedge/tree/master/edgelet
[2] docs.microsoft.com/ru-ru/azure/iot-edge: https://docs.microsoft.com/ru-ru/azure/iot-edge/
[3] msrc-blog.microsoft.com/2019/07/22/why-rust-for-safe-systems-programming: https://msrc-blog.microsoft.com/2019/07/22/why-rust-for-safe-systems-programming/
[4] tokio.rs: https://tokio.rs/
[5] Legatus88: https://habr.com/ru/users/legatus88/
[6] Funkill: https://habr.com/ru/users/funkill/
[7] отсюда: https://ilyabiz.com/
[8] Источник: https://habr.com/ru/post/469961/?utm_source=habrahabr&utm_medium=rss&utm_campaign=469961
Нажмите здесь для печати.