@liuhui0803
2017-05-16T10:49:28.000000Z
字数 1420
阅读 1718
无服务器
摘要:
很多公司曾借助经验相对不多的人,使用Visual Basic开发了大量承担重要工作的系统。而这一做法与今天我们使用无服务器技术开发云应用竟然是如此的相似。VB曾经面临的各种问题,无服务器架构也遇到了类似的情况。那么最终,无服务器架构能否摆脱类似VB的宿命?
正文:
在无服务器架构的帮助下,我们可以借助更少的有经验开发者,实现比以往更多有经验的云开发者更出色的工作成果。这个有趣的观点是Movivo的CTO Paul Johnston在The ServerlessCast #6 – 事件驱动的设计思维中提出的,我也是第一次听到这样的观点。
得出这种结论的思考过程差不多应该是这样:
在事务性系统、框架,以及承担多种任务并且显得笨重的容器等方面,有经验的云开发者很可能采取一种程序化的思维方式(Think procedurally)。
但无服务器开发者不需要这样考虑问题。无服务器开发者的思路需要从小型函数着手,只需要考虑一件事:通过事件将不同函数连接在一起,这一过程中需要领会异步、分布式的思维方式。
因而此时我们实际上根本不需要典型的开发者思维。Paul发现,很多具备系统管理技能的人已经具备这样的能力了。拥有系统管理员背景的人往往能比框架开发者更深入地理解分布式思维,进而更好地构建出完整的事件系统。
Paul还提出了一个观点,认为一旦系统已经构建完成,有经验的开发者很快会感到无聊,因为无服务器架构的系统并不需要那么多的维护工作。
例如,他们已经习惯于雇佣通过在职培训具备两年职业经验的员工,因为这样的员工在框架、服务器,以及其他各种技术的使用方面没有“历史包袱”。没有包袱才能轻装上阵。
那么不妨雇佣更年轻,更有干劲,不具备此类经验的开发者。
很明显,“更年轻,更有干劲”以及“较少的经验”同时也意味着人力成本更低,追求这一点也没什么错。毕竟好的开发者难觅。
类似的情况以前就出现过。很多公司都曾借助经验相对不多的人,使用Visual Basic开发了大量承担重要工作的系统,因为通过VB,我们可以很轻松地开发Windows程序。以往,Windows程序的开发很难,需要耗费大量时间;而今天的云程序开始其实也很难,很浪费时间。但是与VB类似,无服务器技术大幅降低了云程序开发工作对技能的要求。
虽然可以实现目的,但大部分此类VB程序都蕴含着“技术债”的炸弹。随着时间流逝,程序中被加入越来越多的功能,整个程序将变得非常难以理解,难以改动,难以测试,整个设计变得越来越糟糕。渐渐地,变成了一个大泥球(Big Ball of Mud。译注:指缺乏直观架构的软件系统,详见:https://en.wikipedia.org/wiki/Big_ball_of_mud)。
VB使得很多原本麻烦的问题变得更容易解决,例如事件句柄中的业务逻辑,由于不需要分层,可以通过GUI负责编排工作。但这也导致VB程序难以测试。无服务器也存在此类问题。缺乏经验的程序员还会在VB程序中使用大量全局变量,导致不同领域之间缺乏清晰的划分,高耦合低内敛。无服务器同样存在类似问题,由于代码中不存在全局变量,最终只能使用数据库存储所有无服务器函数所需访问的全局变量。
我倒是很想知道无服务器架构最终能否摆脱类似VB那样的宿命。
最初发布于:HackerNews
作者:Todd Hoff,阅读英文原文:Is Serverless The New Visual Basic?