企业的应用架构演变之路

未来5年企业AI生态的3个演变方向:AI应用架构师的深度预判 这个场景的“北极星指标”是什么?对于“提升用户复购率”,北极星指标是“30天复购率”(即用户购买后30天内再次购买的比例)。还要定义“辅助指标”:比如“用户分层准确率”(将用户分成“高复购、中复购、低复购”三类的准确率)、“推荐商品点击率”(推荐的商品被用户点击的比例)。从“模型中心化”到“场景-数据双驱动”——先定价值,再找技术;从“单一技术栈”到“模块化组装+开源闭源协同”——用积木式架构应对复杂场景;从“工具化应用”到“自进化AI组织”——让AI成为能自我成长的业务伙伴。 阅读详情
作者|杨堃编辑|Gary

企业应用架构是指一整套软件系统的构建,通过合理的划分和设计组合在一起,支持企业方方面面的经营运作。不论是传统企业,还是互联网公司,发展到一定阶段,都需要一整套体系化的应用架构来支撑其运转。良好的、合理的应用架构可以支持企业高效开展业务,控制经营风险,而混乱的、不合理的应用架构则会限制企业的快速发展,成为企业增长与变革的瓶颈。

企业信息化建设已经发展了几十年,传统企业和成熟互联网企业的应用架构并没有本质的区别。本文将通过一个线下小型门店成长为多元化集团的发展历程,逐步向读者展示企业应用架构的演变和设计的理念。

完整的企业架构(EA,Enterprise Architecture)分析构建,包括业务架构、应用架构、技术架构、数据架构,本文聚焦应用架构,更加关注软件系统设计与公司经营管理的关系。不论是C端产品经理或者B端产品经理,理解应用架构的建设思路,能够帮助你更轻松的理解公司的业务运转,以及各个系统存在的目的与你所负责工作在整体团队中的定位和价值。

传统企业的应用架构演变1. 小门店的Excel管理之路

我们将从一个最简单的案例入手,来展开故事。假设你是一名个体经营者,在小区中开了一家小门店,售卖居民常用的生活用品。门店不大,只有十几平米,平常由你一个人负责经营管理,包括采购,摆货,销售。为了更准确、科学的打理你的生意,你设计了一个Excel文件来管理你的商品与销售数据。实际上你只需要做三张表格,第一张表格存储了你的货品信息,第二张表格存储了你的采购记录,第三张表格存储了你的销售记录。这三张标的结构和关系如下图所示。下图采用了ER模型来描述三张表的逻辑结构,*和1的含义是表和表之间的关联关系,例如采购记录和商品信息是多对一关系,即采购记录表中的每条数据只能对应商品信息表中的一条数据,商品信息表中的一条数据可以对应采购记录表中的多条数据。

因为你采用了科学的数据表格管理,记录了门店的所有采购入库和销售数据,这让你的经营变得井井有条,通过这些原始数据,你可以准确的管理库存,计算利润,掌握畅销品和滞销品,还能通过数据透视表制作销售日报和月报。实际上你通过以上三张表格管理自己的生意,已经是一个管理软件的雏形了。所有的软件系统无非都是对数据的增删改查操作,可以说,如果使用得当,Excel也可以做出一套小型的软件系统。

2. 小超市的轻量级ERP之路

因为你善于使用信息技术来协助你做生意,你的买卖发展迅速,很快,你将小门店升级成为一家小型超市,并且雇佣了几个店员来帮你。作为店长,你兴奋的绘制出自己的第一张组织架构图,梦想着事业会继续壮大。

因为经营的货品更加丰富,日交易量成倍增长,并且有好几名员工需要做数据录入分析工作,这时Excel已经难以满足经营管理的需要。因此明智的你在开店之前,就决定采购一套ERP软件来协助你管理超市。因为你还处于创业期,资金有限,通过仔细挑选,你选择了一套轻量级的ERP,并且只购买了其中的几个核心模块,这样既可以控制成本,又可以让你经营的软件设备升级。现在,我们可以绘制公司的第一张应用架构图,公司拥有一套系统,包含三个模块。

3. 通过CRM拉近与客户的距离

为了更加准确的理解、认识你的客户,同时也为了能够拉近你和客户的距离,你打算通过CRM软件进行更加科学的客户管理。你设计了一套会员积分制度,所有的客户都能免费办理会员,这样你就可以记录下关键的客户信息,而且你的小伙伴建议你开通一个微信公众号,让客户能够通过微信来查询自己的积分,这个主意太棒了!你追加购买了几个ERP的模块,虽然ERP中也包含了CRM模块,但是研究后你认为内置的CRM模块功能有限,不支持对接微信,营销功能也不够强大,因此你新购买了一套CRM软件,和ERP进行了一定程度的对接,同时申请了微信公众号,找外包公司做了一些定制化开发。这样上述想法就都实现了!我们绘制出公司的第二张应用架构图。

可以看到,核心的客户信息资产模块都在CRM中实现,其中内置了营销模块、消息推送服务Msg模块,包括SMS、EDM(Email Direct Marketing)和微信消息推送, CRM主要聚焦客户资料的管理和营销服务,主要用户为店长和运营人员;ERP主要聚焦于超市的进销存以及财务业务,主要用户为营业员、出纳、采购、库管和会计。请注意,这里已经产生了应用架构设计的概念,公共号,ERP和CRM每个系统都为了解决某一大类的业务问题而存在,有各自清晰地定位、分工和目标用户,每个系统相对独立又互有关联,内置若干模块,每个模块都是为了解决某一大类业务问题下的某一小类问题而设计。在这张图中我们使用了分层描述,靠近C端用户的微信公众号在最上层,支持业务运转的ERP放在中间层,偏底层的客户信息集成CRM放在最下层,这样可以清晰地看出几个系统的层次关系,同时也在一定程度反映了系统和业务之间的逻辑对应关系。

4. 中型连锁超市的架构之路

业务进展很顺利,你已经开了五家中型连锁超市了,员工数量达到了几百人。公司走上了正轨,标准化的管理分工已经成型,不同职能单元各司其职。为了有效管理团队,并且让内部流程更加顺畅,你邀请专业的IT咨询公司帮你重新梳理了公司的业务目标,组织架构,运营流程,通过引入OA,HRM以及重构ERP等手段,对不合理的制度,低效的流程进行了改造。公司成立了信息技术部,其中项目部配合咨询公司以及软件外包公司进行系统改造或实施新系统,运维部负责保证服务器、网络的稳定。

你理解数据对公司发展的重要性,所有的管理决策都应该基于对数据的分析和判断,因此你邀请咨询公司帮你强化公司的数据分析能力。咨询顾问建议你实施数据仓库(Data Warehouse)和BI(Business Intelligence)项目,原因有几点:1. ERP系统和CRM系统都有报表模块,但两个系统的数据相互孤立,不利于整合分析。2. 业务系统的底层数据结构并不适合做复杂的数据分析,常见的多维分析更需要一套数据仓库常用的星形数据结构和雪花型数据结构。3.成熟的BI软件套件可以让你的报表分析与多维数据探查更轻松,其中的仪表盘更能够让你轻松掌控公司全局的核心指标变化。4. 企业经营中很常见的一个问题就是经营分析指标统计口径太多,造成管理混乱和沟通障碍,除了在管理上规范公司级指标的定义,也需要一套底层数据架构,消除上游各个异构系统的孤岛和屏障,统一管理汇总数据和指标计算。

咨询顾问建议,虽然目前公司的业务系统还没有到非常复杂的阶段,但数据仓库可以帮助企业更快速高效准确的理解、捕获、使用数据,做好基础建设工作,培养员工的数据分析意识和方法,通过数据来进行决策。随着业务的拓展和系统复杂性的提升,数据仓库的存在价值将越来越明显。

在数据仓库项目中,同时构建了数据集市(Data Mart)。数据集市介于BI展现层和DW数据底层之间,是数据仓库的数据子集。数据仓库的服务对象通常为全公司或全集团,但是不同部门可能有自己的数据分析诉求与指标管理诉求,这时候通过统一的数据底层,封装出针对某个部门使用的小型数据集市,可以保证数据流的合理性、可追溯性,同时研发部门可以完全复用DW和BI的技术能力,轻松地设计实施DM。

如果希望数据仓库在企业中真正发挥作用,不仅仅是软件系统实施问题,更重要的是公司层面的经营分析思路体系化,指标管理规范化,以及数据部门组织架构、与业务部门合作流程设计问题,同时还需要提升全员数据化管理运营的概念和意识。软件本身并不能解决企业的问题,只有配套的架构、流程、制度与意识,才能发挥软件的功效。

5. 应用架构跟随业务而变

由于公司经营良好,很多商品可以从供应商处拿到很好的价格,经过供应商授权,公司决定开展2B业务,成立了大客户销售部,公司将作为供应商的B端渠道,挖掘企业客户。为了让销售工作高效展开,对销售人员进行严格的过程管理,同时也为了保留客户资料,避免销售独占客户资源,根据CTO建议,公司决定实施操作型OCRM(Operating CRM)项目。同时由于各部门经常出现个性化的软件开发诉求,软件外包维护的成本高,效率低,公司决定招聘研发团队,用自己的队伍进行软件的二次开发。

在设计OCRM系统时。CTO面临两个选择:

方案一:新做一套独立于现有CRM的OCRM

优点:OCRM系统已有成熟的软件可以选择,无需从头开发;两个系统边界清晰,分工明确,便于未来各自的发展与演变。

缺点:应用架构会略有复杂,需要将原有的CRM和OCRM做数据打通,对原有的客户模型做升级。

方案二:在原有的CRM基础上开发新模块

优点:新开发的模块完全基于公司业务流程和模式设计,适配程度高。

缺点:新开发模块成本高速度慢,系统边界模糊,导致以后维护升级时模块管理的混乱。

综合评估两套方案实现的成本和速度,考虑到对未来业务变化的灵活支持,同时为了避免影响核心CRM业务的稳定性,CTO决定采用方案一,让两个系统各自聚焦,互相独立,边界清晰,虽然无形中增加了公司应用架构的复杂性,但可以快速实施支持当前的紧迫业务,并灵活应对未来公司的销售业务变化。

一般来讲B端客户的数据模型和C端客户差异非常大,B端客户模型关注组织架构和人员角色的描述,C端客户模型关注客户本身个人信息的描述,即便应用系统中将客户模型和操作型系统分开建设,客户模型一定会做成两套以支持不同的上下游业务系统。上图为了简化表述,只绘制了一个模块“客户信息”,但读者应该认识到该模块应该包含B端、C端两套客户模型。实际上有的公司会明确将两套客户模型在应用架构中分开设计并且分别建设,以便更加准确的体现应用架构中的业务概念。

另外读者需要注意的是,广义上来讲,CRM代表一种企业对待核心客户资源的管理理念和运营方法,CRM是一种概念而非某一个独立的应用系统。大型的企业涉及多条业务线,不同的业务线有不同的客户群体,企业需要有统一的客户视图和管理理念,以及强大的IT系统支持,来实现准确的客户接触点管理,充分挖掘客户群体实现精准销售,积极有效的维护企业和客户的关系。CRM体系化的系统建设中包含了客户建模,会员积分管理,营销中心,销售线索和过程管理,小型数据仓库或数据集市,统一客户视图,客户画像和数据挖掘,电话销售中心等等。不同的企业对系统的划分和团队的管理各不相同,但所有CTO都应该明白CRM是一套应用体系,而不仅仅是某个单一的独立应用系统。

至此,我们已经绘制出一套一般企业的简化版应用架构图,以及一张常见的组织架构图。可以看到,应用系统的建设,是根据业务的发展变化逐步完成的,每个系统都有独立存在的意义和价值。

6. 传统企业如何管理软件开发

在上一节的组织架构图中,CTO引入了需求管理部的子部门。传统企业内部的软件升级开发,一般会由业务部门将需求提交给需求管理部受理,需求管理部常设BA岗位(Business Analyst),负责受理、评估业务方需求,形成软件方案设计,输出需求文档,提交给开发人员开发。BA非常像互联网企业的PM岗位,区别是互联网企业的PM决策权更高,更加深度的参与、影响业务。BA以及IT部门的的权责范围取决于企业对信息化建设重要性的认知程度,以及团队负责人在企业的决策权和影响力。一般来讲传统企业的CTO或CIO汇报对象为COO,很少进入公司最高决策层,而在互联网企业CTO或产品VP都属于最高决策层。

传统企业更加倾向于瀑布式软件开发,对研发、运维流程的管理更加严谨,因为传统企业业务变化慢,对系统的每一次调整改造都非常慎重,而互联网公司业务变化调整快,必然要求软件开发时效性高,对软件设计的严谨性做出一些让步,因为很有可能发生的情况是,软件还没有开发完毕,业务或流程已经再次发生变化。

企业的信息化管理有很多标准的管理模型,例如COBIT,ITIL,CMMI,ISO27001,覆盖了开发管理,服务管理,数据管理等方方面面的规范和标准。很多成熟的互联网企业也会执行使用这些标准来提升IT能力对企业管理效率的提升和经营风险的控制。

多元化业务带来的应用架构演变1.    在线商城业务带来了互联网化管理

公司的零售业务发展进入了瓶颈期,CEO需要寻找新的增长点。经过评估,决定开展电商业务,新成立了电商部,从市场上聘来了某电商平台VP作为部门负责人,直接给CEO汇报。为了学习互联网公司,以技术力量推动业务创新,电商部组织结构参考了一般互联网公司组织结构,有自己独立的研发团队,设置了产品岗位,产品技术总监给电商部负责人汇报。电商部受到CEO极度重视,给与极高自治权和最高资源支持,同时CEO还将之前线下的客服团队升级为公司一级部门,直接给CEO汇报,统一处理线上线下的客服与售后业务。

新业务开展,大家干劲十足,因为电商部产品技术总监和公司CTO之间不存在汇报关系,产品技术总监为了快速推进项目,所有决策基本只是告知CTO。产品技术总监作为纯互联网背景专家,认为购买现成软件套件不利于系统的二次开发和自主维护,长远来看会限制公司业务发展,希望整套系统实现自主研发。虽然CTO极力反对,但经过电商部负责人和产品技术总监的游说,CEO听取了总监的建议,并且总监承诺自己的研发团队效率极高,一定会在承诺之日交付系统。

产品技术总监设计的应用架构体系,包括PC和移动版的前端应用,以及完整的后端系统,包括订单、售后、客户信息、会员、营销、账号、CMS。此外,仓储、财务系统会接入现有ERP的服务,配送模块直接与第三方配送服务商系统对接。对于这个架构设计,CTO比较不满,认为客户信息和账号管理不应该重复建设,而应该统一规划管理,但产品技术总监一心快速推进实施,对于信息技术部开发效率低的情况他早有耳闻,他可不希望被一些不可控力影响导致自己的项目延期,因此CTO的抗议他不予理会。

升级后的客服部门,新建了20人坐席的电销中心,以支持主要来自于线上的电话客服诉求。新成立的客服团队需要CallCenter系统开展业务,虽然CallCenter的主要服务群体是线上业务的客服话务员,但CEO为了在一定程度上安抚CTO的不满情绪,将CallCenter项目安排给CTO负责。CTO采购了一套成熟CallCenter来支持400热线业务,对此安排电商部的产品技术总监没有什么异议,但在CallCenter的实施中却出现了问题。因为CallCenter系统只负责电话作业,其中的客户资料一般由上游系统提供。但是公司现有两套客户资料,一套是保存在CRM的线下业务客户资料库,一套是在线商城的客户资料库。为此只能在CallCenter中新增一套客户库,将另外两套客户库数据同步过来,这样客服人员才能在CallCenter中查到公司级别的完整客户信息。

2.    信息孤岛与主数据管理

电商系统如期上线,业务发展迅速,电商团队的运营和产品人员年轻,聪明,充满活力,思维活跃,玩法众多,电商技术团队响应迅速,产品经理和技术团队的无缝配合,让技术力量真正推动了业务的增长。公司赚钱了,老板很开心。但很多问题也同时暴露了出来。我们先来看看之前的应用架构。

之前为了快速上线,有一些应用架构遗留问题没有解决。现在公司有三套客户资料库,线下客户通过微信公共号访问CRM系统中的客户信息,在线商城的客户通过线上商城访问e-Store系统的客户信息。当客户致电400时,电销业务员(TSR)访问的是从e-Store和CRM同步过来的客户信息。

线上客户关注公共号后,查不到自己的资料,这让客户感觉很诡异。

线下客户想在线上商城下单,发现之前登记的账号不能使用,需要重新注册完善资料,客户很烦躁。

数据同步30分钟一次,有时候客户刚修改完资料再致电400,客服查到的客户信息不是最新的,让客户很生气,客服很苦恼。

有的客户喜欢打电话让客服改资料,因为客户资料是单向同步,客服无法协助客户修改资料,客户很气愤,为什么你们连这点服务都做不好!

很多客户在线上线下都消费,但由于在数据仓库中冗余出了两个客户对象,不论是线上团队还是线下团队,都无法做更准确的客户画像和跨渠道消费行为分析。

CEO很生气,找到CTO和电商产品技术总监,质问怎么回事。CTO回答,我们遇到了严重的信息孤岛问题!由于CRM和商城后台数据互相孤立,导致核心客户资源不同步,不统一,让公司无法得到一个完整准确的客户视图。如果要解决这个问题,必须对应用架构进行改造,并且改造比较耗时。CEO很郁闷,没想到应用架构不合理会影响到业务发展,也没有想到组织架构的设计会导致应用架构出问题。为此,CEO做了一些调整,产品技术总监实线向电商部经理汇报,虚线向CTO汇报;总体来讲产品技术总监对电商业务销售端负责,CTO对全公司IT架构管理和其他所有系统负责。经过善意的沟通,CTO和产品技术总监的矛盾消除了,大家决定合力解决问题。

解决数据信息孤岛的方法很简单,那就是只保留一份客户信息库,这份客户信息库保存最核心的,与业务单元无关的客户属性和资料。至于积分、会员等扩展属性依然由各个应用系统维护管理。调整后的应用架构图如下:

将客户信息库独立,商城、CallCenter、CRM和微信公共号通过统一接口调用Customer Profile存储的核心客户档案,不论客户或业务员从哪个端口查看或修改信息,变化对其他端口都是透明、实时的。实际上这就是客户主数据管理(Customer MDM)的设计理念。

在企业应用系统建设中,不可避免的会遇到信息孤岛问题,信息孤岛是指因为各种原因,每个应用系统独立建设时,没有和外界系统做良好的打通,导致应用系统之间存在流程或数据的孤立性,最终给业务带来严重影响。解决数据信息孤岛的经典方法就是主数据管理(MDM)的思想,主数据管理通过应用架构的拓扑设计,配合相应的管理手段,帮助企业存储、识别唯一的关键数据,避免企业内部关键数据的冗余和不一致问题。常见的主数据有客户主数据,商品主数据等。

主数据管理的设计理念应该自始至终贯穿企业应用架构的设计过程,需要注意的是,企业应该在合适的阶段实施主数据管理和治理。主数据将应用架构变得更复杂,在初期阶段实施时需要投入更多时间和资源,而在企业发展的某些阶段,快速迭代上线意味着对商机的捕获和市场变化的迅速跟进,一个合格的架构师应该在应用架构设计和公司业务发展之间做出合理权衡,要根据现实的情况和资源,敢于在应用架构的和理性上做出妥协和让步。

主数据经常作为底层数据应用来管理,因此在架构图中我们将它和DW并列画在最底层。

3.    抽离共性模块全面服务化建设

公司业务发展稳定,各个系统底层做过几次技术重构,性能更强健。为了让各个应用系统更加聚焦,提升稳定性,节约开发成本,避免重复劳动,CTO和产品技术总监讨论后决定对一些公有服务从各自应用系统中剥离,统一进行服务化改造升级,为以后公司新业务的开展打好基础。例如,将CRM和商城后台的消息模块功能合并,将商城支付模块单独剥离,设计实施了集成化的权限管理系统Auth,给全公司多个应用提供统一的权限管理服务,控制公司运营风险。

CTO和产品技术总监合作加强了数据团队建设,设立了数据挖掘团队,丰富了客户画像,加强了经营分析能力,产生了更多的策略输出。数据策略输出不仅给在线商城提供了更强劲的推荐策略,也为CRM,运营人员提供了更丰富的策略运营、精准定向活动推送支持。

4.    强健的底层架构快速支持新业务开展

公司在寻找新的增长点,计划开展个人理财业务。公司的组织架构有了新的调整,管理模式也有了新的提升,形成了集团化治理模式,成立了财务共享中心,人力资源共享中心。新设立的理财事业部,和零售事业部、电商事业部一起,调整为独立核算事业部编制,事业部聚焦经营和销售,集团层面给事业部提供基础运作支持。信息技术部也与时俱进,将之前的需求管理部调整为产品部,信息技术部主要负责CRM、CallCenter、ERP、OA、HRM、DW、BI等应用系统,保证集团职能部门运作,为事业部的应用系统提供基础架构和底层服务支持。

因为集团IT应用架构已经非常强健,理财业务的系统构建可以迅速展开,CTO和理财事业部的产品总监沟通后绘制了集团应用架构图,理财业务只需要建设一套C端APP和一套基本的管理后台,而类似于客户数据,支付,Push服务,DW和BI都直接使用集团现有系统,无需重新开发。


CTO和产品总监讨论后,认为上述架构图还存在一点问题,账号管理不应该单独创建,集团已经有着很成熟的统一客户管理理念,多套账号管理模块会再次造成信息孤岛问题。因此决定将现有的账号管理模块也进行平台化、服务化升级,给理财业务提供支持。集团层面的Passport系统诞生了。更新后的架构图如下。


这里顺便解释一下,为什么本文对所有软件系统都称为系统,而互联网公司则习惯称其为产品。

互联网的发展催生了产品经理的岗位。产品经理常分为C端产品经理,B端产品经理(包括商家端和运营管理中后台)等。B端产品线中,有CRM产品经理,供应链产品经理等。在互联网公司似乎不太在意区分产品和系统的叫法,到底两者有何区别?

实际上,所谓产品是指企业提供的商品或服务,给企业带来利润。早期的互联网公司多为虚拟经济形态,面向用户的软件系统就是公司给消费者提供的商品或服务,因此聚焦软件功能设计的人员被称为产品经理。而互联网公司是一类高度依赖信息技术能力驱动业务的公司,对各类软件系统都倾向于自主建设,因此不论是面向客户的系统,或面向企业内部的系统,软件设计人员都统一叫做产品经理,其职责定位就是负责软件的设计和实现,软件系统习惯被称为产品;而在传统企业,负责软件设计的人员一般都叫做需求分析师或系统分析员,软件系统习惯被称为系统。

其实怎么称呼都无所谓,本文统一叫做系统。

企业通用应用架构设计1.    通用企业应用架构图

对上文的应用架构图做一些简化和调整,以便更加准确的体现应用架构的共性以及与业务的对应关系,得到一张更加清晰简洁的企业级应用架构图。


第一层是对外系统。所有给企业外部客户使用的系统都在这一层,包括官网,普通用户或客户使用的C端。如果是类似于美团,天猫这种平台性质的业务,还会包括给商家使用的商家端。这类系统站在与客户接触的最前线,是公司实现商业模式的桥头堡。

第二层是对应C端系统的管理后台。常见的管理后台都会包含订单、CMS、商品等模块。每个C端业务形态都会对应一个管理后台,有些管理后台的模块可能会被抽离出来集中维护,例如风控,消息服务,客户主数据。

第三层是业务单元支持系统。绝大多数企业业务的开展,必然不能单纯靠线上的运作来实现经营,而可能包含电话销售,客服,地推,仓配等一系列业务单元共同运作。业务单元的运作需要强大的系统支撑。

第四层是职能单元支持系统。企业发展到一定规模后,必然会有完善的职能单元作为后勤部门支持业务单元的运转和企业的正常运作,例如法务、财务、人力、客服,每个部门的正常运转都需要相应系统的支持。

第五层是基础架构支持系统。信息化建设到达一定程度后,企业有必要将通用功能服务化,平台化,以保证应用架构的合理性,提升服务效率。这类系统主要给其他应用系统提供基础服务能力支持。

第六层是数据底层,和第五层类似,这一层主要集中在数据层面的统一和封装,对各个下游系统提供数据服务。

以上六层划分涵盖了企业所有的应用系统建设,每一个应用系统的存在都将定位在六层中的某一层。上图示例的系统涵盖了绝大多数正常企业经营运转常见的应用系统,在现实世界中,应用系统数量会远远多于上图所示,例如商业银行可能会有成百上千个系统存在。但是理解一个常见企业的组织结构,部门定位,以及上述应用架构图形成的原因,可以让你更准确快速的理解、掌握、设计任意一个应用系统。

2.    不同类型企业的应用架构图示例

因为一般企业的组织架构设计,职能单元的设计基本没有太大区别,而以上简化版的应用架构图映射了一个标准化企业的各个常规业务单元,且涵盖了绝大多数企业中标准的应用系统,所以我们可以将不同互联网企业的应用架构图映射到上图中。下面我们用三个例子,向读者演示不同业务形态、发展阶段的公司,其应用架构的可能形态。作者并未在以下公司任职,或与相关内部人员探讨过其公司应用架构,以下示意图均为作者根据几个公司的业务特点和发展阶段,所做的推测。

首先以美团点评为例。美团的业务模式主要为供需平台建设,帮助消费者和服务提供方撮合交易。外部系统包括了C端系统和商家端系统,C端系统为消费者常用APP,商家端系统为商家提供商品管理,交易管理,推广管理,经营分析等功能。C端或商家端都对应后端管理系统,方便企业内部对整个平台进行管理、营销、风控等。平台需要发掘更多的商户资源入驻,因此会有销售过程管理的OCRM系统;平台需要对C端客户提供客服与售后支持服务,相信美团点评的业务量,一套专业的CallCenter系统必不可少;美团提供了自营的配送服务,TMS系统必然成为标配(也有可能是SCM中的模块)。由于美团业务不涉及自营的实物货物买卖服务,没有仓储体系,因此推测没有WMS系统(或者ERP中包含了WMS模块但是没有启用)。O2O业务需要管理大量线下门店,因此GIS(Geography Information System)系统不可或缺,对于实力较强的公司,可能还会开发独立的POI(Point of Information)管理系统(也有可能是GIS中的模块)。至于财务、OA、Passport、Auth、BI、DW、MDM等,必然都是公司标配。

接下来再以今日头条为例。今日头条构建了信息流资讯类C端,吸引网民使用,这类产品最常见的盈利方式为广告变现。在公司经营之初,可能采取了市面上的DSP平台来完成APP的广告管理(当然也可能从来没有采用过),为了更好的设计广告产品,相信现在一定有自己的广告投放管理平台,因此公司会有给广告主使用的B端广告投放管理系统。(当然也有可能还没有这类平台,作者在百度工作时很多商业变现产品投放管理都是PM和广告主线下沟通后通过内部平台操作的)。因为业务模式以广告投放为变现手段,因此后端系统可能没有交易类后端复杂,但基本的CMS和风控(反垃圾、反作弊、合法合规)必然是有的。

公司需要盈利,就需要售卖产品,售卖产品永远不可能只在线上运作,必然会有BD团队支持,因此今日头条也会有CRM系统,管理对象为广告主而不是网民。但是WMS、TMS系统这类系统估计就不需要了。至于CallCenter,笔者查询了官网,没有找到相关的客服热线,猜测还没有建设。今日头条的早已度过创业期,标准的管理软件应该配备齐全,例如OA,HRM;不同的基础架构支持系统,在当前阶段有可能有,也有可能没有,例如Auth,Pay,MDM等。作为一个纯技术公司,BI,DW当然是标配。

最后的例子,我们挑一个相对规模小,产品形态单一的例子,例如墨迹天气,万年历这类工具类应用的公司。这类公司在创业初期,不考虑变现的情况下,团队小,产品简单,应用架构图也会非常简单,在产品发布时,只需要实现官网、C端、后台管理、账号和会员管理就足够了。当然随着公司的发展,常见的变现手段之一就是广告投放,可能会继续演变到类似于今日头条的应用架构。

以上举了三个例子,让读者更好的理解应用架构演变和公司业务模式以及发展阶段的关系。在实际工作中,应用架构的建设与面临的情况会复杂得多,只要理解了以上简化版的例子,可以更容易理解实际工作中的场景。

3.    企业应用架构设计的一些建议

最后,我们来谈一谈如何合理的设计企业应用架构。不论是架构师,产品条线负责人,或某个系统的产品负责人,都要有架构设计的理念和知识,尤其是后端产品经理,必须充分理解企业应用架构的基本概念。这里给出一些应用架构设计的建议。

系统定位和边界要清晰,对应的业务定位和边界要清晰

一套应用系统的存在,都是为了解决某一类业务问题,对应某一个业务板块。如果业务板块或业务单元定义模糊,也会导致对应的应用系统定位混乱。

系统要实现松耦合,高内聚

系统要对外界透明,简单,易理解,与外部系统的接口要简明,扼要,灵活。内部模块高度聚合,粒度越细越不可拆解。

易变的,尝试中的新业务要避免影响现有业务的稳定性对新业务的支持,可以考虑新建独立微小型应用系统,以便避免改造成熟核心系统,影响其稳定性和健壮性。

系统之间数据要实现单向流转

系统之间尽量保证单向数据流转,确保数据流可回溯,数据的一致性和可追溯性。混乱的数据流转管理会造成应用架构管理的灾难。

架构设计核心目标是支持业务,有些时候不合理的存在是合理的

应用架构存在的首要目标是支持业务,很多成长性企业或初创公司面对生存的压力,不能为了保证架构的合理性而拖延系统实施速度导致企业错过发展时机。这种情况在互联网型企业更为常见。业务还在试错期,系统需要尽快保证支持业务试错,如果一上来就谈论整体架构的合理性,很可能花费巨大成本实现了合理架构后,新业务已经取消或失败。优秀的架构师和CTO要懂得在合理架构设计和灵活多变的业务发展之间做出智慧的权衡取舍。

对于CTO或公司架构师,要保证整体企业应用架构的合理性,只要大框架合理,局部的偏差可以忽略,修正的成本也比较小,如果大框架有偏差,修正的代价会非常高。对于产品条线负责人,要保证局部框架的合理性,避免出现设计不合理造成的返工和补救工作。很多时候架构师或条线负责人要做出判断,是做一套新系统,还是修改老系统,新系统如何定位,老系统如何调整定位;数据如何流转,系统之间如何关联,底层数据如何打通;是否要复用其他系统模块,是否要将某些模块抽象化,服务化,平台化。对于产品经理,要在系统级别的粒度做出类似问题的判断,能够识别出可能存在的系统演变风险,及时升级控制不了的问题,避免做出错误决策。

企业架构是一套庞大复杂的体系,本文是对其中应用架构部分,结合作者实际工作经验的浅薄理解,业界有着众多的企业架构建设规范和指引,例如Zachman,EAP,TOGAF,这些框架涵盖了信息技术和企业战略结合实施的方方面面,感兴趣的读者可以做更深入的学习。

JEE技术在移动互联网中的应用--技术架构演变图 非常详细的介绍了JEE在移动互联网上的应用,以及随着访问量的增长,系统面临大规模的并发之后的架构变迁全过程 立即下载

相关推荐

企业应用系统架构与设计模式

基于.net的企业应用系统架构与设计模式

51种企业应用架构模式详解

我的职业生涯专注于企业应用,因此,这里所谈及的模式也都是关于企业应用的。(企业应用还有一些其他的说法,如“信息系统”或更早期的“数据处理”。)那么,这里的“企业应用”具体指的是什么呢?我无法给出一个精确的定义,但是我可以罗列一些个人的理解。先举几个例子。企业应用包括工资单、患者记录、发货跟踪、成本分析、信用评分、保险、供应链、会计、客户服务以及外汇交易等。企业应用不包括汽车燃油喷射、文字处理、电梯控制、化工厂控制器、电话交换机、操作系统、编译器以及电子游戏等。企业应用一般都涉及持久化数据。

努力是为了站在万人之中,成为别人的光 1万+

从一个故事说起,谈谈企业应用架构的演变史

企业应用架构是指一整套软件系统的构建,通过合理的划分和设计组合在一起,支持企业方方面面的经营运作。不论是传统企业,还是互联网公司,发展到一定阶段,都需要一整套体系化的应用架构来支撑其运转。良好的、合理的应用架构可以支持企业高效开展业务,控制经营风险,而混乱的、不合理的应用架构则会限制企业的快速发展,成为企业增长与变革的瓶颈。企业信息化建设已经发展了几十年,传统企业和成熟互联网企业的应用架构并没有本质的区别。完整的企业架构(EA,EnterpriseArchitecture)分析构建,包括业务架构、应用架构、技术架构、数据架构,本文聚焦应用架构,更加关注软件系统设计与公司经营管理的关系。不论是C

论企业架构的演变

个人技术总结

m0_56182782的博客 331

AtmelStudio 7 ASF库学习笔记一:新建工程、配置时钟、下载程序和查看官方例程

由于需要学习一下atmel的atsaml 系列,使用AtmelStudio 7开发,之前主要用STM32,现在看到Atmel的库函数,其实是有些类相似的。 ASF3的库对应ST的标准库。ASF4对应ST的HAL库,Ateml Start对应STM32CubeMX。但在这里还是用ASF3来开发,因为Ateml Start还不支持我的这个芯片,而且和STM32的HAL库类似,ASF4为了好移植都是底...

yxy244的博客 8653

腾讯云DBA面试(一面)

在第二阶段,根据RM返回的结果,如果涉及分布式事务的所有RM都返回可以提交, 则TM给RM发送commit的命令,每个RM实现自己的提交,同时释放锁和资源,然后RM反馈提交成功, TM完成整个分布式事务;根据事务所处的阶段,可以回滚到具体的版本,实现一致性。1.并发执行的事务,在prepare阶段,redo log先写文件缓存,第一个领头的事务,在等待n个事务后, 在第一个事务去刷写磁盘时,会把同组的其他的事务,也一起刷写到磁盘上,这样就减少了刷盘的次数,降低了磁盘的IOPS。分布式锁是怎么实现的?

u012565458的博客 1977

互联网应用架构的演进(八大架构的演进过程)

博主最近在学中间件,理解互联网应用架构的演进过程,对于理解中间件在整体结构中的定位是十分重要的。

凡事都是靠练习 1484

RK3399平台开发系列讲解(内核入门篇)1.1、通过sysfs清楚了解设备的系统状况

文章目录1、不敢高声语,恐惊天上人:sysfs目的2、窥一斑而知全豹:sysfs目录介绍3、千丝万缕:sysfs中要素的关系4、数据观星:sysfs中相关结构体 1、不敢高声语,恐惊天上人:sysfs目的 我们想通过sys下面的目录和文件清楚的了解跑Liunx系统的嵌入式设备的系统状况。 2、窥一斑而知全豹:sysfs目录介绍 sysfs把连接在系统上的设备和总线组织成为一个分级的文件,它们可以由用户空间存取,向用户空间导出内核的数据结构以及它们的属性。sysfs的一个目的就是展示设备驱动模型中各组件.

内核笔记 1万+

系统架构的演变

随着互联网的发展,网站应用的规模不断扩大,常规的应用架构已无法应对,分布式服务架构以及微服务架构势在必行,必需一个治理系统确保架构有条不紊的演进。单体应用架构 ===> 垂直应用架构 ===> 分布式架构 ===> SOA架构 ===> 微服务架构 ===> 悄然兴起的Service Mesh(服务网格化)。

weixin_52572813的博客 838

Java后端新人入职第一天,环境搭建,全看这篇就行了

本文主要是记录一下一个新人java后端开发来到一个新公司,如何快速完成环境搭建,本文意旨一个小时搞定所有环境搭建,让你更快加入到新环境。包括Java、Maven、Tomcat、idea、Redis、Mysql等等,还附带对应安装资源包,我这里就以目前比较流行的版本进行详细说明。

qi_ming88的博客 9279

1、符号回归:原理、应用与实践

本文全面介绍了符号回归(Symbolic Regression)的原理、发展历程、核心算法及其在科学与工程领域的广泛应用。文章从基本概念出发,详细阐述了基于遗传编程的符号回归机制,并探讨了其在游艇水动力学、化学过程、锂离子电池、生物医学等多个领域的实际应用。同时,博文还涵盖了高级技术如知识集成、系数优化、预测区间计算及微分方程发现等内容,对比了开源与商业软件工具,并展望了未来发展趋势,旨在为研究人员和从业者提供一本实用的符号回归指南。

ipfs8storage的博客 248

【软件架构】软件的十二种架构简介

微内核架构区分了基本的系统功能和可扩展的应用功能,核心系统提供最基本的操作,而其他功能则通过插件或模块的形式添加。这种架构的关键在于一个小型的内核负责提供最基础和通用的功能(如低级内存管理、设备驱动等),而更高级的功能(如用户界面、应用程序等)则作为独立的组件或服务存在,这些组件在运行时与微内核通信。在选择架构时,重要的是要根据项目的具体需求、团队的能力、预期的系统规模和性能要求来决定最适合的架构模式。每种架构风格都有其优势和局限性,选择哪一种架构取决于具体的项目需求、团队的技能以及系统未来的发展方向。

weixin_46453070的博客 1万+

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的商品识别系统(深度学习+UI界面+训练数据集+Python代码)

随着新零售和智能仓储的快速发展,商品识别技术成为计算机视觉领域的重要研究方向。本文详细介绍了基于YOLO系列算法的商品识别系统的完整实现方案,涵盖算法原理、数据集构建、模型训练、系统集成和可视化界面开发。通过对比YOLOv5到YOLOv8各版本性能差异,我们构建了一个高效、准确且用户友好的商品识别系统,并提供完整的代码实现。

YOLO 283

深度|从一个故事说起,谈谈企业应用架构的演变史

九年产品老司机,作者从一个故事说起,将企业应用架构的演变史娓娓道来,全文1.1万字,强烈安利各位涉及相关产品的童鞋收藏,不时拜读。 企业应用架构是指一整套软件系统的构建,通过合理的划分和设计组合在一起,支持企业方方面面的经营运作。不论是传统企业,还是互联网公司,发展到一定阶段,都需要一整套体系化的应用架构来支撑其运转。良好的、合理的应用架构可以支持企业高效开展业务...

进阶之旅 1041

AI人工智能代理工作流 AI Agent WorkFlow:在股票市场预测中的应用

AI人工智能代理工作流 AI Agent WorkFlow:在股票市场预测中的应用 作者:禅与计算机程序设计艺术 / Zen and the Art of Computer Programming 关键词: AI Agent, W

AI天才研究院 859

图像处理:张量分解在图像处理领域的应用

随着计算机视觉和图像处理技术的快速发展,图像数据呈现出高维、多模态、海量等特点。传统的矩阵分解方法已经无法有效处理这些复杂的图像数据。张量分解作为一种高阶矩阵分解方法,可以很好地捕捉图像数据的高维结构信息,在图像处理领域展现出巨大的应用前景。本节介绍几种常用的张量分解算法,包括高阶SVD(HOSVD)、Tucker-ALS、CP-ALS等。这些算法的核心思想是通过迭代优化的方式,交替更新张量分解的因子矩阵,直到收敛为止。综上所述,本文系统地介绍了张量分解技术在图像处理领域的应用。

AI天才研究院 7101

漫谈企业应用架构的演变 CRM & etc

漫谈企业应用架构的演变 goYangKunhttps://mp.weixin.qq.com/s?__biz=MzIzMTc3NTA2NQ==&mid=2247483698&idx=1&sn=0dbf935456bd3671f0774c57e1b0e54e&chksm=e89e4f04dfe9c612e2a6d1475709344dfe0348c80aa7f3f05...

weixin_30892037的博客 117

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

企业应用架构的演变史

而互联网公司是一类高度依赖信息技术能力驱动业务的公司,对各类软件系统都倾向于自主建设,因此不论是面向客户的系统,或面向企业内部的系统,软件设计人员都统一叫做产品经理,其职责定位就是负责软件的设计和实现,软件系统习惯被称为产品;综合评估两套方案实现的成本和速度,考虑到对未来业务变化的灵活支持,同时为了避免影响核心 CRM 业务的稳定性,CTO 决定采用方案一,让两个系统各自聚焦,互相独立,边界清晰,虽然无形中增加了公司应用架构的复杂性,但可以快速实施支持当前的紧迫业务,并灵活应对未来公司的销售业务变化。

jnrjian的博客 625

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

简单聊聊企业应用架构的演变

前言 从计算机诞生到现在其实也就短短几十年, 从最早的军事使用,到投入商业, 直至现在走入寻常百姓家中。用日新月异来形容毫不为过。 企业的服务框架, 也随着计算机的发展, 层层迭代, 由最早的单一型应用服务发展至现在满足于几亿甚至几十亿的人民的大型服务 框架的演进 一、垂直型服务 单一型应用 早期, 企业的对外提供的服务比较单一, 客户流量也相对不足。 因此将所有的模块,代码打包在一个项目中,...

weixin_34194087的博客 179

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

企业级应用架构演变

原始版:用户—服务器—数据库优点:维护简单缺点:①单节点②无容灾③无负载动静分离:用户—nginx+ajax+rest api—多台服务器—数据库使用nginx访问静态资源配合ajax来减少服务器和用户的交互流量(json传输),nginx负载均衡。缺点:①安全性低(暴露接口给用户)②session持久化问题高速缓存:用户—nginx+ajax+rest api—多台服务器—缓存—数据库nginx...

w_rcss的博客 876

【转】深度|从一个故事说起,谈谈企业应用架构的演变史 | 人人都是产品经理

深度|从一个故事说起,谈谈企业应用架构的演变史 | 人人都是产品经理 http://www.woshipm.com/pd/586436.html

Jerry_liu20080504的专栏 349

系统从初期到支撑亿级流量,都经历了哪些架构上的演变?

写在前面随着互联网的发展,互联网企业的业务也在不断的飞速发展,进而导致系统的架构也在不断的发生着变化。总体来说,系统的架构大致经历了:单体应用架构—>垂直应用架构—>分布式架构—>SOA架构—>微服务架构的演变。当然,很多互联网企业的系统架构已经向Service Mesh(服务化网格)演变。今天,我们就一起来聊聊关于系统架构的演变这个话题。单体应用架构在企业发展的初期,一般...

十指波课堂的博客 171

Java企业级应用架构

<br />Java企业级应用架构设计中的分布式结构大致可以分为单级结构、2级结构、3级结构和N级结构。充分理解和应用分布式结构可以更好的理解当代网络计算的现状,设计出更优的企业级应用程序。<br /><br />  长久以来,长沙java培训企业级版本(Java EE)已经成为了众多产业领域(如银行业、保险业、零售业、酒店业、旅游业以及电信业等等)进行企业商务应用开发和部署的平台选择。Java EE之所以应用如此广泛,其原因在于,Java EE可以为构建健壮、高扩展性的分布式应用系统提供标准化的平台,而这

Wangmx86的专栏 2567

1.企业应用架构模式 --- 分层

企业应用架构模式 --- 分层 在这种组织之下,上层使用了下层定义的服务,而下层对上层一无所知。另外,每一层对自己的上一层隐藏其下层的细节。 分层的好处: 1.在无需过多的了解其他层的基础上,可以将某一层作为一个有机整体来理解。 2.可以替换某一层的具体实现,只要前后提供的服务相同即可。 3.可以将层次间的依赖性减到最低 4.分层有利于标准化工作 5.一旦构建好了某一层,就可以用它...

enlyhua的专栏 1315
上一篇: centos搭建gitlab服务器
下一篇: Springboot+mybatis实现typeAliasesPackage正则扫描package中的bean
牧竹子
博客等级 码龄17年 572粉丝 233原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值