【51CTO.com快译】迄今为止,在计算机编程领域,开发人员所处的抽象级别已经提高了好几倍。我认为计算机编程的抽象级别将会再次提高。
也许,这个世界永远需要会编写和理解汇编的人,但是对绝大多数开发人员来说,在日常工作中,只需学会利用系统调用或者编程语言提供的API就能与操作系统进行交互。这也是他们能操纵的***级别。他们无需关心CPU每天到底处理了哪些指令,甚至无需手动分配内存。
在不久的将来,开发人员习再也不用考虑程序具体运行在哪个物理机器上。
1.用户习惯云
我们正迁移到云。
当然,这已经不是一个新想法。但我花了一段时间才明白“迁移到云”这句话的真正含义。
请原谅我用了这么一个时髦的词——云。因为云是我目前听说过的,关于那些隐藏了硬件相关信息的软件的***描述。
也许从消费者的角度来看,云听起来并不新鲜。因为我们早已习惯从任意设备上访问在互联网上的文件、数据,而不用关心这些数据到底在哪里。
很久以前,人们就不再关心云实际部署在哪里了(德国人也许是个例外:他们认为国外的云服务商不可控。作者是德国人,此处为自嘲)。我们的社交、工作的工具基本上都能“移动”化了。我们拥有的笔记本电脑和手机正在成为大众都能消费的起的商品。它们无需提供太多复杂的功能和高端的硬件,仅仅只需提供了一个可与云交互的窗口,就可以满足日常社交娱乐的需要。虽然在某些情况下,比如玩游戏,硬件要求仍然非常关键,但随着云游戏的出现,高端游戏PC也终将成为过去。
对于用户来说,使用云后他们再也不用去关心硬件带来的问题。这给他们带来了巨大的便利,所以迁移上云也是理所当然。因为人们不关心、也不想知道这些工具是如何工作的,他们只是希望它们简单易用,可以顺利帮助自己完成特定的工作。工具的维护则交给别人去做。
2.开发需要云
2.1.控制是负担
对大多数人来说,控制你的电脑实在是一种负担。
开发人员崇尚技术。我们想要完全控制我们的系统和数据。是吗?我对此表示怀疑。至少对于像我一样的大多数开发者而言,我们也只是创业或者打工的普通人,只要新的方法能够使得开发和管理更有效、收益更大,我们就会采用。
完全控制系统和数据费时费力,因此我们把大部分生产系统放在云上运行。我们从亚马逊、谷歌和微软租用虚拟服务器,将静态资源推送到CDN。我们能想到的、越来越多的功能现在都已作为服务提供,而不需要去管理它们。如数据库、搜索引擎、防火墙、消息队列、文件存储、负载均衡、Web服务器、构建服务器、测试运行器、注册中心、密钥管理、用户身份验证等等。基本上软件的每个通用组件都有一个服务可以取代。
我们自定义的业务逻辑,即如何将各个通用组件连接在一起,才是唯一的,能让我们的软件,变得***的东西。
但是,在我们将业务逻辑表示为软件的过程中所用到的编程语言、运行时工具,仍然需要考虑物理机器。我们努力在物理机器装上Windows和Linux、或者在上面创建虚拟机并安装操作系统,然后在一系列无用的、嵌套的操作系统中执行我们的业务逻辑。
2.2.云平台的意义
如果我们抛开过去,舍弃控制,创建那些更适合表达业务逻辑的高效平台,会怎么样?
如果我们想解决更复杂的问题,我们需要一个坚实的、具有更高抽象层次的基础。更复杂的业务领域要求我们只关注业务逻辑,而不是其他。因此,我们必须把构建抽象基础和处理业务逻辑所在的层次分离开来。
抽象基础是解决复杂问题的成功的关键,因为我们永远都需要优秀人才在此基础上工作。然而大多数开发人员正试图解决或者在将来想要解决的问题却不是它。殊不知,抽象基础才是现在世界上所有问题的根本,在此之上,技术才有潜力帮我们解决其他问题。
因为我们要有效地使用技术,而不是在一些无意义的抽象层上解决复杂问题。是时候承认我们需要新的抽象层了。让我们构建一个可靠、高效的抽象层,让现有的语言、平台和工具做它们各自擅长的事情。
2.3.云平台的特征
相比低级平台,这种表现级别的编程平台有着一些不同的特征:它通常只是连接低级组件的“胶水”,通过原语级别的API来与这些组件进行通信。启动和停止该系统由低级平台处理,这让编程平台可以按需动态加载相应资源。一些性能优先的关键任务是由低级原语处理的。除此之外还有许多属性来定义诸如此类的系统。
2.4.垄断与开放
还记得我之前提到过的舍弃控制吗?你也知道,那些赚取丰厚利润的大型软件公司正在控制这个世界。如果我们不希望所有的权力最终掌握在这些巨头手中,你***学会这么做。因为一个健康的市场需要竞争。我们不应该等待大公司拿出一个平台,把我们束缚在他们的想法和产品上。我们需要创建一个选择众多、想法多样的健康系统。很高兴看到现在有不少大型云提供商的替代品出现,如netlify,fastly,DigitalOcean,在此我向它们表示感谢 !
2.5.规范与工具
与操作系统和编程语言的多样性类似,我们要确保云平台的多样性,并保证它们之间能够相互兼容、共享标准和协议,就像现在被广泛采用的电子邮件和网络技术一样。在这方面,CNCF做出了巨大的努力,制定了cloudevents和openmetrics这样的规范!
除了规范,抽象层要解决的另一个重大问题是开发工具。开发人员往往习惯在自己的系统下测试、监控和调试代码。我认为,在笔记本电脑上创建虚拟机、创建容器、并进行开发,并不是一个好的方法。取而代之的是,我们应该将开发环境移到云上。 这光靠Web接口是远远不够的。更好的方法是,我们有可以利用的实时API,并在此之上来构建产品,帮助开发人员提高生产力。这方面的工作还有许多要做,将IDE迁移到云上只是其中的***步。
3.小结
本文反映了作者对于云计算的深入思考,从开发者的角度辨别了业务逻辑与控制的关系,并给出了心目中云平台的特征,***针对云平台的规范与开发工具提出了自己的畅想。目前来说,AWS的serverless也许已经做得不错,但离作者的蓝图仍然相去甚远,同样垄断也是他不愿看到的。也许不久的将来,软件开发的学习曲线会越来越平坦,开发人员可以集中更多的精力在业务逻辑上,而其他则交给云平台去做。
译者简介,邱仁博,多年运营商商业分析、数据中心数据库方向工作经验,现任职于某地市事业单位信息技术部。日常关注国内外极客新闻、前后端技术。海外知识搬运工。
原文标题:The Cloud Is the New OS - A Developer’s Perspective, 作者:jorin
【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】