2018 年,关于软件开发的 10 大预测
jopen 7年前
<p style="text-align: center;"><img alt="2018 年,关于软件开发的 10 大预测" src="https://simg.open-open.com/show/fabeeaf9f09bd475daccb6ec7a45fc07.png" /></p> <p>区块链、NLP、AI驱动的工具、机器学习、无服务器计算和devops创新将在2018年改变开发者的生活。</p> <p>开发人员应该对2018年的机遇感到兴奋,产品和工具围绕着诸如区块链、聊天机器人、无服务器功能和机器学习等技术在现实世界的项目中变得足够成熟。与此同时,许多开发人员会担心,在不影响安全性和性能的前提下,他们将无法更快地交付 代码 和功能。但这方面也有好消息。</p> <p>对于开发人员来说,2018年的定义是,在抓住转型新机遇的同时,在应对压力的同时,要做得更多,质量更高。以下是有关这些力量将在未来一年如何发挥作用的10个预测。</p> <h3>1. 利用区块链的B2B交易进入生产阶段</h3> <p>企业已经开始了解从区块链启动的交易中获得的安全性、可靠性和效率。在未来的一年,开发人员将在整个金融服务和制造供应链中实施许多区块链用例。区块链是一种技术,它可以使组织之间的高效、安全、不可变、可信的交易成为可能,而这些交易可能不会完全相互信任,从而消除中介。</p> <p>考虑一家公司从一家离岸制造商订购产品。这些产品通过船运公司发货,通过海关,通过另一家船运公司,最后到达买方。今天,每个步骤的验证和调节主要通过电子邮件和电子表格进行,其中涉及很多人和过程。区块链通过不可撤销的对区块链分类账的更新,消除了手工流及和解,当最少数量的参与者说,“是的,这部分交易发生了。”</p> <p>区块链云服务将带来可伸缩性、弹性、安全性以及与企业系统的预构建集成,使开发人员更容易将重点放在业务用例上,而不是底层的hyperledger fabric实现。</p> <h3>2. 聊天机器人经常与顾客和员工进行真正的对话</h3> <p>人们已经厌倦了需要多个移动应用程序来做同样的工作,就像三种不同的航空公司应用程序一样,通过不同的方式办理登机手续并获得登机牌。一种更好的方法是提供同样的功能,但是通过手机消息上最流行的应用程序。消息传递有三个具有吸引力的元素:即时、表达性和会话性,不需要培训。由于人工智能和自然语言处理技术的进步,人们将会使用非死book Messenger、Slack、微信、WhatsApp或像亚马逊Alexa或谷歌Home这样的语音助手,来问问题,并从智能机器人那里得到答案。</p> <p>开发人员使用新的智能的bot构建云服务,可以快速地制造能够理解客户意图、维护会话状态的机器人,并在与后端系统集成的过程中智能地响应。想象一下你在电影中看到的一件连衣裙的图片,然后把照片传给你最喜欢的服装店的机器人,它使用图像识别和人工智能来推荐相似的服装。员工也可能是机器人的巨大受益者,比如询问他们已经离开了多少个假期,提交了一张帮助办公桌的票,或者订购了一台替换的笔记本电脑,在那里,系统甚至知道员工有哪些笔记本电脑符合资格,并且可以根据他们的订单提供状态更新。考虑到对你自己的员工基础的试验更宽容,开发人员可能会首先利用他们的“造人”能力来建立和测试员工面对的机器人。</p> <h3>3. 按钮消失了:AI变成了app界面</h3> <p>人工智能成为UI,意味着使用应用和服务的同步、请求-响应模型逐渐消失。智能手机仍然是“低智商”,因为你必须去接他们,启动一个应用程序,要求做一些事情,最终得到回应。在新一代智能应用程序中,该应用将通过推送通知启动交互。让我们更进一步,使用人工智能的应用程序、机器人或虚拟个人助手将知道该做什么、何时、何地以及如何做。就这样做。两个例子:</p> <p>费用审批程序会注意你的报销模式,开始自动审批费用报告的99%,只会让你注意到需要你注意的罕见报告。</p> <p>分析应用程序了解底层数据,业务用户提出的问题,以及公司其他用户对相同数据集的问题,并且每一天都提供了一个新的见解,分析人员可能没有想到。当组织收集更多的数据时,人工智能可以帮助我们了解需要问哪些问题的数据。</p> <p>开发人员需要弄清楚哪些数据对他们的业务应用程序非常重要,如何从事务中观察和学习,哪些业务决策将从这种主动的人工智能中获益最多,并开始进行试验。嵌入式人工智能可以预测你需要什么,在合适的时间通过合适的媒体发布信息和功能,包括在你需要它之前,并自动完成你今天手动完成的许多任务。</p> <h3>4. 机器学习采用实际的、特定领域的用途</h3> <p>机器学习正从晦涩的数据科学领域转移到主流应用程序开发领域,这都是因为在流行的平台上可以预先构建模块的可用性,而且在处理大型的历史数据集时,它非常有用。通过机器学习,最有价值的洞察力来自于背景,你以前做过什么,你问过什么问题,别人在做什么,正常的和反常的活动是什么。</p> <p>但是要想有效,机器学习必须在一个领域特定的环境中进行调整和训练,该环境包括它将分析的数据集和它将回答的问题。例如,设计用于识别安全分析师异常用户行为的机器学习应用程序将与设计用于优化工厂机器人操作的机器学习应用程序非常不同,这可能与基于微服务的应用程序的依赖映射的设计非常不同。</p> <p>开发人员需要更加了解领域特定的用例,了解要收集什么数据,应用什么样的机器学习算法,以及要问什么问题。开发人员还需要评估特定领域的SaaS或打包应用程序是否适合给定的项目,因为需要大量的培训数据。</p> <p>使用机器学习,开发人员可以构建智能应用程序来生成建议、预测结果或做出自动化的决策。</p> <h3>5. DevOps走向无操作</h3> <p>我们都同意devops对于帮助开发人员快速构建新的应用程序和特性非常重要,同时保持高质量和性能。devops的问题是开发人员需要花费他们60%的时间在方程的操作一边,从而缩短开发的时间。开发人员必须集成各种持续集成和持续交付(CICD)工具,维护这些集成,并随着新技术的发布不断更新CI / CD工具链。每个人都有CI,但没有太多的人做CD。开发人员会坚持使用云服务来帮助钟摆在2018年回归开发。这将需要更大的自动化。</p> <p>Docker提供了打包、可移植性以及进行敏捷部署的能力。您需要CD作为Docker生命周期的一部分。例如,如果您正在使用容器,一旦您将代码更改提交给Git,那么构建的默认构件应该是具有新版本代码的Docker映像。此外,映像应该被自动推送到Docker注册表中,并将一个容器从映像部署到devtest环境中。在QA测试和部署到生产之后,应该为您处理容器的编排、安全性和扩展。商业领袖正在向开发者施压,要求他们更快地提供新的创新;devops模型必须为开发人员腾出更多的时间使其成为可能。</p> <h3>6. 开源作为一种服务,加速了开源创新的消费</h3> <p>开源模式仍然是创新的最佳引擎之一,但实现和维护创新往往过于复杂。例如:</p> <p>您想要一个流数据/事件管理平台,所以您可以转向Kafka。当您开始在规模上使用Kafka时,您必须设置额外的Kafka节点和负载平衡大型Kafka集群,随着Kafka的新版本的发布更新这些集群,然后将此服务与您的其他环境集成起来。</p> <p>您需要容器编排的Kubernetes。平台应该为您的Kubernetes集群服务,而不是为您的Kubernetes集群处理升级、备份、恢复和补丁。Kubernetes每六个星期航行一次,所以这个平台应该有滚动部署和自我修复。</p> <p>您需要为NoSQL数据库提供Cassandra。您应该希望备份(在计划中是增量的或完整的)、补丁、集群、扩展和高可用的Cassandra集群,由平台来管理。</p> <p>开发人员将越来越多地寻找云服务,以便在处理这些技术的操作和管理方面的同时,从开放源码中提供所有的高速创新。</p> <h3>7. 无服务器计算的架构在生产中会变得很大</h3> <p>无服务器架构的吸引力是显而易见的:当需要基于某个事件执行我的代码时,基础架构被实例化,我的代码被部署和执行,而我只在代码运行的时候被收取费用。假设你想建立一个旅行预订功能来预订/取消航班、酒店和租车。每个操作都可以构建为一个以不同语言编写的无服务器函数,如Java、Ruby、JavaScript和Python。没有应用程序服务器在运行我的代码;相反,只有在需要时,函数才被实例化并在基础结构上执行。</p> <p>对于开发人员来说,将无服务器的函数串在一起执行复杂的事务会带来新的挑战:描述如何将这些函数链接在一起,调试分布式事务,并决定如何在一个函数的链上失败,从而创建补偿事务来取消不适当的更改。寻找云服务和开放源码工具,比如FN项目,通过帮助开发人员轻松地管理服务器功能的编程、组成、调试和生命周期管理,并在笔记本电脑或on - prem服务器或任何云上部署和测试它们,从而繁荣发展。关键是要选择一个提供最大可移植性的无服务器平台。</p> <h3>8. 关于容器的唯一问题是“为什么不呢?”</h3> <p>容器将成为开发/测试工作的默认值,并成为生产应用程序的常见内容。在开源创新和行业标准的驱动下,希望在安全性、可管理性、编制、监控和调试方面持续改进。容器为驱动现代开发的许多趋势提供了构建块,包括微服务体系结构、云本地应用程序、无服务器函数和devops。</p> <p>容器在任何地方都是没有意义的——例如,当您需要一个更规定性的云平台时,例如集成PaaS或移动PaaS,但是这些更高级别的云服务将自己运行在容器上,并且将是证明规则的异常。</p> <p>此外,软件许可模型用于高价值、商业、现场的软件,将不得不接受容器采用的传播。软件的定价模型必须支持“打开”和“关闭”许可,因为容器被实例化、放大和缩小。</p> <h3>9. 软件和系统可以自我修复、自我调节和自我管理</h3> <p>开发人员和生产操作团队正在从日志、web /应用程序/数据库性能监视和用户体验监视和配置中淹没数据。此外,这些不同类型的数据都是竖向的,所以您必须将许多人带入一个房间来调试问题。然后就是知识转移的问题:开发人员花了大量的时间来讲述他们的应用程序的输入和输出、设置的阈值、用于监视事务的服务器拓扑,等等。</p> <p>通过聚合大量的数据到一个存储库(在日志、性能指标、用户体验,和配置,例如),并应用大量的计算能力,机器学习,和专用算法,基于云计算的系统管理服务将大大缓解性能/日志/配置监视。这些云服务将通过观察事务来建立基线,通过观察事务(从必须管理阈值来节省ops团队),并了解与事务自动关联的服务器拓扑。使用针对这些基线的异常检测,系统管理服务将自动能够告诉开发人员,当事情偏离正常的行为时,并能够显示特定事务的问题的根源。</p> <p>开发人员需要考虑如何在编写应用程序时利用这种自动化,以便能够在云中这些智能管理系统之上创建自管理应用程序。</p> <h3>10. 高度自动化的安全性和遵从性努力成为开发人员的新同盟</h3> <p>尽管开发人员通常认为安全性和遵从性是“其他人的工作”或“交付代码的瓶颈”,但基于机器学习和交付的综合安全性和遵从性机制的出现,将有助于使这些努力与快速的开发步调一致。具体地说,高度自动化的网络防御将被部署到“上游”,以识别和纠正开发和“下游”的潜在安全风险,从而自动调整公司的安全配置文件,以适应正在进行的应用程序和环境变化(识别攻击、修复漏洞和评估持续的遵从性)。</p> <p>在某些情况下,这种保护是必要的,持续的合规评估是GDPR和类似任务的标志。开发人员、安全专业人员和最终用户都将受益于在devops生命周期中更加严格的、自动化的安全方法。</p> <p>来自: https://www.oschina.net/news/93846/2018-software-development-prediction</p>