我行过许多地方的桥, ParlayX, VPC, NSX, OVS,
 看过许多次数的云, AWS, GCP, Azure, Aliyun,
 喝过许多种类的酒, SS7, SMPP, SOAP, REST,
 却只爱过一个正当最好年龄的, Spring!

今年九月底,我有幸前往美国华盛顿特区参加2018年度SpringOne Platform大会。作为Spring、CloudFoundry、Redis、RabbitMQ等开源技术的拥有者,Pivotal公司每年都会举办一次这样的大会,与全球数千位开发人员、客户和合作伙伴相聚在一起,交流企业数字化转型的最佳实践,探讨云原生应用开发的最新技术。

我最早使用Spring开发应用是在2012年,那个时候Spring3.1刚出来没多久,还没有现在的Spring Boot和Spring Cloud,甚至也没有Spring MVC,我们当时只是用Spring核心框架(包括IoC,AOP,JDBC等),结合struts和hibernate来开发java web应用,当时觉得比JEE已经好用很多了。如今,Spring已经发展到了5.1,其中除了当年的核心框架功能得到优化和增强之外,更是增加了Spring Boot和Spring Cloud,这让开发者能够基于Spring非常方便的开发应用,而且能很方便的开发符合微服务架构的云原生应用。我在参会之前,在大会官网上大概浏览了一下大会安排,知道大会有一百多个讲演,涵盖了Spring Framework, Spring Boot, Spring Cloud, CloudFoundry, Data, DevOps, Kubernetes, Serverless Microservices, Application Transformation等多类主题,我对这次大会充满了期待。

大会第一天,以开发人员参加Workshop动手练习为主,参加者在讲师的指导下完成一系列开发任务。以前我参加类似的大会都是被动式的听讲,而这次一上来就是打开随身携带的Laptop,连上大会现场的WIFI,按照讲师的指导开始编写代码和执行指令,那种切切实实的操作,一个坑一个坑的趟下去的感觉真是非常过瘾。上午,我参加了Modernizing and Moving App to Cloud with PCF and AWS,在这个Workshop中,来自Amazon的讲师Ryan Niksch先展示了一下在PCF上如何部署配置AWS ServiceBroker,然后让参加者打开Laptop开始练习,在PCF创建AWS Polly和S3的服务实例,利用cf push指令一键部署应用,最后将AWS Polly or S3服务实例绑定到指定的应用,做完这个Workshop后,参加者对PCF的常用指令以及和AWS的服务集成都有了基本的印象。下午,我又参加了Serverless with Spring Cloud, Riff and Knative,在这个Workshop中,来自Google的讲师Ray Tsang一上来就让大家打开Laptop登录GCP,开始基于Kubernetes/Knative/Riff的一系列任务,先在GCP上创建Kubernetes集群并安装Riff及其依赖的Istio/Knative,然后开发部署两个Riff函数,最后创建Eventing bus和channel将两个Riff函数进行关联,使得两个函数能依序处理某一触发事件,并得到预期的结果,我在做这个Workshop之前并没有接触过Riff,但是我顺利完成了这一系列任务,并且对Riff和Knative有了基本的理解。一天Workshop做下来,最大的收获是激发了我对Knative和Riff的强烈兴趣。

其实大会在第二天,才算正式拉开帷幕,这一天首先登场的是Pivotal负责研发的高级副总裁Onsi Fakhouri,他分析了企业在数字化转型过程中面临的挑战,以及Pivotal如何从工具、平台、技术和服务等诸多方面帮助客户应对这些挑战,他的演讲生动而又透彻;在他之后,来自Pivotal的Juergen Hoeller介绍了Spring Framework 5.1 on JDK 8&11,来自Google的Mark Chmarny介绍了Knative,来自Pivotal的Mark Fisher介绍了Riff,这些演讲嘉宾都是业界知名的资深技术专家,他们的演讲为参会者指明了未来五年的云原生技术发展方向;接着,波音公司CIO兼高级副总裁Ted Colbert上场,介绍波音公司如何在Pivotal的帮助下加快企业数字化转型的步伐,利用PCF平台技术和Pivotal Labs服务,从技术和人才两方面推动公司进入自己的云原生时代。

主会场结束后,我先后听取了迁移企业应用上PCF的工具和方法,基于Spring Cloud服务的云原生应用开发,Spring Cloud和Istio两种微服务框架的比较,测试驱动Spring Boot应用的开发等等。有的讲师会娓娓道来他们的实际案例,有的讲师会当场和你一起编写代码,都让我受益颇多。这里我重点讲一下迁移企业应用上PCF的工具和方法,实用工具有很多,比如SNAP,它用于分析应用迁移时的关注点和难易度;比如Tracker,它用于跟踪项目的需求、任务分解和代办事项,使之一目了然;比如Concourse,它和Jenkins一样用于程序的自动化构建部署和发布;关于方法,Pivotal Labs做过很多类似的项目,所以积累了一套行之有效的敏捷方法,比如结对编程,比如测试驱动开发,比如微服务化时的领域驱动设计等等。Pivotal Labs有一个部门叫AppTx,专门负责将企业应用迁移到云应用平台PCF上来,然后进行微服务化改造。为了更好的为中国企业服务,Pivotal Labs于今年年初在国内也组建了AppTx团队.

当前的世界处在快速发展之中,而且越来越以软件为导向,企业和组织应该如何进行软件资产的创新,来跟上世界变化的速度,这是大会第三天不少的主会场演讲者论述的重点。当前,将应用部署上云已经成为业界共识,很多企业和组织,已经将应用迁移到PCF这样的PaaS云平台,因为PCF提供了功能强大的框架和丰富实用的工具,能够让客户只需关注业务本身,从而获得企业快速发展所需的产品迭代速度,来自美国空军Cyberspace Innovation的技术总监Lauren Knausenberger和Bryon Kroger上尉介绍了美国空军如何与Pivotal Labs展开合作,来实现美国空军软件系统的创新;来自Pivotal的资深工程师Jon Schneider介绍了Spinnaker,这是一个开源且支持多云的持续交付平台,在多云的世界,即是云平台发生变化,也可以用Spinnaker完成相同的交付工作;随后,来自McChrystal Group的总裁Chris Fussell,来自Microsoft的Azure云开发布道师Bruno Borges,来自Accenture的首席技术官Paul Daugherty等业界精英也登场进行了精彩的演讲,不一一详述。

主会场结束之后,我先后听取了在PKS上运行Apache Kafka,用Spring Flux实现Reactor执行模式,用Istio结合Kubernetes实现服务网格,Knative介绍等等。信息量太大,不一一展开说了,在这里重点介绍一下Knative,大家知道,Kubernetes只是个容器编排系统,Kubernetes自身只能部署容器级别的工作负载,这个系统本质上是给运维人员用的。开发人员用起来往往会遇到困难,开发人员希望的是能够和PCF一样,直接往平台一键推送源代码并可以很好的运行,而这就是Knative的使命。Knative可以在任意云环境的Kubernetes和Istio之上运行,负责构建、部署和运行无服务器化的函数,它由Google、Pivotal等公司发起开源,包含三个模块:Serving, Build, Eventing。Serving模块负责部署和运行无服务器化的函数负载,它支持函数的运行可由HTTP或Message请求驱动,弹性伸缩可至零,并可利用Istio实现集群内的路由分发以及进入集群的入口连接;Build模块负责将源代码构建成容器,它基于Google的容器构建服务,提供了一个可插拔的构建模型,可扩展实现多种构建方法,Buildpacks就是Pivotal提供的一种构建容器模式;Eventing模块实现函数发布和订阅事件流的能力,函数遵循CloudEvents规范来发送和接收事件,它也提供了可插拔的事件源和消息代理模型,轻松支持多种消息代理服务如Kafka, Google Pub/Sub, RabbitMQ等。有了Knative之后,整个Kubernetes体系就面貌一新了,我觉得Kubernetes+Istio+Knative+Riff将会成为云应用平台的一个发展方向。

事实上,我们身处一个复杂多变的世界,企业和组织面临着各种各样的境地和挑战,这说明云发展方向也将会存在多样性。大会第四天也是最后一天,大会接近尾声,在这天的主会场,演讲嘉宾给我们讲述他们软件团队曾经面临的困境。StubHub是eBay旗下的全球最大的票务网站,每年购票人次达1.5亿,客户遍布48个国家和地区,提供超过100万项体育、娱乐和其他现场活动的票务服务,但是他们面临系统分布式架构和业务快速迭代的问题;星展银行(DBS Bank)是东南亚最大的银行,有280多家分支结构,为广大个人用户提供丰富多彩的个人金融业务和应用,但是他们面临着系统应用单体化、用户体验和开发人员效率的问题。在企业数字化创新这一趋势下,他们都选择了PCF平台和Pivotal Labs服务,将应用平台云化,将应用架构微服务化,将应用部署自动化,将团队敏捷化,现在,他们的系统两年内无停机无业务中断,软件迭代速度提升了十多倍,人工的繁琐运维工作大为减少,他们已经取得了令人惊叹的进步。

SpringOne大会历时4天终于落下帷幕。百余场讲演,大咖云集,干货满满。从TDD/CI/CD/DevOps敏捷开发工具和组织结构的最佳实践,到企业数字化转型时应用往云上迁移的实例介绍,如数家珍;从Java和Spring未来几年的兼容版本和发展路线,到SpringFramework5的Web和Data层面的Reactive的全栈支持,娓娓道来;从PCF on AWS环境如何用ServiceBroker调用S3等AWS服务的动手练习,到GCP上部署Riff并快速实现函数即服务的实操演练,逐一讲解;从基于SpringBoot2和SpringCloud的云原生应用开发的代码分析,到Kubernetes环境快速构建部署应用或函数的Istio/Knative/Riff等新技术的介绍和Demo实现,均有涉猎。

四天的时间收获很多,我聆听了多家企业将遗留应用迁移到PCF上的实例介绍,吸收了一些Spring测试、安全或是Reactive方面的技能,也接触了Istio、Knative和Riff这些新兴的技术,但我觉得最大的收获,是看到了当今云平台的发展方向,PaaS和CaaS在相当长的一段时间依然会是企业应用部署的首选,而FaaS的时代即将到来。

最后我要说的是,SpringOne Platform大会虽然很好,但是飞行十四个小时到美国华盛顿特区确实比较辛苦,还要倒时差,而且那边饮食也不习惯。一个好消息是SpringOne Tour大会即将于11月3日在北京举行,多位刚刚在华盛顿SpringOne大会上发表演讲的全球知名技术专家都将专程赶来。这绝对是Spring社区在中国的顶级盛会,点击大会官网:http://pivotal-china.com/html/event/springone_tour.html?channelID=gw可以免费报名。

 

 

Comments are closed.