Amazon Lambda

Rubinius 提到它受 Amazon Lambda 影响很大。这个 Lambda 是什么呢?简单地说,它是一个计算平台。

通常一个最简单的 web app 开发和部署流程是这样的:

1,写好代码

2,部署到 web server

3,部署 db server

在这之后,需要监控服务器的压力。web server 需要做水平扩展,db server 需要做 sharding、主备,等等。如果你的服务涉及到多个组件,那么其中任何部分都可能面临性能上的问题,都可能需要扩容。做这些事情是很费劲的,于是很多公司都有专门的运维或系统工程师来负责这些工作。最近 DevOps 这个概念开始兴起,很多 developer 开始自己做这些事(其实 dev 能做这些事的根本原因还是在于虚拟化技术以及随之而来的 PaaS的普及,以及容器技术的兴起,大大减少了创建一个新服务器环境的工作量)。但是,无论如何这仍然是很花时间的。打个比方,如果你有10台 server,你不可能一个个去部署,一般情况下都会用 Chef 或者 Puppet。但是学 Chef 也是要时间成本的,就算对于一个 Ruby 程序员也要花不少时间。

AWS Lambda 是干什么的呢?根据官网的介绍,他让你能够只写代码,然后上传到 Lambda server。AWS 会帮你搞定其他的一切,然后根据你的服务实际使用的计算资源来计费。你不用管理 application server,AWS 会自动按需分配资源。AWS 生态圈里的各种事件,如 db 的更新,S3 bucket 的上传事件,用户在 web 或者 app 中的请求都可以被 Lambda 响应并调用对应的代码。这些事件又可以被创建为 trigger,Lambda 会监控分析这些 trigger 并决定分配多少资源给你的代码。AWS 上的 S3 bucket,DynamoDB 等都是可以动态扩容的,因此如果他能解决计算资源的分配,理论上这个动态分配的确可以覆盖整个运行环境。 Amazon 称之为从 DevOps 到 No-Ops 的转变。

看完这些我的第一反应是它应该对使用的语言有严格限制。果然:All you need to do is supply your code in one of the languages that AWS Lambda supports (currently Node.js, Java, and Python)。但是有限制也还是挺厉害的,想想 GAE 也有4种语言限制,但是 GAE 就不能自动扩展。(好像是不能?我有好几年没看过这货了,自从 GoAgent 越来越不好用以后)

对了,AWS 现在有一个billing free tier,一年内对有限的服务是免费的,有兴趣的可以去申请一个。(需要绑定国内信用卡并扣一刀)

最后,这个 AWS Lambda 让我想到了一些别的。。。。

软件工业发展到现在,核心技术和业务代码似乎分化的越来越严重了。一方面业务代码越来越容易写,各种生产力工具、自动化工具层出不穷,大大提高了开发效率,业务代码的开发者也越来越不需要计算机科学相关的知识,门槛大大降低了;另一方面,底层的架构不断进化,日益复杂,大多数程序员已经很难理解其真正的原理。虽然由于互联网的发展,程序员这个职业的需求量还是很大,但是已经不是每种程序员都能拿到很高的收入,也不是每个程序员都能理解 "what's happening under the hood" 了。 举个例子来说,几十年前的驾驶员基本都会简单的修车,很多时候抛锚在路上自己鼓捣一下就 OK 了,驾校也会花大量时间介绍汽车的基本原理和构造。在那个年代,驾驶员和修理工对汽车的理解程度是差不多的。但是随着科技发展,汽车越来越复杂,驾驶员反而不学这些东西了,因为需要学习的东西越来越多,而真正用到它们的机会越来越少。这和现在的业务代码开发多少有些类似之处。这个趋势究竟是好是坏,我也不敢肯定。但至少从我目前的观察来看,业务程序员和纯技术程序员的收入差距是拉大了。(目前由于人才奇缺导致的前端薪水暴涨算是个例外)

你可能感兴趣的:(Amazon Lambda)