转载

【SDCC 2015现场】ThoughtWorks首席咨询师王健:技术趋势分析报告

【CSDN现场报道】2015年11月19-21日,由CSDN重磅打造的“ 2015 中国软件开发者大会 ”(以下简称SDCC 2015)在北京朗丽兹西山花园酒店隆重召开。今年是第七届,大会为期三天,除了阵容强大的全体大会外,主办方还精心筹备了九大技术专场论坛,包括:架构实践论坛、前端开发论坛、数据库实战论坛、研发管理论坛、安全技术论坛、算法实战论坛、编程语言论坛、产品与设计论坛、微信开发论坛。此外,还有五场特色活动及展览展示。

2015中国软件开发者大会首日的全体大会上,来自ThoughtWorks首席咨询师王健带来了题为《技术雷达:技术趋势分析报告》的分享。王健首先介绍了技术雷达的背景、作用、内容、语言、平台、工具等,主要是为了识别即将到来的技术;他也分享了几个最新的技术动态:Docker引爆容器生态系统、微服务及相关工具受到追捧、JavaScript工具正在趋于平稳、安全是每一个人的问题。

【SDCC 2015现场】ThoughtWorks首席咨询师王健:技术趋势分析报告

ThoughtWorks首席咨询师 王健

以下为现场速记整理:

大家好,我叫王健,来自于ThoughtWorks 。今天大家都是来自各个公司,包括一些比较大型的组织,然后我们每一个人其实对于新的技术、新的技术趋势都有自己的一个学习和跟踪的方式。那么怎么样来去跟踪我们现在的这一种最新的技术的趋势呢?从我们自己的角度来讲,我们ThoughtWorks就通过技术雷达的方式来做的,雷达本身是一种领域,在军事的领域,雷达就来帮助我们来识别一些马上要到达的危险和技术的冲击,我们同时可以通过雷达来做进攻和防守,从进攻的角度来讲我们可以运用这些新技术来抢占有业务和市场。雷达主要的作用就是识别马上要到来的技术趋势。用一句话来概括技术雷达,是我们对改变未来技术的思考。

技术雷达大家可以看到,首先有很多的内容,首先我们技术雷达分为了4个项目线,包括技术、平台、工具、语言。这4个项目线就是把我们认为有意思的技术和加工,相关的东西来进行了划分,对于某一个上限,其实我们可以看到有很多的项目在右边,如果是这一次新进来的话,我们会加一个标签。同时我们的技术雷达会有4个环,这4个环分别代表了技术所处的4个阶段:评估、采用、暂缓,实验等,所以大家要结合自己所在的位置来看,这4个在雷达上描述得非常的清楚,我给大家一个解释,什么是暂缓呢?一个项目在暂缓中,我们认为如果说你新启了一个项目的话,大家要谨慎的来使用。评估是我们花时间去研究,并且根据新的趋势来做。实验,实验代表什么呢?我们很多新的技术,往往我们在一开始看到的是它的优点,或者说它的好的方面,知道我们真正的使用了这些技术之后我们才能够体会到,他有什么不足,我们认为只有你真正的了解了一个工具或者说了解了一个软件的优点和缺点之后,我们才能够在我们的项目之中来实施这一项技术。所以我们认为实验这个技术是我们必须要在自己的项目之中实践过的,并且我们推荐给大家,我们意识到他有什么优点和缺点,我们认为大家可以尝试。采用是什么意思呢?我们内部有一个梅森的剃刀原则。如果说你新起了一个项目,你不用这一个技术,我们大家就会嘲笑你。所以大家就可以用这一个标准来衡量自己的技术。这个技术的雷达是怎么样产生的?这不是我们一个人和一个小的团队来生成的,是我们公司所有的人都可以参与,来贡献自己的观点和自己在项目之中使用到的内容,我们会在全球的办公室成立技术委员会,由20个人组成,这20个人可以通过面会面的会议来产生这个雷达。

上面我们简单的介绍了技术雷达,这是帮助大家在看的时候,知道怎么样看雷达。我们今天要看的是技术趋势,我们要看的是在新的技术雷达,有哪些热点和动态是我们需要关注和有意思的,最新的技术雷达里,其实我们举了4个趋势:Docker引爆容器生态系统、微服务及相关工具受到追捧、JavaScript工具正在趋于平稳、安全是每一个人的问题。

Docker引爆容器生态系统

Docker,现在非常的火,我一开始调环境的时候就提到过,包括我们去外面的展位有很多Docker 的创新的公司和基于Docker 的工具在产生,Docker 是一个基于应用的引擎,他的发展离不开容器的越来越流行,大家对容器都有所了解,那么它最主要的特点,特点非常的简单,一是快,启动非常的快。比如说我们启动一个容器,就是秒级别的,还有就是它的资源的占用比较的少,我们可以在一台普通的PC上可以启动成千上百的Docker ,而且它的性能的消耗是非常小的,基于Docker 和容器的应用我们看有很多的方面,包括我们用它来保证我们的开发环境和其他环境的一致性,包括用它来做持续性的集成和交互,可以作为我们的虚拟化的替代工具。包括我们可以用他来做平台。这些应用我们都认为是非常具有创新的内容,而且非常的重要。但是我们还是认为这些应用不足以说Docker 如此火爆的原因。从这里来看,我们发现,我们来看一下container是什么东西?大家查一下,这个英语的翻译是集装箱,集装箱有一本书叫做集装箱改变世界,集装箱只是一个大铁盒子,但是对于传统的运输,把一个物品从一个地点交互到另外一个地点,它是产生了非常大的发展,现在经济的发展是离不开集装箱的,这样的改变大家都可以体会到,我们认为Docker 想要做的事情,是不是想要把这样的改变带我们的软件开发和交互里边呢?我们认为是可以做到的。我们之前说过,我今天这个分享,我的电脑就是运行的环境,分辨率的配置这有可能就是它的配置,我的东西可以在我这里工作,但是不能够在别的地方工作,这就是因为我们只关注了我们的代码本身,所以这就是我今天为什么搬电脑上来的原因,我就把电脑当成了一个容器,但是没有想到也是出问题了我想到我们软件的部署的方式无论是部署一个静态的网站还是部署一个数据库还是后台的服务,我们现在把服务部署到不同的环境,在开发机是一个环境,在QA是一套环境,现在每一个产品部署到每一个环境是需要一套流程和工具的,大家想我们的那个图,就是我们传统的一堆的物品运输到另外的一个地方我们认为是一样的。容器和Docker 的出现能不能给我们带来转变,以后我们出的包而是一个容器,容器里包含了代码的产出又包括了相关的环境和配置,这样的话我们的运输就会非常的简单,包括我们的部署也会变得非常的简单,持续的交互变得非常的流行,那它是不是可以让持续交互变得非常的容易实现。为什么可以达到这样的目的呢?集装箱给我们的Docker 带来了两个特别大的优点,第一隔离,我们可以将不同的东西隔离,另外一个最重要的东西就是标准化,将我们部署的流程标准化,大家可以想一下有了Docker 之后我们产出就是用的Docker 。那后面的都是一致性的。

所以我们认为Docker 这一个技术可能会在未来的一段时间内会改变我们开发和测试、部署、交互整个的,环节,所以给予它产生的大量的工具和生态系统,所以我们的生态趋势,生态系统是爆发的,我们来看一下有哪些生态工具是在支持刀客,这当中包括大数据和开发工具,等等,在技术雷达里,我们看一下这一的技术雷达包括了哪些和容器相关的内容。

微服务及相关工具受到追捧

经常我们和Docker 一起来听的就是微服务,大家如果看到很多的关于Docker 和关于容器的介绍都会提到一种服务的架构就是微服务,我在准备资料的时候,我在网上查了一下微服务,第一篇全部都是微信服务,所以大家可以想到基于微信的服务也是非常火的一个点,我们应该明天和后天也会有基于微信开发的专场,如果大家有兴趣可以去参加那些主题。我们今天讲的是微服务架构,微服务架构是什么呢?大家知道它有4个主要的特点,将单一的应用程序划分成一组小的服务,传统是一个单体服务的架构,FaceBook 还是这样的单体服务的架构。其实这个也不是什么新鲜的知识了,我在看过其他的公司做的技术的分享,包括大的互联网的公司,其实他们的架构,到后阶段的演进都会基于业务来做服务的拆分。在几年前SOA面向服务的架构就已经得到了我们的认可,并且已经大规模的实现。那我们为什么把它又拿出来定义一个新的微服务呢?包括我们所说的SOA都是有一个差别,这样有什么好处呢?我们就可以为每一个服务进行独立的部署,一会儿我们会讲到,这是一个小小的变化,这个和我们云的架构是非常吻合的,服务之间是采用了轻量级的服务,如果说我们采用SOA的架构,服务之间是通过ESP和总线来进行沟通,但是在微服务的架构里,应该要采用轻量级的服务。

这是一个单体应用和微服务架构的对比,左边是传统的单体,我们叫做单体的应用,他们将我们所有的业务模块都放到一个独立的架构之中,一大块,不可分割的,这样有什么问题?最简单的就是我的系统之中发生了任何的一个小的变化,我们就要部署一个应用和重新的构建一个应用,如果说我们的系统需要弹性的拓展,我就必须要以应用作为单位来进行扩展,每一个小的业务单位我们要把它变成一个独立的服务,跑在独立的进程之中,这样的好处就是说,如果说我们的系统进行横向的扩展我们只需要按需扩展服务就可以了,比如说我现在的订单系统压力很大,我要快速的启动100个订单的服务就可以了,我不需要去做其他的用户的模块,而且我任何一点的变化都不会有影响,只要单独的部署就可以,所以你发现这是一个有弹性的部署的架构。我们认为微服务的架构有什么好处?每一个服务都特别的小,而且每一个服务的架构之间是异构的,原来是单体的应用只有一个应用,只有一个数据的存储的方案,但是我们对于用户的管理,对于支付和对于我们其他的模块,包括我们的订单系统,有可能他们对于后台的存储,包括他们对于性能的要求都是不一样的,那我们可不可以采用微服务架构的话,将每一个服务自己的架构和其他的架构进行区分,我们采用最好的、最合适的技术来处理最恰当的业务的功能,我们认为这也是微服务的架构带来的好处。

我们提到了我们经常会拿容器和微服务的架构一起来讨论,为什么?因为大家可以想象,假如我们可以理解容器的快速启动、快速的构建,我们可以在一台机器上部署大量的基于容器的虚拟话的方案,这给我们的微服务的架构提供了非常好的基础设施,可以设想一个场景,比如说双11,这个时候我们在交易高峰的时候我们需要大量的服务,这个时候我们有一个自动的平台,比如说现在基于当前的容器,我们需要动态的,不需要人工交易的,横向的扩展出成百上千的服务,过了这个周期之后我们可以快速的撤销掉,这样的一个弹性的架构是我们基于云计算和整个架构来做的。所以微服务架构也是非常重要的在当前非常热的热点。

我们的技术雷达和微服务架构相关的有哪些内容?首先第一点非常有意思,大家知道我们刚才讲过,最外边的需求是大家都非常的谨慎,里面有一项就是微服务的,你可以叫做羡慕嫉妒。我们可以看到这一家公司已经走上了微服务的架构,我们是不是要在一开始产品的设计阶段就要把它引入出来,我认为这个你是需要仔细的来考虑的,右边的这个图,考虑得非常的清楚,蓝色的线是微服务,卢瑟的线是单体的应用,横轴是项目复杂度和系统的复杂度,纵向是我们的生产力,什么意思?当我们的系统还没有足够的达到一个复杂的阶段,还没有到一个程度的情况下,过早的引用微服务的架构,是会让我们的生产力下降的。它只是在单体的应用下面,只有我们的应用变复杂之后、业务变复杂之后,微架构的为例才能够慢慢的体现,在某一点之后才会超过我们的单体的应用,我们知道我们系统的复杂,我的都知道好的架构是演进进来的,我们去听成功公司的架构分享,他并不会说一开始就会说我们的架构就是这样的,所以大家不要特别的迷恋特别成功的公司的架构,那是基于他们的架构演练出来的,那我们推荐什么样的方式呢?就像是代码的重构一样,我们一开始就采取单体的应用,随着我们业务的发展,我们发现业务拓展跟不上系统时,样的抽离是非常准确的,我们刚才提到了对于微服务的架构,我们在讲4个环的时候讲到,我们就要去做抽离,这我们一开始看到的就是优点,我们真正使用的时候,才会发现问题。如果大家尝试过服务的架构的话,就会发现,开发的环境就很难配置,我现在要保证10个服务在本地运行,这本身是一个非常困难的问题,包括我们的服务之中怎么样来沟通?我们可以通过协议。但是做过API的就知道,我怎么样保证我的API的变化不影响到别人,我们发现那边的服务发生了变化,那边的负责都葬送掉,那么在架构上我们怎么样保证?我们是可以通过技术来慢慢的结束的。

安全是每一个人的问题

最后一点就是安全,我们以往的安全是承担着看门人的作用,我们在开发和设计的过程之中不会去考虑安全对我们的应用,而是我们在冻结代码之后,在前线之前,来考虑我们的系统有没有什么安全的问题?我们来做基于他的安全的扫描,这个时候大家会发现,会有很多的漏洞的问题。安全的问题,大家越来越重视,今年出现了很多安全的事故和问题,我们现在认为对于安全我们需要更多的重视,我们希望把它从我们项目的后期的阶段移到整个的过程之中,从专门人员关注的点来变成每个人都需要关注安全。

我给大家介绍一下就是产品的安全。比如说我们要做建模,在我们的项目的初期就要对系统整体的安全做一个评估,包括我们现在大量的使用一些开源的软件,第三方的应用,包括SDK,我们怎么样保证第三方软件的安全性,一旦我们使用就变成我们软件的一部分

Stride模型,我们非常的重视这一块,这是用户登录的流程,大家把关键的数据的流动和划分,通过这些模型来看出有什么问题,通过这样的方式来预防,或者说在我们的项目开始之前就对我们项目整体的安全就有一个把握。还有对于IDE的安全,今年出了一个(英文)的问题,我们怎么样来保证我们的IDE是安全的,我们提出了避免使用远程的方式,包括我们建议大家可以扫描关键字来解决源代码的安全,在密码的安全上,我们建议大家使用两步的认证来保证密码的安全,在传输的安全上,我建议大家采用协议的安全。在协议上我们可以采用hsts的策略。包括这个let is encrypt,采用这一种工具,可以让我们自动化,一个脚本、一个命令,我们可以讲我们的证书的申请和撤销的工作就可以达到,并且今年的十月份,已经被我们主流的所有的浏览器已经认证了,所以大家已经可以采用了。其实我们今天讲到的是技术雷达里面几个大的热点,讲得很快,有很多的内容没有给大家讲到。比如说持续交互,我们怎么样把我们的产品,在生产的过程之中产生的浪费,降低成本,产生价值。

包括我们对架构设计,比如说我们有出于对于事件的建模和数据库的应用,很多的想法出来我们也是放到我们的雷达里分享给大家。

包括大数据,这也不说了,今天也有几个的主题演讲也是基于这一块的。今天的热点也是围绕着spark,如果大家有兴趣的话可以看一下我们的技术雷达上对这一块的分析和判断。

更多精彩内容,请关注新浪微博:@CSDN、图文直播专题: 2015中国软件开发者大会 。

正文到此结束
Loading...