面向微服务的企业云计算架构转型

大家好,我是焦烈焱,今天主要介绍普元利用云计算模式,帮助企业实施数字化转型过程中,在技术上遇到的挑战,以及我们解决问题的方法。

首先解释一下什么是数字化?数字化就是把人、事/物和商业联系起来,Garnter 提到未来的企业都是数字化的企业,IT将成为企业核心竞争力,甚至每个企业都是一个 IT 企业。类似的概念有金融科技(FinTech)、软件驱动企业、API经济,我觉得还是数字化描述得比较本质,大云物移/SMAC这些提法就技术化了。

企业数字化,我们近些年遇到了很多类似的案例,这里不一一展开,但需要说明的是,这些都是通常意义上的传统企业,他们比以往更有动力做数字化的商业模式。

数字化对 IT 的要求,来自从对内服务为主,增加了对外服务的模式,以云计算的模式,直接面向最终客户和合作伙伴,由于服务对象、业务范围发生了很大变化,需要采用不同的架构实现。

微服务是实现对外服务所必要的,原因有三:1、核心来自对外服务往往与互联网企业竞争,需要更快的速度;2、这些服务往往不是企业当前擅长的,要快速试错;3、业务的压力服务预计,需要架构的弹性。例如我们一个农村商业银行的客户,做了一个农产品买卖的电子商务平台,电子商务业务是他们不擅长的,而直接竞争对手就包括目前的互联网企业,迫使我们必须学习互联网企业的经验。

在数字化过程中,我们实施的案例往往采用混合的架构,新事新办法、老事老办法做过渡,而新事一般采用微服务架构。

上图是一个微服务架构的全景图,注意右上角用 ESB 与传统系统连接。说个题外话,最近很多次交流,大家都提到嵌入式的集成与 ESB 集成模式的关系,应该如何选择,我认为两种都需要,前者对同质系统、自研系统比较合适,而后者用于异构的集成,例如我外购了一个产品,无法把集成的逻辑嵌入到该产品中,只能通过 ESB 进行连通。

我们在实施微服务架构,支撑企业数字化的过程中,遇到了很多挑战,主要来自技术欠债太多、隐形成本过高、知识缺少共享与协作等等。

遇到的问题太多,就事论事的解决问题肯定是不行的,我们在实施过程中从技术的精益运营入手,把技术当作一个Business(这个在此翻译成商业、生意最恰当,而不是业务)来做,从架构、治理、协作等各个方面设立了若干专题,在这些专题中通过技术手段提高效率、降低成本。

其实,云计算的本质是提高效率,而不是降低成本,公有云就是要提高社会的效率,私有云就是要提高 IT 的效率。从这个角度看,实施云计算就是做精益运营,而微服务架构为精益运营提供了架构上的保证,因为微服务是小的、容易变化的、容易控制的。

下面,我主要从架构高可用、提升协作效率和提升治理效率三方面谈一下经验。

介绍一下技术欠债,我们以前基于 OpenSatck + CloudFoundry 做基础架构,当年和银联的同事一起,基于 OpenStack 管理了上千台的物理机。

那时,我们花了很大精力在如何实现高可用,做横向、纵向伸缩,但还是有些不足,例如由于虚拟机启动较慢,导致切换的时候时间窗口太长,为了缩短时间就设置了一些已经启动好的虚机,应用也做成了彻底的无状态,例如 JVM 等使用了共享方式,而不是多份 copy,减少镜像的大小,但总体上资源利用率是有待提高的。

再如高可用的实现中,OpenSatck 实现起来就要引用很多组件,能实现,但是比较复杂。

通过 OpenStack 和 CloudFoundry 的实践,我们发现,他们是为了管理而生的,架构的核心是为了更灵活的管理各种设备,而不是为了高可用,类似的还有虚拟机技术,也是为了更方便管理的目的。

基于这样的思考,我们决定把 OpenStack 做薄,让他做最擅长的虚机管理,而高可用等能力交给 Kubernetes,因为在架构上后者天生为调度而设计。

至于为什么选择 Kubernetes,先前微课堂讲师宋潇男已经做了介绍,大家可以在 EAII 公众号(微信号:eaworld)下载相关PPT。

我们用 DevOps 提高协作的效率,加快开发、测试、部署的效率,首先是将应用代码与基础设施分离,开发工程师提供应用的代码、配置、环境信息、安装介质、实现后的软件资源(例如对外接口、数据库表),通过 DevOps 平台进行自动化的部署。

上图为微服务 DevOps 的概念模型,内容有点多,就不一一解释了。

由于在 DevOps 过程中有很多的工具,协作就是要把这些工具打通,协作起来,例如需求是用 Jira 管理的,在 DevOps 平台注册用户后,就可以在 Jira 里面自动注册。

我们做了很多看板,让需求、设计、运维、测试不同角色的人员,通过看板能够了解其他环节的工作,而看板的数据来自于被集成系统,例如在 Jira 里面编辑需求的时候,会自动推送到 DevOps 的看板上。

集成 DevOps 领域工具链,是基于概念模型,结合 AAAA 完成的,这里面工作量比较大,而且上述工具链的审计我们还没有实现,比较复杂。

同时,我们的 DevOps 平台准备基于Kubernetes 实现微服务新版本发布、金丝雀测试、预发和滚动更新,这也是一个基于 OpenStack 比较复杂的工作,用 Kubernetes 的标签概念就比较简单。目前正在考虑通过数据服务解决服务发布的数据库蓝绿部署问题,帮助微服务做好发布、回滚、灰度发布。

面向互联网应用的微服务架构,是一个分布式架构,比较复杂,因此必须提高治理的效率,我们是用元数据来完成的,这是一个元数据在微服务架构中应用的例子。

有了微服务的元数据,就可以做很多事情,上图是通过元数据做各阶段版本的比较。我们曾经在某特大型城市商业银行,利用元数据从设计工具(PowerDesiner)、预发环境、生产环境采集软件资源信息(例如数据库),预发环境、生产环境进行比对,列出不一致的地方,再参考设计,人工确认无误的情况下,才发起生产上线流程。

还有在云中的自适应安全,都可以基于元数据来实现,普元首席架构师顾伟在 CSDN云计算大会的分享中,也会讲到这一点。

元数据的话题,在微课堂也已讲过两次,包括应用场景和技术实现,大家可以关注 EAII 公众号(微信号:eaworld)。

总结一下今天的内容:我们在这些年的实践中,用微服务架构支撑企业的数字化,采用的技术从 OpenStack + CloudFoundry 等管理为主,逐步过渡到 Kubernetes + OpenStack 的模式,同时利用元数据技术提高微服务架构的治理效率,用 DevOps 提高协作的效率。

在精益运营的方面有很多功课我们要做,包括今天的内容,我们会逐步分专题细化共享出来,谢谢大家!

附: 各 群 答 疑

(解答人:普元CTO焦烈焱)

Q1、群友:可否用大众语言再对内容做一下总结?

答:我们在这些年来做了很多企业的数字化转型工作,一般都是使用微服务架构,而使用好这一架构,最好从 IT 精益运营的角度出发。今天我们主要讲了架构提升、提高治理效率、提高协作效率,其中架构提升采用Kubernetes + OpenStack 的模式替代了 OpenStack + CloudFoundry ,同时利用元数据技术提高微服务架构的治理效率,整合了 DevOps 工具链提高协作的效率。

Q2、群友:DevOps工具链这块现在考虑是选用商业的软件,还是开源的来做集成会更合适,如果涉及到和IBM uDeploy等软件的话是否会和这个架构的部分功能会重合?

答:关键是要和目前企业的环境整合起来,至于选择开源还是商业,不好一概而论,我们的原则一般是选择长板最长的那个。

Q3、群友:请问传统的软件架构,暂时无法升级为微服务架构,是否研发流程也能使用普元devops工具来自动化?

答:可以,DevOps是消除技术欠债的好办法。

Q4、群友:微服务是否一定依赖ESB?

答:ESB还是需要的,如果你有外购系统,或者和其他异构集成,就需要了,MiddlePipe 和 MiddleBox 的方式其实都需要。

Q5、群友:我们企业有一些图形显示系统,想在其他系统直接调用它进行图形显示,这样就可以复用敏捷了,我是对原系统按照SOA还是微服务进行改造呢?同时还想把这个接口或服务放到普元之类的总线进行管理,可以吗?

答:我觉得应该按照 SOA 的规划方法进行服务规划,可以通过 ESB,对与有性能瓶颈的做微服务改造。

关于作者:

焦烈焱

EAII-企业架构创新研究院 常务理事

2001年加入普元信息,现任CTO,全面负责普元信息技术与产品的运营工作,公司技术发展战略的重要决策人。焦烈焱在企业技术架构研究方面有二十余年的经验,长期致力于分布式环境的企业计算、 SOA与云计算技术研究与实践。加入普元信息后组织完成一系列核心产品的研发工作,包括SOA应用平台、以BPM &/ESB为核心的业务集成平台、以复杂事件处理/数据治理/作业调度为核心的大数据平台,期间主持了中国工商银行、中国建设银行等多家大型企业技术平台的规划与研发。著有《SOA中国路线图—实施版》一书。

原文发布于微信公众号 - EAWorld(eaworld)

原文发表时间:2016-06-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏架构之美

【SDCC讲师专访】58同城孙玄:一切抛开业务的架构设计都是耍流氓

19720
来自专栏Java学习网

入门软件工程师所面临的5个挑战

入门软件工程师所面临的5个挑战 如果你对编程和专业的软件开发感兴趣,那么,这里有5个新晋软件工程师所要面临的挑战。 5.代码疲劳 专业程序员要写的程序……很多。...

26670
来自专栏芋道源码1024

程序员修炼之道 | 从小码农到高级架构师

不管是开发、测试、运维,每个技术人员心里都有一个成为技术大牛的梦,毕竟“梦想总是要有的,万一实现了呢”!正是对技术梦的追求,促使我们不断地努力和提升自己。

15200
来自专栏罗超频道

找社交要答案,搜狗能重构搜索吗?

移动互联网还在不断瓜分着互联网的流量,入口的碎片化使得搜索引擎受到很大冲击,搜索引擎都在尝试重构自己,寻找新的出路,执掌搜狗11年的王小川的思路是:接入独家内容...

44840
来自专栏携程技术中心

职位推荐 | 一大波技术岗来袭~

23340
来自专栏ThoughtWorks

ThoughtWorks 2015年11月期技术雷达正式发布!

点击【阅读原文】或复制打开以下链接,即可下载同步发行的技术雷达中文版: https://assets.thoughtworks.com/assets/techn...

37490
来自专栏芋道源码1024

年薪50w+的阿里p7专家,顶尖的技术人才,只因做到了这几点

最近部门招聘,很多工程师,包括我在内都参与了内推和面试的过程,经过这次招聘,我发现能够最终拿到offer的人,基本上在看到简历的那一瞬间就已经定下来了,后续的面...

24050
来自专栏互联网杂技

六步完成出色的用户体验设计

Product Manager& UX Guy at CoreLogic Great User Experience (UX) in 6 Easy Steps ...

35180
来自专栏Android 开发者

打造低延迟互动音频: Oboe

如果您有玩音乐游戏,或者音乐软件 (如 DJ 或者合成器) 的话,绝对会对音频的延迟深恶痛绝——延迟不但会让您对自己的操作不再自信,更会摧毁一段被打磨了很久的旋...

17620
来自专栏java思维导图

从Java码农到年薪八十万的架构师需要掌握什么?

不管是开发、测试、运维,每个技术人员心里都有一个成为技术大牛的梦,毕竟“梦想总是要有的,万一实现了呢”!正是对技术梦的追求,促使我们不断地努力和提升自己。

14120

扫码关注云+社区

领取腾讯云代金券