在我们的工作中,接触到很多的传统行业的客户,比如金融、零售和制造业等等,传统行业由于受到互联网环境的冲击,很多企业都开始做数字化转型,因此逐渐走向我们今天经常听到的新金融、新零售、新制造,主要是通过大数据云计算等新技术的应用,提升业务能力,改变服务模式,从以产品为中心而逐渐转向以消费者需求为中心转变。
企业级客户的IT状况是什么样的呢?
简单来讲,可以概括为:双态并存。
在业务层面,目前企业中既有传统业务,也有互联网的新型业务。拿金融行业来说,目前做很多的新业务创新,包括线上的理财贷款等业务,同时加上传统的存款汇款的老业务仍然大量存在,也就是说在业务层面,是老业务和新业务并存。
而IT主要作用就是对业务进行支撑。因此支撑老业务的IT架构和支持新业务的架构也都有。传统的架构对于老业务的支撑是很稳定的,比如银行的核心系统仍然跑在大型机上,尤其是大型的银行。而新的IT架构,云化的互联网化的架构,则用于支撑互联网的新业务。
传统的业务和架构需要稳定,而新的业务和架构要求敏捷,因此出现稳态和敏态并存的现状。
上图表示了金融行业的客户现在在业务层面和IT层面所面临的挑战。某金融企业现在面向互联网场景的2C的零售业务的增速,年复合增长率超过百分之百;某银行企业的信用卡中心,每个月应用的迭代更新超过100次(主要是为了支持大量的线上营销活动,比如节假日),因此IT系统大大小小的迭代也达到100多次;还有来自证券企业的压力,银行网络支付业务在双11的时候,其IT系统面临发压力都是非常大的,甚至达到指数倍。
我们看到这些传统行业在互联网的冲击下,业务面临的压力是非常大的,这在以前的环境下是不敢想象的。
业务的转型不可避免地推动IT的转型,那么IT 究竟发生了哪些变化呢?我们根据经验总结了一些场景。主要变化发生在以下五个维度。
1、计算资源
在传统的业务需求下,银行等大型企业都是买大型机小型机等高端的存储和服务器,而现在面临互联网化的需求,都逐渐走向x86,并构建虚拟化环境,还有一些客户,使用公有云。那么我们看到,硬件锁提供的计算资源逐渐向廉价的方向发展,计算资源也都在做IaaS云化。
2、应用的封装和交付
在应用的封装上,之前JAVA都是用JVM做封装,基本上都是采用java程序然后抛在java虚拟机上。而现在更多的是采用容器的交付方式。容器在很大程度上解决了程序异构所带来的问题。
3、应用管理的问题
传统模式下对应用做管理,尤其是java的应用,大多数是通过java中间件,比如weblogic等,管理的内容包括应用的权限,应用端的访问,数据库访问的密钥,应用的session共享等。在新的架构上,都是基于容器的PaaS平台,应用上云之后,都是容器化交付的,通过PaaS平台管理容器化的应用。
4、应用架构
这个主要是指应用怎么做开发,怎么做架构设计,怎么写程序,传统的架构是采用SOA的架构,或者说单体架构,而在新的环境下,SOA的维护成本和迭代成本都很高,因此在云计算IT架构里面,普遍采用的是微服务架构。微服务架构是一种分布式的架构,每个应用程序相对轻量,每个进程封装在单独的容器里,实现独立的功能等。
5、开发运维
这里会涉及到企业的组织部门的架构,在传统的IT企业中,开发部门,运维部门是两个并列的部门,在开发部门中比如采用传统的瀑布式开发,运维则是传统的面向资源为中心的运维,到了云计算的时代,由于业务压力很大,上云在很大程度上是为了解决效率的问题,提升敏捷能力,因此开发部落地敏捷开发,而在运维部门,逐渐落地DevOps的模式,也通过这种方式,促进开发和运维部门的融合和一体化。
在上述的五个层面,应用架构和应用管理则是我今天重点要关注和分享的。
什么是企业级应用架构管理?
企业级应用架构管理主要解决应用的开发架构和应用的运行时管理问题。
主要的价值是:
1、实现应用运行环境的标准化,提升交付速度
2、达到运维过程的高度自动化,降低运维成本
3、形成软件研发的技术路径统一和把控研发质量
4、优化企业 IT 架构治理
未来企业级应用的发展方向是什么?
在我今天的演讲题目中,增加了‘下一代’,那么我们来看一下在上云之后的下一代的企业级应用会向哪个方向发展?
我们认为未来企业上云后,应用主要会朝着轻量化、敏捷化和开源化的方向发展。
1、轻量化
这里主要是针对传统的JAVA 中间件应用。应用容器化、架构微服务化,使得企业级应用变得轻量化。
2、敏捷化
包含以下几个理念:
- DevOps 理念逐步推广
- 研发人员更多关注业务开发本身而无需关注太多底层技术细节,落地敏捷开发
- 运维人员大量采用自动化运维平台和工具,运维效率极大提升
3、开源化
- 企业级 IT 全面拥抱开源软件
- 开源技术选型上面临挑战,开源技术频繁更新迭代,企业需要量体裁衣,取长补短(目前很多的开源技术都处于半成熟的状态,在开源技术选型上的困难是很大的)
我根据自己在Google的经验,接下来跟大家分享一下Google在企业级应用架构方面的管理。
Google作为 IT 行业的标杆,是云计算领域公认的领头羊之一。我在Google工作的时候,很深刻地感受到Google在应用架构的管理方面是非常强大的,所有的业务都能实现统一管理。
在Google 内部的 EAMS 最为强大,主要体现在以下几个方面:
1、管理内部上亿应用程序,并运行在数百万台服务器上,极大地提升了资源利用率。
2、使得研发人员专注业务开发,提升了开发效率,而无需关注分布式系统的底层架构,诸如计算、网络、存储等细节。
3、落地了SRE,Google 的 DevOps 实践,极大地提升了运维的效率
而事实上,Google的应用管理代表了互联网公司对应用管理的范式。
那么,当企业应用上云之后,其应用架构管理要关注哪些要素?
1、容器
容器正在成为云计算原生应用的标准交付方式
2、微服务
微服务将成为云计算原生应用的标准开发架构
3、服务治理
- 微服务治理成为下一阶段应用管理的核心
- 服务网格是微服务领域最新的服务治理技术
- 数据网格是服务网格的特例,是微服务应用数据治理方面最新的技术
接下来我重点讲一下服务网格技术。
服务网格如何对微服务做服务的管理呢?
服务网格很像一个轻量的网络代理,当客户端的程序需要访问服务端的时候,客户端 程序首先要知道服务端在哪,一般静态的方式是通过IP地址端口或者域名端口来访问。
在服务网格下的处理方式是这样的:
1、由于客户端不知道服务端在哪里,因此用简单的方式将请求发送给本地的服务网格实例(的代理)。
2、服务网格进行服务发现
3、服务网格找到请求之后,将其转发给目标的服务端。
当服务端响应之后,也是将结果返回给服务网格,然后由服务网格转发给客户端。
通过这种方式,客户端不需要查找服务端地址,服务端也不需要对客户端进行注册。极大地简化了服务流程。
那么为什么叫服务网格?加入以下是一个企业内部的服务器,一个格子代表一个服务器,绿色的是应用程序,蓝色的是轻量级的网络服务代理,所有的微服务程序互相通信都是通过网格来实现。
所有蓝色的网格的代理会装在每一台服务器上,最终的通讯是网格来完成的。这样网络就形成了格子状。
服务网格有哪些关键点
抽象:基础设施层
功能:实现请求的可靠传递
部署:轻量级网络代理
关键:对应用程序透明
网格是如何演进过来的?
如何理解网格对于应用程序的透明无侵入,我们先来看一下tcp/ip的例子,在这个协议之前,需要有大量的逻辑处理网络上的问题,比如网络连接失败,网络重传,网络丢包和数据错误和流量控制等问题,因此在tcp/ip之前,写网络应用程序是非常痛苦的一件事情。所有网络的处理和程序的逻辑混合在一起。
后来随着tcp/ip的出现,网络的处理直接写入到操作系统的内核里面,在程序的设计中再也不需要关注。
同样的道理,网格也是起到这样的作用。就是将通信的细节问题抽象到内核里面,应用程序设计的时候不需要再去处理和关注。
在实现上,我们可以参考最近新推出的Istio,是服务网格的王者。
Istio主要做的就是,当我们将网络的管理部分与应用程序进行剥离开来之后,它能够进一步将这些服务进行抽象化并做统一的管理和控制。其作用和好处也是非常多的。
企业级应用架构管理会朝着什么样的方向发展?
主要会朝着标准化、统一化和模块化的方向发展。
1、标准化
- 容器对应用标准化封装
- 微服务成为云计算原生应用标准化架构
2、统一化
基于容器和微服务打造的标准化应用,可以实现应用统一化管理
3、模块化
- 容器化应用的每个实例是可独立部署的最小模块
- 微服务架构非常强调应用的模块化
- 模块化降低系统耦合度,降低系统维护成本
数人云在这方面也一直在不断地努力。
主要致力于两个方面,一个是微服务的开发和管理,另一个就是容器的层面。从目前来看,微服务的选择以后也会大部分落在对容器的选择上。而微服务的开发测试,要走的路还很长,尤其是开发测试,需要大量的工作。
原文发布时间为:2017-12-29
本文作者:王璞