空军工程大学学报自然科学版
主办单位:空军工程大学
国际刊号:1009-3516
国内刊号:61-1338/N
学术数据库优秀期刊 《中文科技期刊数据库》来源期刊
       首 页   |   期刊介绍   |   新闻公告   |   征稿要求   |   期刊订阅   |   留言板   |   联系我们   
  本站业务
  在线期刊
      最新录用
      期刊简明目录
      本刊论文精选
      过刊浏览
      论文下载排行
      论文点击排行
      
 

访问统计

访问总数:19207 人次
 
    本刊论文
Thoughtworks技术雷达

  在IT产业的发展过程中,技术始终起着至关重要的作用。因此,无论是IT厂商、服务商或是用户的IT管理者,对于技术都十分关注。他们想第一时间了解,各类IT技术的发展现状和趋势,想清晰地知道有哪些最新的技术可以被企业采用。但IT技术的更新和变化速度之快,使得这些需求很难得到满足。


  为此,我们与ThoughtWorks公司合作,推出了技术雷达这一专题,通过图解的方式,将各种最新技术进行分类,并加以分析,来帮助读者了解目前能够影响市场的新兴技术和趋势。


  ThoughtWorks技术战略委员会由ThoughtWorks内部的资深技术专家组成,他们经常聚在一起讨论全球技术战略和对行业有巨大影响的技术趋势。


  技术雷达总结了这些讨论的结果,将所有项目分为技术、工具、语言和平台四大类。另外,ThoughtWorks通过将每一个项目放入采用、试用、评估、保留四个阶段中,来做相应的推荐。这些阶段分为以下四个方面:


  保留阶段:应当谨慎使用的技术。


  评估阶段:值得探索的技术,以了解其对公司的影响。


  试用阶段:值得应用的技术。公司有必要了解如何使用该技术,并且在风险可控的项目中进行试用。


  应用阶段:强烈建议公司使用的技术。公司应在适当的时候应用于项目上。


  在图解中,新的项目或有新动向的用三角形代表,之前的项目则用圆形代表。每个象限的图展示了各个项目的动向。(见图1)


  技术:


  无论是在ThoughtWorks还是在更广泛的社区,采用微服务(micro-services)的越来越多。


  诸如Dropwizard的框架和声明性配置(declarative provisioning)都表明了技术和工具的成熟。避免通常的大规模整体替换,而是逐个替换系统的各个部分,对系统的总成本有积极的影响。这对中长期尤其是二至五年的重写周期影响最大 。


  打破单一整块的应用模式,而是以微服务来构建系统,需要一个可靠的策略把各个分开的系统整合起来,从而给最终用户提供连贯的体验。在表现层使用Edge Side Includes (ESI)来整合,是一个实用而优雅的解决方案。该方案以诸如Varnish的反向代理的形式存在于你的环境中,或在内容交付网络(Content Delivery Network- CDN)中贴近用户。


  应用程序部署经常由于过量的特定于环境的配置而痛苦,这些配置包括依赖的服务的主机名。在DNS配置中使用诸如“mail”“db”的标准主机名是降低配置复杂度的有价值的技术。该技术有多种实现方式,包括水平分割(split-horizon)的DNS或者配置搜索子域。


  在设计领域模型时,聚合模式有助于结构和模块化。映射到关系型数据库,这种聚合在数据库表中是不可见的。文档型数据库,例如MongoDB,则可以将你的聚合建模成文档。这种1:1的映射意味着,聚合的根应该是从集合中加载的对象。


  采纳持续交付意味着很多团队正在建立一个自动部署管道(automated deployment pipeline),用以把他们的代码一直送到产品环境。管道给其他复杂的构建、部署活动链条提供可视化。此外,针对通往产品环境的每一阶段的构建产物,管道为其提供了可靠的跟踪能力。现在,许多厂商都在建立持续集成(CI)服务器,并以管道做为其首要的功能,而不是仅仅提供可视化模块。


  在敏捷开发已经成为主流的情况下,我们提及这一点可能听起来有些奇怪。但是我们认为团队正重新发现并采纳对半成品的限制。各种方法,例如看板(Kanban),限制了正在进行中的半成品,迫使团队采取更优的工作流程,将瓶颈可视化。诸如Pallet等工具给声明性配置下的环境创建和管理提供了令人信服的方法。通常,它通过以下形式完成:用一种领域特定语言(Domain Specific Language, DSL)声明环境拓扑——实例数、操作系统、网络配置和应用——之后用命令行工具自动化创建整个环境。这种方法的不同之处在于将实例的创建和应用的配置解耦;另一个不同之处在于,对搭建在多个机器上的特定领域应用层服务,这种方法具有声明各个服务之间依赖性的能力。


  我们在迅速走向一个移动设备上的用户交互占主导的世界。“移动优先”拥抱这种变化趋势,以移动设备为第一目标来进行用户界面和服务器交互的设计。对比带着高能力客户端和快速可靠网络的假设,移动优先策略降低用户体验以适应移动设备的限制。


  实现这一目标的一种技术是响应式网页设计(responsive web design)。该技术使页面开始于基本内容展示-通常是保持基本的信息不变,按照检测到的浏览器的功能进行相应的用户体验增强。这通常根据屏幕的大小来改变表单的布局和格式。


  在过去的15年里,机器学习、语义分析、文本挖掘、定量分析和其他先进的分析技术不断成熟。这些方法在预言、预测、识别重复的模式、洞察非结构化的数据方面提供了令人难以置信的潜力。


  从历史上看,我们存储和快速分析大的音频、视频和图像数据的能力受到严重限制。这种限制约束了样本大小,也同样束缚了验证分析模型并将之放入产品的时间。现在,通过使用一些诸如NoSQL,data harvesters,MapReduce框架和无共享(shared-nothing)的商品服务器集群等新技术,我们有了真正有效利用这些技术的必要能力。结合源自传感器、移动设备和社交媒介的全球数据的大量增加,我们看到的是一个蕴藏着巨大商机的领域。


  Web服务器、数据库、网络基础设施和后台系统生成的日志文件是业务运作和行为的重要数据来源。在过去,这些文件大多数被视为失败情况下的诊断信息。但是,以如此低廉的存贮,加上诸如Splunk等可用工具的对数以百万计的事件的索引和检索,日志文件也可以是了解客户的数据源。日志即数据、并存储完整的日志而不是预定义的指标,提供一种方法来解答“一个企业不能达到先前预期”的新奇问题。


  把用户带到一个可控环境下进行正式的测试是一个缓慢而昂贵的提议。更有用的是,定性的反馈可以快速而廉价地从游击式用户测试得到—通过到外面的世界对一般公众的小样本进行测试。另一个替代方案是远程可用性测试,你可以将从设计线框图到最终产品等各种东西发出去给全球各地的人进行测试。Usabila、Loop11和Treejack等都可以提供工具,让你可以要求用户完成特定的任务,并捕捉所有信息,从任务完成时间到用户完成任务过程中的想法和感受。


  开发团队通常会产生测试来指定和验证应用程序的行为,但是这些测试在产品发布后就不再运行了。这是一个被错过的机会。语义监控利用你的测试来持续评估你的应用程序,测试、执行相结合并进行实时监控。采用微服务和相同粒度的架构方法,意味着运行时的交互测试越来越重要。将对用户驱动的合约的验证合并到一个监控设施中来是实现方法的一种。虽然仍在发展中,我们看到这两种独立但重要的验证方案有很大的合并希望。


  验收测试一般从“外部”运行被测系统,为运行整个应用的安全性遍历整个网络堆栈。过程中的验收测试对测试代码和被测应用必须运行在不同的进程中才能获得这些好处的概念作出挑战。当使用嵌入式的容器,不必花费由部署和与另一个容器通信带来的成本,就可以容易地搭建系统,通过HTTP运行测试并验证最终状态。


  下期预告:在下期的技术雷达中,我们将对工具类的技术发展现状和趋势进行分析和介绍,例如Rake for Java and .Net 、Gradle 、Dependency Structure Matrices (DSM)等,敬请关注。


特别说明:本站仅协助已授权的杂志社进行在线杂志订阅,非《空军工程大学学报自然科学版》杂志官网,直投的朋友请联系杂志社。
版权所有 © 2009-2024《空军工程大学学报自然科学版》编辑部  (权威发表网)   苏ICP备20026650号-8