技术开发 频道

DevOps时代,Rust将承担更伟大的责任!

  【IT168 评论】如今,越来越多的Ruby on Rails开发人员都在转向Rust,Rust极有可能成为下一代基础架构语言。为什么Rust可以如此迅速普及?在时下最流行的Dev/Ops中,Rust又发挥着什么作用呢?本文Mesosphere公司首席执行官Florian Leibert和Rust社区专家Steve Klabnik就这些问题进行了深度探讨。

DevOps时代,Rust将承担更伟大的责任!

  Steve目前在Rust工作,致力于开发实用、内容丰富且易于理解的高质量文档是Steve的主要工作。他在获得计算机科学学位时就意识到了编程和文档结合的重要性,他编写一些Ruby on Rails和Rust的教程和文档被开发者奉为圭臬,其中Rust for Rubyists文档成为了The Rust Programming Language的官方教程。

DevOps时代,Rust将承担更伟大的责任!
▲Steve Klabnik

  Rust的快速普及要归功于文档和教程

  Florian Leibert(FL):我认为文档的价值被远远低估了,其实文档是一个加速器。当你遇到一个问题时,如果官方文档中给出了解决方案,那么一分钟甚至更短的时间内就可以解决这个问题,但是如果没有的话,那么时间就可能延长到几个小时,甚至更长。

  Steve Klabnik(SK):这是显而易见的。我们每年都会做一次Rust用户调查,我们会问很具体的问题,例如“你如何选择生态系统中的包?”我们最希望听到的回答就是通过文档我们可以选择到最合适的包。我认为语言和其他一切都一样,如果你不知道怎么使用某些东西,如果有一个指导文档就再好不过了。

  FL:你从什么时候开始认为Ruby on Rails会脱颖而出?

  SK:其实我对Ruby on Rails的认可并不是源自它首次发布,而是我的老上司。最开始,他使用Java Framework创建了一个新的Web应用程序,大概花费了一个星期的时间来做项目开始前的准备工作。然后,他跑了一遍Rails的教程,大概花了5分钟就完成了之前一个星期的工作,从那一刻开始,他就不回头的走上了Ralis的道路。

  我认为Rails之所有脱颖而出的原因就是使得现状有了明显的改善,有趣的是,这也让我开始觉得Ralis不再是高冷之花。

  积极社区互动驱动的Rust

  FL:第一次和Rust合作的时候,是什么吸引你了?

  SK:其实真正吸引我的是人,我与Rust社区的第一次接触是加入IRC频道,当时,我在做一些关于“Hello,World!”的内容,当时联系到Rust的时候,他们没有说“你只做这个内容吗,是不是有点肤浅”,而是说“你对Rust感兴趣实在是太好啦,我们很乐意回答你的所有问题。”而且,之后他们配合的也很好。

  我学习开源也很多年了,知道社区是开源很重要的一个组成部分,所以特别想尝试在好的社区中工作,而Rust就是一个特别优秀的社区。

  在之前的时间里,我一直在做Rails和更底层的编程。我认为自己在Ruby世界中实现了自己的所有理想,这种新语言对底层任务的支持很好,我认为这是我返回底层的好机会。当然,事实也证明,Rust是一个方便而安全的底层编程方式。

  高效+易于调试=操作简单

  FL:你认为Rust最适合哪种类型的项目?

  SK:当你对runtime有特别的要求时,Rust是非常有用的。例如,你需要加速是,Rust非常低的开销和非常低的内存使用量,在这些用例中是有益的。

  Rust的另一个用途是应用在需要保持100%准确率的代码中。虽然在实际生产中,很多项目是允许有失误的,但是有些程序必须保证100%的正确率,而Rust在强制你写出正确代码方面做得很好。

  当然,没有人会声称自己的Rust程序是完美的,但事实上他们进行调试的时间是非常少的。虽然Rust支持底层编程,但是其涵盖的许多高级特性,让其看起来更像中级语言。我们在Python和JavaScript社区中发现很多人,他们都乐于编写更高性能的Rust代码,也乐于做一些比之前更底层的工作。Rust正在成长为一个中等程度的应用空间。

  沙漠地带——Rust库

  FL:既然Rust有这么多的用途,那么你能告诉我们,你认为最有用的3个Rust库吗?

  SK:这是一个很好的问题,我们在Cargo包上花费了大量的精力。Rust标准库没有太多内容,所以软件包和软件包生态系统对于扩展功能是必不可少的。因此,这里有很多很棒的软件包。

  我最喜欢的软件包就是正则表达式,甚至我还有一个Perl ML纹身。因为我们的Regex规范是非常快的,所以正则表达式是非常有用的工具。

  第二个是CLAP,它是Command-Line Argument Parser的简称。最后一个,我不能说它是最有用的,但它是最有趣的,它是一个名为x86的包,是可以让用户绑定到x86平台的低级处理器功能。

  Runtime-Less Rust Rocks

  FL:你对Spark或TensorFlow之类的东西是否熟悉?

  SK: Y Combinator资助了一家名为Autumn.AI的创业公司,他们本打算利用Rust来建立一个TensorFlow竞争对手。不幸的是,最终倒闭了。当然这并不是因为Rust,而是因为业务。

  我认为在Rust编写的代码没什么特别,但是它有一个优点就可以看成和C一样。由于Rust没有运行时,与其他语言的接口是一个巨大的发展领域。Rust的第一个生产用途实际上是扩展Rails版图。Rust没有runtime,意味着它可以假装成C,如何可以与C打交道的都可以与Rust交流。大家知道TensorFlow绑定,Rust甚至可以和TensorFlow一起工作,进行交互。这是非常令人兴奋和想象空间的地方,但它仍然处于早期阶段。

  Rust在DevOps中的角色

  FL: Rust如何进入系统自动化,容器管理和容器编排?Rust在DevOps中的作用是什么?

  SK:在这些领域也有很多Rust的用武之地,但是每个领域又有些不同。Oracle在Rust开发了一个完整的容器运行时,这是他们第一个使用该语言的开源项目,在Rust中开发容器运行时是非常有趣的一次尝试。还有一个是CoreOS。

  Coursera是一个非常有趣的例子。虽然他们没有在Rust中构建容器,但是他们使用Rust和Docker来为他们的教育平台提供支持。学生编写作业的例子或练习,然后运行Docker容器中的代码并对其进行评分。他们在Docker容器中使用Rust代码来处理权限和其他安全设置。

  Chef有一个叫做Habitat的新项目,其整个部署策略不是通过一个特定类型的集中地方来管理基础设施,而是在你部署应用程序的时候把应用程序打包到基础设施上。这个新项目从头开始就是写在Rust上,这是Rust在DevOps中非常有趣的例子。

  Buoyant 正在为Rust投入大量的资金,不仅在Rust写了一些项目,而且还在Rust开源生态系统上投入巨资。他们刚刚聘用了几个在Rust领域中鼎鼎有名的人才,致力于开发Linkerd的开源软件。他们能够参与到Rust项目中,我非常高兴,这意味着他们将会Rust社区做出更多伟大的贡献。

0
相关文章