中一群资深技术领导组成的技术顾问委员会创建了该雷达
2021-10-21
由中国高级技术领导小组组成的技术顾问委员会(TAB)创建了该雷达。他们定期会面,讨论对行业产生重大影响的全球技术战略和技术趋势。该雷达以独特的形式记录技术咨询委员会的讨论结果,为从开发人员到 CIO 的各种利益相关者提供价值。这些内容只是一个简短的总结,我们建议您探索这些技术以了解更多细节。
这种雷达本质上是图形化的,将各种技术项目归类为技术、工具、平台、语言和框架。如果一个项目可以出现在多个象限中,我们选择看起来最合适的象限。我们将这些技术进一步分为四个环,以反映我们目前对它们的态度。
本期科技雷达亮点
对话式用户界面和自然语言处理
人机对话——这种新的应用交互方式——与苹果Siri、微软、谷歌Allo等工具一起,如风暴般席卷了整个IT生态。这场风暴随后继续扩展到家用设备,例如亚马逊的 Echo 和谷歌的 Home。虽然构建对话式自然语言用户界面会遇到许多新的挑战,但它带来的好处是显着的。亚马逊 Echo 研发团队故意省略了产品上的屏幕,这迫使团队成员重新思考许多人机交互场景。
这种“对话”趋势不仅限于语音。随着消息传递应用程序已经发展到能够主宰电话和工作场所,我们已经看到了一些在智能聊天机器人的帮助下的多人对话。随着这些平台的不断完善,他们会逐渐学会理解对话的语境和意图,让人机交互更加真实、引人入胜。市场和主流媒体对该领域的兴趣激增,增加了开发者对这种全新的个人“外皮层”()交互模型的兴趣。
智能即服务
最近,一系列我们称之为“智能即服务”(as a)的平台爆发了。这些平台与各种强大的技术领域密切相关,从语音处理到自然语言识别、图像识别和深度学习。
几年前,拥有这些功能需要昂贵的资源,但现在有了开源或基于 SaaS 的解决方案。这也意味着“云计算之战”逐渐从存储和计算能力转向认知能力。
之前和这两个差异化工具的开源,就是这场战争的见证。这个领域的大厂商都有自己的产品,同时一些小众厂商的产品也值得一试。尽管我们对这些服务的道德和隐私影响有所保留,但我们相信这些强大工具的创新使用将带来巨大的前景。我们的客户已经开始从新的角度研究如何在他们的业务中将人工智能和商品的认知能力结合起来。
开发者体验成为差异化竞争新优势
多年来,用户体验设计一直是科技产品公司持续关注的关键差异化竞争优势。而现在面向开发者的工具和产品的迅速崛起,加上工程人才的稀缺,也迫使这些公司也开始关注开发者的体验。
越来越多的组织基于减少的“工程摩擦”( )来评估云产品,将API视为产品来打磨它们,并专注于工程生产力以提高团队效率。现在,我们一直痴迷于高效的工程实践,以及那些能让开发人员轻松工作的工具和平台。我们很高兴看到业界开始采用这些想法。
这些关键技术包括:使用内部基础设施作为产品,使其具有足够的吸引力与外部产品竞争;专注于自助服务系统;了解正在开发的 API 的“开发人员工效学” () ;封装遗留系统;并投资于开发者的“持续用户同理心研究”(user)。
平台的兴起
技术雷达的主题来自审查过程中的观察和交流。在技术雷达的上次编辑期间,我们注意到进入平台象限的新条目数量。我们认为这表明该平台在软件开发生态系统中具有更广阔的前景。
那些备受瞩目的硅谷公司向我们展示了构建合理的平台如何带来显着的收益。他们成功的部分原因来自于找到合适的套餐和能力水平。从技术雷达强调的高级功能(如自然语言处理)到基础设施平台(如亚马逊),越来越多的“平台思维”出现在整个技术生态系统中。
当一些选定的功能要通过产品化的 API 提供时,公司开始考虑平台方法。开发团队在整合和提升开发者体验上有更多的想法。行业似乎终于走上了一条“打包、方便、实用”合理组合的道路。
我们喜欢这样定义平台:平台应该提供自助服务的API,并且在团队环境中易于配置和创建——这很好地呼应了新兴的“开发者体验”主题。我们预计该平台的定义和功能将在不久的将来进一步完善。
盛行
这种语言总是不断出现在有趣的地方。作为一种易于使用的通用编程语言编程语言研究框架,它在数学和科学编程领域有着坚实的基础。这使得它始终被草根学术研究界所采用。近期,围绕人工智能商业化应用的行业趋势及其成熟度,为社区注入了新的活力。
本卷中的雷达重点介绍了一些可以促进人工智能生态系统发展的库,包括机器学习领域,智能数据流图的使用,以及通过自然语言处理进行对话识别的应用程序接口。我们越来越多地看到组织中科学家和工程师之间的距离正在缩小,他们过去对喜欢的工具的偏见正在减弱。
微服务和容器等架构简化了生产环境中的执行。工程师现在可以通过与语言和技术无关的 API 来部署和集成科学家专门创建的代码。与目前将特定语言(如 R 语言)翻译成生产环境的做法相比,这种流动性是在研究人员和工程师之间建立一致生态系统的重要一步。
一、技术
将 API 视为产品
企业已经完全接受通过 API 向内外部开发人员公开业务能力。API 承诺能够通过重组核心功能来快速测试业务想法。但是API和普通的企业集成服务有什么区别呢?区别之一是将 API 视为产品 (),即使 API 消费者是企业的内部系统或开发人员。构建 API 的团队应该了解客户的需求,并使产品始终满足这些需求。可用性测试()和用户体验研究有助于理解 API 使用模式,并将产品思维带入 API,从而获得更好的 API 设计。API应该有一个负责的,负责关注用户并持续改进。根据我们的经验,
将秘密信息的管理与代码解耦
在之前的技术雷达中,我们提到过git-and等工具可以帮助我们保证源代码内部秘密信息的安全。将机密信息的管理与代码解耦是我们提醒技术人员还有其他选项可以存储机密信息的另一种方式。例如,持续集成服务器和配置管理工具都提供了与应用程序代码分离的秘密信息存储机制。这两种方法都是可行的,我们建议您在项目中至少使用一种。
构建 API 的团队应该了解客户的需求,并使产品始终满足这些需求。可用性测试()和用户体验研究有助于理解 API 使用模式,并将产品思维带入 API,从而获得更好的 API 设计。—
封装遗留系统
处理遗留代码,尤其是大型单体应用程序,是最糟糕的开发体验之一。尽管我们警告不要扩展和积极维护遗留的单体应用程序,但它们在各种环境中仍然是依赖项。开发人员往往低估了这些依赖开发所需的成本和时间。为了减少摩擦,开发人员使用虚拟机镜像或容器来创建遗留系统及其配置的镜像。其目的是封装遗留系统,并允许开发人员在本地运行。这消除了遗留系统重建、重新配置和共享环境的需要。
在理想情况下,团队通过管道生成遗留系统的相应图像。开发人员可以以更可靠的方式在他们自己的沙箱环境中编排和运行这些遗留系统。这种方式虽然可以减少每个开发者花费的总时间,但是当有下游依赖的团队不愿意创建遗留系统镜像供其他人使用时,这种方式的效果就会非常有限。
渐进式网络应用程序
渐进式 Web 应用程序 (PWA) 的增长是将用户带回 Web 以应对“移动应用程序疲劳”的最新尝试。它于 2015 年首次提出。 PWA 是一种 Web 应用程序,它利用最新技术的优势将最好的 Web 和原生移动应用程序结合起来。它使用了一系列开放标准技术,例如缓存和推送 API。我们可以使用这些技术为原生应用程序创建独立于平台的移动应用程序和用户体验。这平衡了网络应用和原生应用的优缺点,帮助移动应用开发者打破应用商店的限制来触达用户。您可以将 PWA 视为具有本机应用程序功能和外观的网站。
无服务器架构
无服务器架构用短暂的计算能力取代了长时间运行的虚拟机。这种算力会根据服务请求存在,服务完成后立即消失。我们的团队非常喜欢无服务架构方法。这种方法效果很好,我们认为它是一种有效的架构选择。值得注意的是,这种方法不是“要么全部使用,要么不使用”的方法。我们的一些团队已经使用无服务器架构来部署新的系统模块,而其他模块仍然使用传统架构。尽管几乎是无服务器的同义词,但其他云计算服务提供商也提供类似的产品。例如,我们还建议评估一些小众玩家。
会话感知 API
语音服务、Siri 等技术大大降低了基于语音的软件交互的门槛。但是,在许多现有 API 之上构建更多对话输入(语音或文本)仍然很困难。— API
语音服务、Siri 等技术大大降低了基于语音的软件交互的门槛。但是,在许多现有 API 之上构建更多对话输入(语音或文本)仍然很困难。尤其是涉及有状态交互场景,后续交互需要知道整个对话上下文。在这种互动方式中,如果我们要问从曼彻斯特到格拉斯哥的火车,可以直接问“第一班火车什么时候开?” 无需再次提供对话的上下文。
通常这个上下文会出现在我们发送回浏览器的初始响应中。但是在语音接口的情况下,我们需要在其他地方处理这个上下文。会话感知 API 是前端服务模型的一个示例,其中后端是语音聊天平台。这种类型的API可以通过在代表语音前端调用底层服务时管理会话的状态来处理这种交互模式的细节。
游戏领域之外的VR应用
虚拟现实的想法已经存在了 50 多年。随着计算技术的不断进步,许多想法被炒作和探索。我们相信这个领域已经达到了一个临界点。去年,市场上已经发布了价格实惠、面向消费者的 VR 耳机,再加上现代显卡,可以为这些设备提供足够的性能来创造身临其境的体验。虽然这些头戴式设备目前主要面向电子游戏爱好者,但我们相信它们在游戏领域之外的VR应用中仍有很多可能性。但是,没有制作视频游戏经验的团队不应低估创建良好 3D 模型和纹理所需的时间和技能。
二、平台
安全模块
“最小特权原则”鼓励我们限制软件只访问它们需要的资源。但是,在正常情况下,进程可以执行运行它的用户可以执行的任何操作,包括绑定端口和执行脚本。 (LSM) 框架允许将安全性扩展到内核,例如使用该模块来实现 MAC。并且是最著名的 LSM 兼容实现,它们与内核一起发布。我们建议团队学习使用这些安全框架(这就是我们采用它们的原因),它可以帮助团队评估谁可以访问共享主机上的哪些资源(包括服务)。这种保守的访问管理方法将帮助团队在其 SDLC 过程中建立更好的安全性。
应用程序接口
允许开发者向互联网用户公开 API 服务。它提供API网关的常用功能:流量管理、监控、认证和授权。我们的团队对它和作为无服务器架构一部分的集成给予了非常积极的评价。另一方面,我们在将其用作运行在 HTTP/端点之前的 EC2 上的更通用的前端网关时遇到了更多挑战。阻碍我们的是VPC缺乏交互性和网关难以建立客户端证书验证。基于这种混合经验,我们建议团队结合使用 AWS API。但是在更一般的配置中使用它时评估它的适用性。
随着单体应用程序被更复杂的(微)服务生态系统所取代,跨多个服务的请求跟踪正在成为常态。幸运的是,它正迅速成为分布式追踪的事实标准。它由 Uber、、Yelp 和其他各种主要制造商开发,它支持多种分布式跟踪系统,例如和。该标准目前提供了六种供应商中立的语言实现:Go、Java、-C 和 C++。
它是一个基于构建的平台。它抽象了底层基础设施,适用于容器化和非运行的应用程序。这对于更“适度的部署”()来说可能是多余的,但我们开始看到它在商业和开源版本中的成功。我们特别喜欢它在不同云计算供应商和专用硬件之间的可移植性,因此您可以摆脱对单个容器编排框架的依赖。虽然升级可能比我们想要的要复杂一些,但整个技术堆栈正在变得更加稳定。
由于硬件要求和构建虚拟世界复杂性的高门槛,去年除了虚拟现实(VR)之外,替代现实(AR)和混合现实(MR)也进入了主流。Poké 的流行证明,普通的智能手机足以创造引人注目的 AR/MR 体验。它是一种新型的手机硬件传感器技术,进一步增强了在手机上实现AR/MR的可能性。它允许应用程序获取用户周围的详细 3D 测量数据,以便在相机输入流中放置和呈现更具说服力的虚拟对象。第一部使用技术的手机现已上市。
语音平台
和Home等语音平台目前正处于技术成熟度曲线()的炒作风口浪尖,甚至有人预测,未来语音对话界面将无处不在。我们已经有了将对话式 UI 集成到产品中的经验,也看到了这种新的交互方式对界面设计的影响。他们从头开始设计,放弃了屏幕,将对话式用户界面视为一等公民。但现在相信这样的炒作还为时过早,我们期待更多的大厂商进入这个领域。
网络虚拟现实
这是一组允许您通过浏览器访问 VR 设备的实验。它得到了技术社区的支持,并且有官方版本和每日构建版本。如果你想在浏览器中构建 VR 体验,这将是一个好的开始。该技术以及.js、A-、.js、Awe.js等相关辅助工具可以为浏览器带来AR体验。除了互联网理事会标准,该领域的各种工具也将有助于推动AR和VR的更广泛应用。
三、工具
快车道
Web 应用程序开发人员很容易简化和自动化各种应用程序的工作流程。他们可以从各种成熟的解决方案中选择最合适的解决方案来自动化发布过程。但是,在开发移动应用程序时,我们需要处理两种不同的操作系统和两种完全不同的构建、测试、分发、生成屏幕截图、签名和发布应用程序的方式。为了解决这个痛点,我们的团队采用了一种工具来自动化iOS和应用程序的发布过程。通过一些简单的配置和多个发布管道,他们实现了移动开发的持续交付。
空气流动
它是一种用于通过编程创建、调度和监控数据管道的工具。通过以代码的形式表达有向无环图(DAG),倡导可维护、可版本化、可测试的数据管道。我们在项目中使用这个配置来创建动态管道,使数据工作流更加高效和清晰。您可以轻松定义自己的操作符和执行程序来扩展库以适应您环境的抽象级别。
蛋糕和假货
它自 2005 年推出以来一直是 .NET 生态系统中的主要构建系统。但是,它遇到了许多我们在上一节中提到的相同问题。. NET 社区已经开始开发替代方案,它更易于维护和更灵活,并且可以随着项目的发展而更自然地发展。CAKE 和 FAKE 是两种选择。Cake 使用 C# 中的内置 DSL,而 Fake 使用 F#。这两个项目在过去一年都取得了显着的增长,足以证明这一点。它们是在 .NET 项目中编排常见构建任务的可行替代方案。
工作
非常流行的 SS WORK 为具有无服务器架构的应用程序提供项目脚手架和部署工具。它的大部分使用场景都是基于和相关的AWS产品。work 提供 Java 和 C# 语言的项目模板,并有一个活跃的社区来贡献扩展插件。此外,它还为孵化器项目提供支持作为替代方案。
旨在帮助开发和测试的角色。通过构建用于在虚拟机或容器上运行测试的脚手架,我们不再需要手动创建这些测试环境。使用和管理虚拟机或容器,并支持或 Goss 运行测试。默认的步骤包括:虚拟机管理、语法静态检查、幂等测试和收敛测试。虽然这是一个相当年轻的项目,但我们看到了它所蕴含的巨大潜力。
旗帜下的开源。它是微服务的持续交付平台。与其他 CI/CD 平台相比,集群管理和烘焙镜像部署实现为一流的功能。它支持多个云平台(例如AWS和)的开箱即用部署和集群管理功能。可以集成到其中以执行构建任务。我们喜欢在云中部署微服务的异想天开的方法,但它的管道只能通过用户界面创建,而不能通过代码创建。
纱
YARN 是一种新的包管理工具,可以替代现有的 npm 客户端机制,并且兼容 npm 注册表。如果使用npm客户端,在依赖库的不同安装顺序下会得到不同的树状结构。这种不确定的特性可能会导致“在我的机器上工作”问题。通过将安装步骤分解为解析、获取和链接,Yarn 使用确定性算法避免了这些问题,从而保证了重复安装的一致性。因为它缓存下载的包,我们还看到在持续集成 (CI) 环境中构建速度明显更快。
四、语言和框架
引入了许多与 .x 不兼容的有用功能。它还删除了 .x 中的许多向后兼容性功能,这使得它更易于学习和使用,并且与语言的其他部分更加一致。根据我们在机器学习和 Web 应用程序开发等领域的经验,语言本身和大多数支持库都足够成熟,可以采用。我们可以 fork 一个现有的库并修补它的小问题,或者避免使用已被放弃的不兼容的 .x 库。如果您将其用于开发,我们强烈建议您使用它。
分布式系统通常使用多线程、基于事件的通信和非阻塞 I/O 来提高整体系统效率。这些编程技术带来了诸如低级线程、同步、线程安全、并发数据结构和非阻塞 I/O 等挑战。开源库优雅地解决了这些问题,提供了所需的应用程序管道,并在异步事件流之上扩展了观察者模式。它还拥有活跃的开发者社区,支持越来越多的编程语言。最近,它被支持。还实现了绑定移动和桌面平台的功能。
AVRO
AVRO 是一个数据序列化框架。它通过将其与消息内容存储在一起来鼓励进化。生产者可以编辑字段名称、添加新字段或删除现有字段,而 Avro 确保客户端可以继续使用消息。允许在没有额外开销的情况下写入每个数据,从而实现紧凑的数据编码和更快的数据处理。尽管生产者和消费者之间非结构化消息的交换可以非常灵活,但我们已经看到团队遇到了在部署期间无法在队列中处理的不兼容消息的问题。我们已经在许多项目中使用了 Avro,建议仅在发送非结构化消息时使用它。
Vue.js
在不断变化的前端框架世界中,VUE.JS 作为轻量级替代品占据了一席之地。这是一个非常灵活且没有预设的库。它围绕模块化、组件和响应式数据流的概念展开,并提供了一组用于构建交互式 Web 界面的工具。它的学习门槛很低,对于初级开发者和新手来说非常有趣。Vue.js 本身并不是一个庞大而全面的框架。它只关注视图层,因此可以很容易地与其他库或现有项目集成。
是一个深度学习的开源库,由伯克利视觉与学习中心开发。它主要关注用于计算机视觉应用的卷积网络。对于计算机视觉相关的任务编程语言研究框架,它是一个可靠且流行的选择,您可以下载许多用户创建的开箱即用的成功模型。与基于 API 的相同。它们之间的区别在于模型和组件是直接在代码中创建的对象,而模型是通过配置文件来描述的。这两种方法各有优缺点,可以相互转换。
它是一个基于Node.js的框架,拥有丰富的插件生态,可以操作基于抽象语法树的CSS文件。经常被误认为是一个预处理器(比如SaaS或者Less),但是我们发现它的强大来自于它丰富多样的插件所提供的功能,包括语法检查插件、交叉编译插件),命名适配避免冲突(插件)、模板CSS代码生成(插件)、文件压缩等。 虽然插件的成熟度各不相同,但它本身仍然是一个简单而强大的前端开发框架,它可以像处理完整的前端开发语言一样处理 CSS。