SpringOne Platform 2016参会分享

SpringOne大会是全球最权威的Spring大会,今年8.1-8.4日在美国Las Vegas举办,阿里几位架构师参加了这次会议,在此分享给大家一些参会的感受。

大会的几个热门话题

技术框架

  • ReactiveX:响应式的编程模型,用来编写异步和基于事件的程序,它把观察者模式、迭代器模式和函数式编程完美有机地结合在一起了;刚开始看它的文档有示例代码,有点不是很好理解,需要多琢磨,我到现在也还没有搞明白,有兴趣的可以参考:http://reactivex.io/intro.html ,中文翻译版本:https://mcxiaoke.gitbooks.io/rxdocs/content/Intro.html

  • Ratpack:一个轻量级的高性能http框架(https://github.com/ratpack/ratpack/ ),基于Netty和Java8;在微服务盛行的今天,服务之间的通信除了传统的RPC,http RESTful也会是趋势;http微服务时代下,相比Servlet规范,轻量级的http框架虽然功能会少一些,但它有着开发效率快,吞吐量高等优点;

  • Jigsaw in JDK9:Java9里的模块化系统,模块之间相互隔离,通过导入和导出相互依赖,这个和Pandora的原理有点类似;虽然Java9还没有发布,但是能感觉的到大家对这个还是很期待的;

  • Spring 5:

1、全面支持Java8, Java9

2、支持Java EE7,Tomcat 8.5+, Jetty 9.3+, Wildfly 10+

3、支持响应式编程模型

1、1.3里deprecated的类、方法等,在1.4里都直接被删除掉了,这无疑给应用升级带来了成本;

2、启动失败信息人性化,约定的错误而等,自定义Banner图片等

3、Josh Long现场演示时,看到是支持热部署,修改pom,properties,java等都实时生效,这个感觉很牛B,但是在Spring Boot 1.4 Release Notes里没有看到这方面的说明;

  • Zipkin:Twitter的开源产品,做分布式调用跟踪的产品,类似EagleEye;有很多公司基于这个在做链路踪分析的产品。
  • XRebel:在展台宣传的,ZeroTurnaround的继JRebel后的又一个主打产品,通过Java Agent对应用进行性能分析,它的优势是无需要埋点,即插即用,它对大量三方库、底层代码做了hack;但是目前应该只局限于单机分析,分布式架构能力不是很明显。

PaaS,平台即服务

SpringOne Platform,无疑会重点介绍其明星产品PCF,它从底层IaaS到容器,再到上层微服务,提供了一整套”云操作系统“解决方案;而Spring也是Pivotal的一部分,两者的深度合作简直就是强强联手。

另外几个比较影响力的PaaS产品有:Microsoft Azure,Google App Engine,Amazon Web Service(AWS);有意思的是,这次微软也过来宣传他们的Azure,说明微软也在拥抱开源世界,也在积极变化。

一个比较大的感受是,国外PaaS平台的生态发展的比较好,比如专门做API管控的公司Apigee,他们围绕API,从设计、文档、数据分析、访问、安全、稳定等多个方面做的都很完善,这样不同公司数据的互通和调用将会变的非常简单。

另外一个感觉是,国内的云计算公司,貌似都不太开放,你的应用跑在上面,你想和跑在其他云平台上的应用进行通信,这些方面的技术产品还没有成型,这样就需要用户自己去想办法解决,无疑也给用户带来了成本。

Serverless,无服务器架构

虽然会场没有专门的Session介绍这个话题,但是在第一天下午的开放讨论中,有个环节聊到了Serverless;Serverless最终目的就是,远离服务器和基础设施方面的问题,让开发人员可以主要专注于代码。

IaaS将真实的物理机变成了虚拟机, PaaS进一步将虚拟机变成了包含基础设施的中间件服务;SaaS和BaaS(后端即服务Backend as a Service)将中间件服务扩展到更基础的后端能力。

比如开发者在进行业务开发时,需要用到消息、缓存、存储等中间件服务,开发者需要对这些中间件的服务器进行性能优化、可扩展、稳定性保障等,这会很大程度上占用开发者的时间;开发者如果能直接租用现有的服务,或是在平台上直接开发这样的服务,而无需要关注服务器相关的稳定、可扩展等因素,就是是去服务器而直接使用服务的一种架构思想。

有关Serverless相关的产品,可以看看AWS lambda,它是FaaS(Funtion as a Service),按规范写一个函数,上传到AWS lambda平台上,秒级启动,按调用计费。

Cloud Native,云原生

Cloud Native是一种软件架构思想,是在互联网、物联网、移动互联的背景下对我们传统软件架构提出的新的要求:

• 快速响应需求快速发布

• 应用高可用性、高可扩展性

云原生应用要求应用的架构、开发方式、部署和维护技术都要做出改变,真正的发挥云的弹性、动态调度、自动伸缩;

持续交付、DevOps和微服务分别描述了Cloud Native应用的为什么、怎么做和是什么。

Agile & DevOps

这个话题被多个Session提到;敏捷,重在执行,感觉老外在这方面还是很坚持的:

• 产品、设计、开发、测试坐一起,沟通,站会,roadmap同步会

• 全栈开发,结对编程,互相code review

• 团队大小为沟通而优化,围绕产品进行组织架构调整,坚持产品导向

如果敏捷解决了产品在商业设计、开发、测试这个环节中的问题,有效的加快了产品开发的周期和效率;那么DevOps则是解决开发和运维之间的隔阂。

开发关注的是产品和技术的快速上线,运维关系的是稳定压倒一切,DevOps要求两个角色必须要有统一的目标:即快又稳;同一个目标,在同一个团队,通过相应的规范和工具化,保证团队协作有序进行,避免线上运维的重复劳动和失误。

MicroService,微服务

不管是PaaS、BaaS,还是Cloud Native,还是DevOps,都和微服务是离不开的;在云计算的今天,我们不断地在强调开发效率、部署效率,而Spring Boot确实在这些方面给我们带来了质的变化和感受;但是如何将它们和现有的技术体系结合,这是我们需要关注的问题。

Spring Boot的核心开发和倡导者Josh Long和阿里架构师

其他一些感受

SpringOne大会是其母公司Pivotal举办的,因此很大一部分主题演讲和Session都是在介绍Pivotal的Cloud Foundry(PCF)及相关的客户案例;但是PFC在国内貌似用的人不很多,了解到华为在用(华为也派代表来参会了);另外,参加大会的国内公司,除了阿里和华为,我们只发现了招商银行的同行。