【.com速递】迄今为止,开发者操作的抽象级别在计算机编程中已经提高了数倍。我认为计算机编程的抽象级别将再次提高。或许,这个世界永远需要会编写和理解汇编的人,但对于绝大多数开发人员来说,在日常工作中,他们只需要学习使用系统调用或编程语言提供的API来与操作系统进行交互即可。系统。这也是他们所能操纵的最高境界。他们不需要关心CPU每天处理哪些指令,甚至不需要手动分配内存。在不久的将来,开发者将不再需要考虑程序运行在哪台物理机器上。1、用户习惯了云我们正在向云迁移。当然,这不是一个新想法。但我花了一段时间才明白“迁移到云端”这个词的真正含义。原谅我用了这么时髦的词——云。因为云是我迄今为止听到的关于隐藏硬件信息的软件的最好描述。也许从消费者的角度来看,云听起来并不新鲜。因为我们早已习惯于从任何设备访问Internet上的文件和数据,而不管数据位于何处。很久以前,人们不再关心云实际部署在哪里(也许德国人是个例外:他们认为国外的云服务提供商是他们无法控制的。作者是德国人,我在这里自嘲)。我们的社交和工作工具基本上可以“移动”。我们拥有的笔记本电脑和手机正在成为大众买得起的商品。他们不需要提供太多复杂的功能和高端的硬件,只需要提供一个可以与云端交互的窗口就可以满足日常社交娱乐的需求。虽然在某些情况下,例如游戏,硬件要求仍然很关键,但随着云游戏的出现,高端游戏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,我们可以利用这些API并在此基础上构建产品,以帮助开发人员提高工作效率。这方面还有很多工作要做,将IDE迁移到云端只是第一步。3.小结本文体现了作者对云计算的深入思考,从开发者的角度区分了业务逻辑与控制的关系,给出了心目中的云平台的特点,最后规定了云计算的规范和开发工具云平台提出自己的想象。目前AWS的serverless或许已经做得不错了,但离作者的蓝图还有很大距离,垄断也是他不愿看到的。或许在不久的将来,软件开发的学习曲线会变得更平坦,开发者可以更专注于业务逻辑,而剩下的交给云平台。译者简介邱仁波,多年运营商和数据中心数据库业务分析经验。目前在某市某事业单位信息技术部工作。每日关注国内外极客新闻,前后端技术。海外知识搬运工。原标题:TheCloudIstheNewOS-ADeveloper'sPerspective,作者:jorin
