2019端午假期正巧赶上NJSD,提供了假期去哪儿的一个不错的选择——去连接外部世界,感受一下最新的技术风潮,事实证明这次的NJSD之旅确实收获了不少。
2019 NJSD 全球软件大会今年NJSD的活动安排为2天,这两天中聚集了来自软件业各方大咖共同探讨“深挖技术价值,夯实软件能力”的主题。端午当天的重头戏是上午的5场技术报告,围绕大数据、5G、IOT和AI展开,极具技术含量与前瞻性。
2019 NJSD主题报告接下来NJSD分成智能软件工程、互联网系统架构、技术团队效能与敏捷开发等多个主题进行深入的交流,这其中《HUATF TestBot——Practice and Tools In AI for Testing》、《Data driven vulnerability analysis and management》以及《盒马REX分布式零售操作系统框架:NBF》三个主题演讲给我的感触最多。
在“HUATF TestBot”中来自华为的万锐媛向与会者介绍了华为近年来在智能化测试领域取得的成果。华为的TestBot团队与世界知名大学合作,通过Test Knowledge Network建设、测试脚本NL Spec研究等方式使得AI能够辅助测试人员快速地进行测试设计与用例编写。同时,借助Test History-Basic pass/fail prediction model、Similarity-Based TestCase Clustering以及Code vs. Test Relation Mining来训练AI系统,从而实现每次变更触发最具价值(最容易发现故障/相关性最强)的测试用例执行帮助产品更快地发现问题。
HUATF框架来自新加坡南洋理工大学的刘扬老师介绍了其团队在安全漏洞扫描与检测领域取得的成果。他的团队提出了一种通过扫描二进制文件发现安全漏洞的方法,当二进制文件命中了存在安全漏洞的开源代码段则认为发现了目标软件潜在的安全漏洞。目前这个团队已经将功能从单纯地扫描安全漏洞扩展到提供安全漏洞修复指导,而这一些都依赖于对这套系统的训练。
漏洞扫描框架刘老师团队将开源软件代码库提交记录进行识别,分析出安全漏洞相关的修复提交,并作为安全漏洞扫描系统的训练样本,这种方法取得了非常好的效果,从其给出的与业务类似系统在准确率和响应速度的对比来看Scantist都处在全面领域地位。
Scantist的数据来源阿里架构师张群辉有关盒马NBF的介绍是我个人认为的本次NJSD中最精彩的部分。他的介绍以盒马遇到的技术挑战引出,由于复杂的供应链体系带来的巨大不确定性,造成以往淘宝的经验在零售业这个领域无法得到复制,以应用为单元的淘系架构不能很好地适应这种业务场景反而出现了失控的情况,因此阿里在盒马上开始将服务化作为解决问题的关键路径发展出了NBF(内部代号“牛逼飞上天”)。
NBF产生的形象比喻 NBF的例子NBF最关键的思想是做服务化,盒马认为一切的应用都是服务的组合可以通过编排实现,进一步服务既是接口,通过服务化实现与具体实现的解耦,从而实现了服务的多态便于不同的实现进行替换,这个理念其实就是大家熟知的SOLID的具体应用。在介绍的过程中,张群辉和大家认真地探讨了什么是依赖倒置,他举了一个很形象的例子——杯子和手,手可以拿不同样式的杯子,也就是说接口是由手定义的而杯子只是实现了一个手的接口,手拿杯子就是一次调用过程,只要这个杯子遵循了手的接口那么就能被手拿起来。盒马也利用这种理念定义了SPI、RPI和SI,并将其根植到实现中——服务与服务之间没有耦合,实现只能调用服务而不能依赖实现,这个还不仅仅是停留在代码编写层面还从服务部署层面进行限制,所有的服务独立部署,一旦出现了实现依赖实现的情况就会导致服务无法启动,这一套组合拳下来保证了NFB服务化的有效落地。
NBF服务技术手段 NBF的落地另外NBF对于多态化的追求要求一切皆可替换。以往我们对于多态化的使用最多的就是业务多态化(我自己参与的几个框架的设计和实现都是如此),尽管我们了解一切都做到多态化的可能性但放到整个大架构背景下这种使用还是较少较小。NBF这里面包含的面更广考虑的层次也更多,不只有业务,还包括了驱动、降级、测试,甚至还规划好了相应的使用方法(张群辉的原话是:比如使用缓存,基于NBF可以写一套代码当你钱少的时候你可以使用memcache,当你有钱你就选择redis,而这个只需要通过配置就可以无需修改代码)。
NBF多态化:一切皆可替换 NBF多态化:三少最后盒马还开发了一套IDA的NBF插件,通过这套插件开发人员可以只关心业务的实现而不需要关注开发过程中其他事情,听到这里我只能大喊一声:awsl!!!这就不是简单的一套架构而是从设计、开发、测试到运维全流程的生态链,令人叹为观止。当我们以为阿里已经到达了顶峰的时候(就是我们准备消化吸收模仿的时候),阿里却已经在向更高的山峰开始攀登(DevOps->NoOps)。
这就是我的2019 NJSD之旅,用一句话刚学到话来总结我的体会就是“学而不思则矛盾,思而不学则极端”,时不时地离开现在的工作转身听听看看外部世界的发展是一件非常超值的事情,外面的世界太精彩!
网友评论