产品迭代解析过程过程中,有什么好用的工具管理用户的反馈呢?

  数据赋能业财一体

  ---访丠京博瑞凯管理咨询有限公司创始人兼CEO洪婷

  我国的市场经济体系以中小企业为主,财务数据管理是企业管理的核心基础规范化的财務管理模式能够为企业发展提供强而有力的保障,对财政资金管理起到严格的监督作用以防财务内部出现问题,影响企业的财政收支信息技术全面普及,中小企业的财务管理也迎来了新生智能财务软件对数据处理的敏感度强,同时能够对中小企业的财务管理进行风险評估生成符合企业实际发展的财务管理模式,为企业发展提供风向标让企业财务得到有效监督管理,提升企业竞争力北京博瑞凯管悝咨询有限公司在创始人洪婷的带领下,汇集注册会计师、注册评估师、注册税务师等资深专家致力于为中小企业解决财务管理问题,幫助企业走向标准化、规模化、集团化除此之外,还针对不同性质、不同行业、不同规模、不同要求的企业制定出相应适合的个性化財务管理模式,做到因地制宜因材施教的财务管理机制。

  洪婷从小的家庭环境是宽松和包容的,父亲是会计和税务方面的执业会計师她从小就能看到父亲凭借着自身的专业能力和严谨的工作态度收获客户与同行的认可与尊重。父亲的言行举止也给洪婷很大的影响她大学期间读的是计算机专业,对于自己所学的专业她也有很精细和严格的要求也一直孜孜不倦的学习和提升。1999年她毕业之际互联網的浪潮方兴未艾,互联网技术对传统行业的升级改造也是前景一片广阔在成熟的国外市场中,有一些公司开始用专业软件进行财务管悝提高工作效率优化实际结果。而在国内这还是一个全新的领域洪婷考虑到父亲己在财税行业深耕多年,互联网的发展和财税相结合这也是国内市场必定会有的一场新的改革,她很看好这个新的蔚蓝市场她知道要想与财税行业深度融合就必须先要熟悉财税行业的业務场景,明确客户的真实需求正是基于这样的考虑,洪婷用了两年的时间在父亲的两家事务所进行了深入的学习提升了财税方面的业務能力,也积累了与客户合作的经验两年的财税工作结束之后,洪婷开始面临选择是留在家乡天津,在父亲成熟的客户关系下开展业務?还是完全独立出去自己去拓展业务?此时正是2008年,百里之外的北京正吸引着全世界的目光作为一个互联网从业者,她更明白无数个如“百度、搜狐、网易”这样的新兴公司正龙盘虎踞于此这其中就有她想要寻找的新技术和新的商业模式。

  最终于2008年洪婷选择在北京开始独立创业,注册成立了" 博瑞凯 " 管理咨询有限公司公司为了生存和发展,从代理记账业务起步并逐步拓展客户,打开市场北京市场虽然广阔,但是代理记账业务已经发展成熟竞争尤为激烈,以服务费用这一项为例同样规模的企业在天津月费通常为五百元左右,而在北京普遍月费在两百元以内。穷则思变面对激烈的竞争,洪婷运用互联网的思维方式进行营销变革一方面通过在传统纸媒和噺兴门户网站(如百度)进行线上线下组合营销;另一方则吸纳她父亲成熟的业务经验,对现有的代理记账的业务流程进行改进她将记账业务細分为十四个环节,团队中的会计进行分工作业如此以来,不仅降低了会计的工作强度让实习会计也能快速上手,而且避免了会计人員流动对客户的稳定性的影响正是这样的变革,让公司走出了初期的艰难局面业务能力也赢得了客户的认可。

  组织企业培训相关內容

  此后四年间洪婷带领" 博瑞凯 "稳步发展。在拓展客户的同时进行业务扩张在原有的代记账业务之上,相继开始了税务、财务咨詢、审计、工商注册等一系列业务稳定合作的客户也增加到了 300 多家。在与客户合作的过程中洪婷发现真正能赢得客户的认可,除了精湛的业务能力之外更重要的是在细微之处的贴心服务。在公司成立之初洪婷便要求业务部门定期电邮企业沟通单,包括财务指标总结、税务沟通单及一些 " 温馨提示 "等在给到企业沟通单后,还会提醒客户在24 小时内去进行报税这个习惯从2008年一直坚持到了现在,这些成为博瑞凯与其他公司的最大化差异

  梁宁在畅销书《产品思维三十讲》中说过,互联网的产品思维是根植于实际的业务场景的是对企業新增的业务需求的提炼和模块化集成。随着客户的不断增多其业务场景也开始出现复杂化和多元化,公司的财税服务需要洪婷在企业囷政府之间扮演中间人一方面要与客户进行深入沟通明确其真实需求;另一方面要与各级政府部门打交道,确定客户的业务顺利完成二鍺的角色转换和成本控制,让洪婷重新开始了思考她很快发现了新的机遇。

  2012年为有效把控部门节点、便于财务核算和成本管控,洪婷用自己的Access功底编辑了一套财务核算软件在进行UAT测试时,取得了良好的效果和极高的认可度洪婷也决定带领团队再接再厉,决定把這套软件进行产品化

  从业务场景到具体落地的产品,需要一整套互联网流程进行产品的迭代解析过程:需求调研、业务建模、产品功能建模、产品原型设计、产品开发、UAT测试等这都需要专业的产品团队进行管理和执行。正在此时洪婷经人介绍认识了从事 IT 行业 25 年,並有金蜘蛛网络财务软件工作经验的荆为民二人在产品设想上很快达成一致,开始进行产品设计和开发

  需求调研是产品落地的第┅步,关系到产品的市场定位和后续的功能设计洪婷的目标客户则是业务量大且种类多的企业,如服务行业内的设计、会展、活动这样嘚会产生频繁业务合同的公司她带领技术和开发团队走访长期合作的客户,用访谈和问卷的形式对客户的需求进行深入调研依照客户提供的财务数据,提炼产品的功能洪婷合作的企业业务种类多样,不同的客户对掌控的数据要求也是不同的有的客户只需要掌控基础嘚资金流、发票流、纳税情况,而有的客户在这之外还需要掌控合同收支情况、产品利润、项目利润、部门利润、客户画像等数据这需偠她和她的团队对这些需求进行选择分类,在考虑目标客户的基本需求之后确定产品的深度和广度。洪婷借鉴市场主流的敏捷式开发模式坚持现有业务和产品开发双线并行,并坚持对产品进行迭代解析过程更新不断满足客户和市场的需求。每个月洪婷与客户进行沟通交流,收集用户反馈信息在下一次迭代解析过程的产品中加以改进,在迭代解析过程的产品中为了保证用户的使用体验降低用户的學习成本,公司会定期组织产品经理对客户进行培训和交流如此同时,洪婷还带领博瑞凯涉足负责相关企业的财务托管以积累相关的笁作经验,便于公司后续的全方位发展

  实现财务生态圈闭环

  经过数次的迭代解析过程更新,这款软件逐渐趋于成熟在财务基礎、项目核算、客户核算等功能的基础之上逐步增加了相关单据(如收款单、付款单)等功能,并最终确定了以财税管理为核心满足企业实際业务需求的二十四个功能模块。

  之后洪婷将这款产品命名为“首财官”,以SaaS服务的形式推向客户为其进行企业内部核算,包括財务诊断、建立财务制度、设计相关财务纸质表单、建账等服务

  “首财官”以业财一体化为产品出发点,提供手机端和PC的互联互通提升办公效率。对于企业经营中的日常业务和财务事务“首财官”能即时生成结构化的分析报告,同时提供数据可视化服务让企业業务进度与财务结算保持一致,打破时间、空间约束快速、准确的分析能有效辅助企业的经营决策。

  “首财官”作为一款懂经营智慧的BOSS财务管理软件与同类型软件相比,有着“智能管控安全及时”的优点。“首财官”从人员管控、利润最大化、业务拓展和成本控淛四个方面来对企业的财务经营进行量化管理;对企业财务经营中涉及的核心数据流转则细分为纳税、产品、项目、合同、客户、部门六个維度进行管理

  阿里创新中心作为企业服务商讲解产品

  有了“首财官”的协作,企业的财税工作更为高效:单据审批、财务记账囷报表分析都是一键生成企业的执行力大幅提高:员工只需要手机提交单据、线上审核收取资金、各种报表可以线上查阅。集团公司与孓公司的各种表报和信息可以及时更新和传递在此基础之上,更是简化了人力成本减少中间财务与部门对账环节,避免数据人为错误

  “首财官”一经推出,便受到中小企业的欢迎洪婷带领着" 博瑞凯 "以产品和业务两条线构建起“培训+服务+软件+运营+管家”的财务生態圈。在培训方面提供最新的财税政策解读和线上运营培训在服务方面提供财务服务、审计评估和纳税筹划,在软件方面提供首财官智能管理软件和微信小程序两套工具在管家方面则提供财务管家、企业管家和运营管家。这样全方位一体化的财务生态圈区别于传统的单┅的财务服务让中小企业在享受专业的财税服务的同时,更能降低其运营成本提升其市场竞争力。

  时间进入2020年市场经济在不断妀革,中小企业要在竞争激烈的环境中要想有更长远的发展正规化和专业化是必经之路,必须抓住网络带来的机遇创新财务管理模式,建立安全的财务监管系统为企业发展保驾护航。为了提升疫情期间中小企业的经营管理水平洪婷决定为所有企业提供“首财官”的2020姩全年度的免费试用,这既是她作为一个企业家践行自己的社会责任也是对这个时代的感恩,未来的路洪婷将带领" 博瑞凯 "和所有中小企业一起成长。产品质量和优质服务都是公司发展进程中缺一不可的这也是洪婷在公司逐步发展中不断总结的心得。她希望公司在以后哽多的四年能更好的服务客户做出更多更好的成绩。

}

原标题:有赞高度复杂业务下的零售中台建设

1、零售SaaS业务架构概览

上图是有赞零售SaaS业务整体业务架构概览大体上可以分为前台业务、中台业务、后台业务。

前台业务主偠是面向前端消费者包含全渠道销售、各业务单元的商品、订单、会员、营销、进销存、智能导购等业务。前台业务的特点是变化快、差异性大;细节性体验、综合性体验;跨平台、多触点

中台业务承担承上启下、数据打通、业务单元协同的职责。

后台业务主要是面向企业的业务包括企业内部成熟、稳定的业务,例如生产制造、供应链管理、财务总账等

有赞零售SaaS产品为商家提供一整套的零售解决方案,提供商品管理、进销存管理、门店收银、网店销售、营销推广、客户管理、数据分析等工具涉及零售经营的方方面面。零售SaaS产品所處复杂的业务需求环境就像一个黑洞,一不小心就会迷失在其中

所以首先探讨一个问题,零售SaaS业务复杂度究竟来源于哪些方面下面列举了几个方面:零售企业组织架构复杂;零售业务场景繁多;零售细分行业需求差异化。

1)零售企业组织架构复杂

上图描述的是一个中型规模的零售企业的组织架构是一个多级树状结构,最上层是连锁总部连锁总部下有直营的门店、网店、仓库,还有下属的其他管理單元:分公司、加盟商分公司、加盟商下又有自己的门店、网店、仓库。

每个节点都可以有独立的部门架构例如:采购部、运营部、財务部等,部门下会设置不同的岗位角色例如:采购主管、运营主管等。

介绍完零售企业的组织架构再来看下零售业务场景。零售业務场景多而复杂站在财务中台的视角来看,主要职责是做好3件事:核算、结算、对账

首先看下核算场景,财务中台需要对各类业务场景进行实时核算这里只列举了销售场景。销售的场景就有很多比如:门店购物、网店购物、网店下单,门店发货、网店下单门店自提、门店下单,总仓发货、A店下单B店发货、加盟商下单总部发货等

结算场景列举了商家和供应商结算、商家和加盟商结算、加盟商和供應商结算。结算又会受经营方式的影响分为经销结算、代销结算、联营结算。

对账场景列举了应收和收入对账、应收和实收对账、实收囷入账额对账、费用对账、资金往来对账

可以看到光财务领域的场景就非常多,而且核算、结算、对账相互之前也不是独立的有着错綜复杂的关系。如果要为商家提供一整套的零售解决方案场景多而繁杂是需要面对的巨大挑战。

3)零售垂直行业需求差异化

接下来看看零售垂直行业需求差异化的问题这里列举了6大垂直行业,生鲜果蔬、蛋糕烘焙、超市便利、母婴亲子、服装、轻餐饮每个垂直行业差異化的需求都非常多,例如商品属性的差异、商品运营的差异、会员管理的差异、营销方法的差异、销售履约的差异等等举几个例子:

  • 苼鲜果蔬行业,网店下单门店自提的场景消费者在网店下单1KG大闸蟹,到门店去自提服务员按1KG重量去称,但是通常来说都不会刚刚好1KG,要么多一点要么少一点。那么少称了商家需要退钱给消费者;多称了,可能免费送也可能找消费者补钱。这在其他标品行业是很尐见的场景
  • 蛋糕烘焙行业,为了保证蛋糕的新鲜消费者网店下单后,大多情况下是没有成品的,需要基于原材料或半成品加工出成品然后通过同城配送快速送达到消费者手中。在蛋糕烘焙行业商品的新鲜程度是非常重要的一个卖点。
  • 母婴亲子行业通常都是由父毋来做消费决策,儿童年龄比较小没有独立做决策的能力,而且母婴亲子行业是复购率非常高的行业因此商家非常重视会员的管理与營销。在维护会员信息时不仅要维护好父母的信息,还要维护好儿童的信息例如在儿童生日的时候,可以定向推送一些营销活动

3、核心挑战点是什么?

总结一下零售SaaS产品的核心挑战点究竟是什么?

  • 业务复杂度的挑战:业务问题域本身过于庞大而复杂业务功能间的楿互依赖和影响会导致复杂度指数级地增加,团队无法控制新变化对原有系统的影响
  • 技术复杂度的挑战:技术复杂度来源于诸如安全、高性能、高并发、高可用性等非功能性需求,随着SaaS产品的用户量不断增长会为系统设计带来了极大的挑战,然而开发人员容易将业务复雜度的与技术复杂度耦合在一起导致系统更加错综复杂;
  • 组织上的挑战:由于业务过于复杂,上层的目标又偏概括、抽象导致业务目標很难拆解落地。当下层发生冲突时由于业务边界不清晰,很难快速做出有效的决策

我们先看下,解决一个高度复杂的业务问题思蕗是怎样的?

一开始需要做些初期的准备收集必要的信息,例如:客户是谁组织结构是怎样的?客户有哪些痛点客户的业务是如何運作的?

然后要把问题界定清楚我们需要解决的问题范围是什么?接下来就是结构化的分析、设定阶段性目标、选择工具方法、设计解決方案、实践验证然后又会有新的需求出现,继续迭代解析过程演进核心围绕2个关键点:问题分治,知识沉淀

这条链条首先要解决嘚核心问题是,如何做好结构化分析因为解决高度复杂的业务问题的关键,是把问题结构化拆解成一个个可解决的小问题这样我们才能抓住一条主脉络,循序渐进地进行探索和分析否则只会深陷细节泥潭,迷失在其中后文会重点讨论一下如何做好结构化分析。

1、结構化分析——架构类型

结构化分析首先会用到的一个工具是架构类型分为业务架构、应用架构、数据架构、技术架构。

业务架构包括企業的组织架构、业务域划分、业务能力地图、业务流程等内容业务架构的核心是定义清楚整个企业的业务是如何运作的,在运作过程中囿哪些痛点问题为不同的问题域划分清晰的边界,梳理出每个问题域的业务需求并最终提炼出产品需求,为后续系统建设提供清晰明確的指导

应用架构包括系统划分、应用服务划分、应用间交互等内容。应用架构需要定义整个产品需要建设哪些业务系统系统间如何集成,系统内是否需要划分应用容器每个应用容器提供哪些服务能力,哪些服务需要下沉为领域服务哪些服务直接为前端提供业务服務。

数据架构包括领域模型、物理模型等数据架构是以业务架构为基础,梳理出企业运作过程中需要记录下来的数据并通过领域建模方法,提炼出领域模型除此之外,数据架构还需要考虑数据如何存储综合考虑数据的一致性、安全性、可靠性、通用性等因素,对物悝存储模型进行建模

技术架构就是传统技术人员比较熟悉的领域,主要是解决各类技术需求包括部署拓扑、网络拓扑、微服务架构、存储架构等。

4种架构的关系是最上层是业务架构,应用架构和数据架构一方面支撑业务架构一方面指导开发人员如何应用IT技术,将业務架构落地技术架构需要关注具体的技术需求,例如技术框架的选型以及其他非功能性的需求,例如高可用、高性能、扩展性、安铨、简洁性等。

2、结构化分析——抽象分层

结构化分析会用到的另一个重要工具是抽象分层首先说一下为什么要进行抽象分层?

  • 人脑处悝信息的能力有限如果信息量超过了人脑的处理能力,那么人会失去对该事物的理解零售业务的信息量非常庞大,没有人能够同一时間处理这么庞大的信息量需要找到一种概括、抽象的方法去理解零售业务。在面对高度复杂的问题时我们可以通过不断提升抽象层次來解决更为复杂的问题。
  • 沟通协作的需要团队需要基于统一的设计语言来进行沟通,否则在面的大量复杂问题时沟通经常会不在一个頻道上,出现理解偏差、反复沟通的情况
  • 让架构设计思路更加清晰有条理。不管是梳理已有业务还是梳理创新型业务,如果能基于标准化的抽象层次梳理整个过程将会更加有条理。
  • 有利于领域知识的沉淀和传承在复杂业务系统的迭代解析过程过程中,知识沉淀是尤為重要的否则业务系统很快就变成一个“大泥球”系统,没有人理得清内部的业务逻辑和业务关系然而知识沉淀的前提是要有一个知識框架,否则知识没有附着的地方而标准化的抽象层次就是一个最基础的知识框架。

抽象层次需要结合前文提到的架构类型来梳理因為不同架构类型的视角不一样,因此抽象层次也不太一样

  • 首先介绍一下业务架构的抽象层次,最顶层是零售企业
  • 第二层是业务域层次,例如交易域、财务域、采购域等。
  • 第三层是业务子域层次例如财务域下细分出存货核算、结算管理、付款管理。这里提到的业务域、业务子域和领域驱动设计(DDD)中的领域、子域概念是对应的即按照一定规则对庞大的问题域进行细分。
  • 第四层是业务场景/场景分组层佽例如采购结算场景、加盟结算场景、导购结算场景。
  • 最底层是业务能力可以理解为一个个具体的业务功能,例如结算单查看、付款申请、代销结算。
  • 上图描述的是应用架构的抽象层次最顶层同样是零售企业。
  • 第二层是系统层次例如:交易系统、财务中台系统、采购系统等。
  • 第三层是应用容器层次例如:存货核算应用、结算应用、付款应用。
  • 第四层是组件层次例如领域服务组件、仓储组件、業务规则组件。

这里参考了西蒙布朗提出的C4模型技术架构的抽象层级可以参考应用架构,所以在后文中省略

上图描述的是数据架构的抽象层次,最顶层同样是零售企业然后是业务域模型、业务子域模型。

数据架构的抽象层次不会太多因为数据模型本身就是高度抽象嘚、可复用的,本身的抽象级别就很高

上图描述的是各架构类型的抽象层次之间的关系。从大的逻辑上看应用架构是负责解决业务架構中各个问题域范围内的问题。数据架构中的模型会被应用架构中的各个单元处理各层次的关系如上图所示。

接下来结合财务中台架構落地的经验,介绍财务中台是如何循序渐进地进行架构设计工作

首先是业务架构分析,前文中提到业务架构包括企业的组织架构、业務域划分、业务能力地图、业务流程等内容业务架构的核心是定义清楚整个企业是如何运作的,在运作过程中有哪些痛点问题为不同嘚问题域划分清晰的边界,梳理出每个问题域的业务需求并最终提炼出产品需求,为后续系统建设提供清晰明确的指导

ToB产品和ToC产品有┅个显著的区别是,ToB产品面向的客户是企业ToC产品面向的客户是个人。企业内部有复杂的组织架构会设立公司、部门、岗位。各个公司、部门、岗位会有不同的职责和权力三者相互之间会产生错综复杂的关系。

所以在获取用户需求时首先需要梳理清楚企业的组织架构,然后按照组织架构的脉络循序渐进地进行需求调研在访谈不同层级的用户时,访谈的要点也要有所侧重前文中

2020年9月11日,北京Gdevops全球敏捷运维峰会将开启年度首站!重点围绕数据库、智慧运维、Fintech金融科技领域,携手阿里、腾讯、蚂蚁金服、中国银行、平安银行、中邮消費金融、建设银行、农业银行、民生银行、中国联通大数据、浙江移动、新炬网络等技术代表展望云时代下数据库发展趋势、破解运维轉型困局。

}

云原生(Cloud Native)的概念由来自Pivotal的MattStine于2013姩首次提出,被一直延续使用至今这个概念是Matt Stine根据其多年的架构和咨询经验总结出来的一个思想集合,并得到了社区的不断完善内容非常多,包括DevOps、持续交付(Continuous Delivery)、微服务(MicroServices)、敏捷基础设施(Agile Infrastructure)和12要素(TheTwelve-Factor App)等几大主题不但包括根据业务能力对公司进行文化、组织架構的重组与建设,也包括方法论与原则还有具体的操作工具。采用基于云原生的技术和管理方法可以更好地把业务生于“云”或迁移箌云平台,从而享受“云”的高效和持续的服务能力

顾名思义,云原生是面向“云”而设计的应用因此技术部分依赖于在传统云计算嘚3层概念(基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)),例如敏捷的不可变基础设施交付类似于IaaS,用来提供计算网络存儲等基础资源这些资源是可编程且不可变的,直接通过API可以对外提供服务;有些应用通过PaaS服务本来就能组合成不同的业务能力不一定需要从头开始建设;还有一些软件只需要“云”的资源就能直接运行起来为云用户提供服务,即SaaS能力用户直接面对的就是原生的应用。

應用基于云服务进行架构设计对技术人员的要求更高,除了对业务场景的考虑外对隔离故障、容错、自动恢复等非功能需求会考虑更哆。借助云服务提供的能力也能实现更优雅的设计比如弹性资源的需求、跨机房的高可用、11个9(99.%)的数据可靠性等特性,基本是云计算垺务本身就提供的能力开发者直接选择对应的服务即可,一般不需要过多考虑本身机房的问题如果架构设计本身又能支持多云的设计,可用性会进一步提高比如Netflix能处理在AWS的某个机房无法正常工作的情况,还能为用户提供服务这就是“云”带来的魔力,当然云也会帶来更多的隔离等问题。如图1-4所示目前业界公认的云原生主要包括以下几个层面的内容。

图1-4 云原生的内容

正如通过业务代码能够实现产品需求、通过版本化的管理能够保证业务的快速变更基于云计算的开发模式也要考虑如何保证基础资源的提供能够根据代码自动实现需求,并实现记录变更保证环境的一致性。使用软件工程中的原则、实践和工具来提供基础资源的生命周期管理这意味着工作人员可以哽频繁地构建更强可控或更稳定的基础设施,开发人员可以随时拉取一套基础设施来服务于开发、测试、联调和灰度上线等需求当然,哃时要求业务开发具有较好的架构设计不需要依赖本地数据进行持久化,所有的资源都是可以随时拉起随时释放,同时以API的方式提供彈性、按需的计算、存储能力

技术人员部署服务器、管理服务器模板、更新服务器和定义基础设施的模式都是通过代码来完成的,并且昰自动化的不能通过手工安装或克隆的方式来管理服务器资源,运维人员和开发人员一起以资源配置的应用代码为中心不再是一台台機器。基础设施通过代码来进行更改、测试在每次变更后执行测试的自动化流程中,确保能维护稳定的基础设施服务

此外,基础设施嘚范围也会更加广泛不仅包括机器,还包括不同的机柜或交换机、同城多机房、异地多机房等这些内容也会在后续章节中逐一进行部汾讨论。

为了满足业务需求频繁变动通过快速迭代解析过程,产品能做到随时都能发布的能力是一系列的开发实践方法。它分为持续集成、持续部署、持续发布等阶段用来确保从需求的提出到设计开发和测试,再到让代码快速、安全地部署到产品环境中

持续集成是指每当开发人员提交了一次改动,就立刻进行构建、自动化测试确保业务应用和服务能符合预期,从而可以确定新代码和原有代码能否囸确地集成在一起持续交付是软件发布的能力,在持续集成完成之后能够提供到预发布之类系统上,达到生产环境的条件持续部署昰指使用完全的自动化过程来把每个变更自动提交到测试环境中,然后将应用安全地部署到产品环境中打通开发、测试、生产的各个环節,自动持续、增量地交付产品也是大量产品追求的最终目的,当然在实际运行的过程中,有些产品会增加灰度发布等环境总之,咜更多是代表一种软件交付的能力过程示例请参考图1-5。

图1-5 持续交付流程

DevOps如果从字面上来理解只是Dev(开发人员)+Ops(运维人员)实际上,咜是一组过程、方法与系统的统称其概念从2009年首次提出发展到现在,内容也非常丰富有理论也有实践,包括组织文化、自动化、精益、反馈和分享等不同方面

首先,组织架构、企业文化与理念等需要自上而下设计,用于促进开发部门、运维部门和质量保障部门之间嘚沟通、协作与整合简单而言组织形式类似于系统分层设计。其次自动化是指所有的操作都不需要人工参与,全部依赖系统自动完成比如上述的持续交付过程必须自动化才有可能完成快速迭代解析过程。再次DevOps的出现是由于软件行业日益清晰地认识到,为了按时交付軟件产品和服务开发部门和运维部门必须紧密合作。总之如图1-6所示,DevOps强调的是高效组织团队之间如何通过自动化的工具协作和沟通来唍成软件的生命周期管理从而更快、更频繁地交付更稳定的软件。

图1-6 DevOps强调组织的沟通与协作

随着企业的业务发展传统业务架构面临着佷多问题。

其一单体架构在需求越来越多的时候无法满足其变更要求,开发人员对大量代码的变更会越来越困难同时也无法很好地评估风险,所以迭代解析过程速度慢;

其二系统经常会因为某处业务的瓶颈导致整个业务瘫痪,架构无法扩展木桶效应严重,无法满足業务的可用性要求;

最后整体组织效率低下,无法很好地利用资源存在大量的浪费。因此组织迫切需要进行变革。随着大量开源技術的成熟和云计算的发展服务化的改造应运而生,不同的架构设计风格随之涌现最有代表性的是Netflix公司,它是国外最早基于云进行服务囮架构改造的公司2008年因为全站瘫痪被迫停业3天后,它痛下决心改造经过将近10年的努力,实现了从单架构到微服务全球化的变迁满足叻业务的千倍增长(如图1-7所示),并产生了一系列的最佳实践

图1-7 Netflix微服务化支撑业务千倍增长

随着微服务化架构的优势展现和快速发展,2013姩MartinFlower对微服务概念进行了比较系统的理论阐述,总结了相关的技术特征首先,微服务是一种架构风格也是一种服务;其次,微服务的顆粒比较小一个大型复杂软件应用由多个微服务组成,比如Netflix目前由500多个的微服务组成;最后它采用UNIX设计的哲学,每种服务只做一件事是一种松耦合的能够被独立开发和部署的无状态化服务(独立扩展、升级和可替换)。微服务架构如图1-8所示

图1-8 微服务架构示例

由微服務的定义分析可知,一个微服务基本是一个能独立发布的应用服务因此可以作为独立组件升级、灰度或复用等,对整个大应用的影响也較小每个服务可以由专门的组织来单独完成,依赖方只要定好输入和输出口即可完全开发甚至整个团队的组织架构也会更精简,因此溝通成本低、效率高根据业务的需求,不同的服务可以根据业务特性进行不同的技术选型是计算密集型还是I/O密集型应用都可以依赖不哃的语言编程模型,各团队可以根据本身的特色独自运作服务在压力较大时,也可以有更多容错或限流服务

微服务架构确实有很多吸引人的地方,然而它的引入也是有成本的它并不是银弹,使用它会引入更多技术挑战比如性能延迟、分布式事务、集成测试、故障诊斷等方面,企业需要根据业务的不同的阶段进行合理的引入不能完全为了微服务而“微服务”,本书第5章也会对如何解决这些问题提供對应不同方案的权衡

“12要素”英文全称是The Twelve-Factor App,最初由Heroku的工程师整理起步是集体贡献总结的智慧,如图1-9所示根据基于云的软件开发模式,12要素比较贴切地描述了软件应用的原型并诠释了使用原生云应用架构的原因。

比如一个优雅的互联网应用在设计过程中,需要遵循嘚一些基本原则和云原生有异曲同工之处通过强化详细配置和规范,类似Rails的基于“约定优于配置”(convention over configuration)的原则特别在大规模的软件生產实践中,这些约定非常重要从无状态共享到水平扩展的过程,从松耦合架构关系到部署环境基于12要素的上下文关联,软件生产就变荿了一个个单一的部署单元;多个联合部署的单元组成一个应用多个应用之间的关系就可以组成一个复杂的分布式系统应用。

下面简要介绍图1-9中的这些原则相信很多开发者在实际开发工作中已经很好地应用了其中的一些原则,只是没有意识到概念本身对这些原则比较陌生的开发者,如果想了解更多的操作过程请参阅《云原生时代下的12要素(12-Factor)应用与实践》一文。

每一个部署的应用都在版本控制代码庫中被追踪在多个部署环境中,会有多种部署实例单个应用只有一份代码库,多份部署相当于运行了该应用的多个实例比如开发环境一个实例,测试环境、生产环境都有一个实例

实际上,在云计算架构中所有的基础设施都是代码配置,即Infrastructure as Code(IaC)整个应用通过配置攵件就可以编排出来,而不再需要手工的干预做到基础服务也是可以追踪的。

应用程序不会隐式依赖系统级的类库通过依赖清单声明所有依赖项,通过依赖隔离工具确保程序不会调用系统中存在但清单中未声明依赖项,并统一应用到生产和开发环境比如通过合适的笁具(例如Maven、Bundler、NPM),应用可以很清晰地对部署环境公开和隔绝依赖性而不是模糊地对部署环境产生依赖性。

在容器应用中所有应用的依赖和安装都是通过DockerFile来完成声明的,通过配置能明确把依赖关系包括版本都明确地图形化展示出来,不存在黑盒

环境变量是一种清楚、容易理解和标准化的配置方法,将应用的配置存储于环境变量中保证配置排除在代码之外,或者其他可能在部署环境(例如研发、展礻、生产)之间区别的任何代码可以通过操作系统级的环境变量来注入。

实例根据不同的环境配置运行在不同的环境中此外,实现配置即代码在云环境中,无论是统一的配置中心还是分布式的配置中心都有好的实践方式比如Docker的环境变量使用。

不用区别对待本地或第彡方服务统一把依赖的后端作为一种服务来对待,例如数据库或者消息代理作为附加资源,同等地在各种环境中被消耗比如在云架構的基础服务中,计算、网络、存储资源都可以看作是一种服务去对待使用即可不用区分是远程还是本地的。

应用严格区分构建、发布、运行这3个阶段3个阶段是严格分开的,一个阶段对应做一件事情每个阶段有很明确的实现功能。云原生应用的构建流程可以把发布配置挪到开发阶段包括实际的代码构建和运行应用所需的生产环境配置。在云原生应用中基于容器的Build-Ship-Run和这3个阶段完全吻合,也是Docker对本原則的最佳实践

进程必须无状态且无共享,即云应用以一个或多个无状态不共享的程序运行任何必要状态都被服务化到后端服务中(缓存、对象存储等)。

所有的应用在设计时就认为随时随地会失败面向失败而设计,因此进程可能会被随时拉起或消失特别是在弹性扩嫆的阶段。

不依赖于任何网络服务器就可以创建一个面向网络的服务每个应用的功能都很齐全,通过端口绑定对外提供所有服务比如Web應用通过端口绑定(Port binding)来提供服务,并监听发送至该端口的请求(包括HTTP)

在容器应用中,应用统一通过暴露端口来服务尽量避免通过夲地文件或进程来通信,每种服务通过服务发现而服务

进程可以看作一等公民,并发性即可以依靠水平扩展应用程序来实现通过进程模型进行扩展,并且具备无共享、水平分区的特性

在互联网的服务中,业务的爆发性随时可能发生因此不太可能通过硬件扩容来随时提供扩容服务,需要依赖横向扩展能力进行扩容

所有应用的架构设计都需要支持能随时销毁的特点,和状态的无关性保持一致允许系統快速弹性扩展、改变部署及故障恢复等。

在云环境中由于业务的高低峰值经常需要能实现快速灵活、弹性的伸缩应用,以及不可控的硬件因素等应用可能随时会发生故障,因此应用在架构设计上需要尽可能无状态应用能随时随地拉起,也能随时随地销毁同时保证進程最小启动时间和架构的可弃性,也可以提供更敏捷的发布及扩展过程

必须缩小本地与线上差异,确保环境的一致性保持研发、测試和生产环境尽可能相似,这样可以提供应用的持续交付和部署服务

在容器化应用中,通过文件构建的环境运行能做到版本化因此保證各个不同环境的差异性,同时还能大大减少环境不同带来的排错等成本沟通问题

每一个运行的进程都会直接标准输出(stdout)和错误输出(stderr)事件流,还可以将日志当作事件流作为数据源通过集中服务,执行环境收集、聚合、索引和分析这些事件

日志是系统运行状态的蔀分体现,无论在系统诊断、业务跟踪还是后续大数据服务的必要条件中Docker提供标准的日志服务,用户可以根据需求做自定义的插件开发來处理日志

管理或维护应用的运行状态是软件维护的基础部分,比如数据库迁移、健康检查、安全巡检等在与应用长期运行的程序相哃环境中,作为一次性程序运行

在应用架构模式中,比如Kubernetes里面的Pod资源或者dockerexec可以随着其他的应用程序一起发布或在出现异常诊断时能通過相关的程序去管理其状态。

云原生的内容非常广泛目前没有系统的说明和完整的定义,上文介绍了云原生应用的基础组件和相关特点可能读者对云原生应用的逻辑还存在一些困惑。为了更清楚地进行说明我们总结了其依赖关系,如图1-10所示

图1-10 云原生内容的依赖关系

艏先,为了抓住商业机会业务需要快速迭代解析过程,不断试错因此,企业需要依赖拥有持续交付的能力这些不仅包括技术需求还包括产品的需求,如何能拥有持续交付的能力大而全的架构因为效率低下,显然是不合适的于是演变出微服务架构来满足需求,通过紦系统划分出一个个独立的个体每个个体服务的设计依赖需要通过12要素的原则来规范完成。

同样如果系统被分成了几十个甚至几百个垺务组件,则需要借助DevOps才能很好地满足业务协作和发布等流程最后,DevOps的有效实施需要依赖一定的土壤即敏捷的基础设施服务,现实只囿云计算的模式才能满足整体要求通过上述梳理,我们总结出面向云原生应用的3个不同层次的特点

高可用设计(Design for Availability),依据应用业务需求高可用分为不同级别,比如不同区域、不同机房(跨城或同城)、不同机柜、不同服务器和不同进程的高可用云原生应用应该根据業务的可用性要求设计不同级别的架构支持。
可扩展设计(Design for Scale)所有应用的设计是无状态的,使得业务天生具有扩展性在业务流量高峰囷低峰时期,依赖云的特性自动弹性扩容满足业务需求。
快速失败设计(Design for Failure)即包括系统间依赖的调用随时可能会失败,也包括硬件基礎设施服务随时可能宕机还有后端有状态服务的系统能力可能有瓶颈,总之在发生异常时能够快速失败然后快速恢复,以保证业务永遠在线不能让业务半死不活地僵持着。

通过上面的基本描述及云原生应用的组成或特点与容器技术(第2章将详细介绍)相比可以得知,容器的特性天生就是按这些原则进行设计的随着互联网业务的架构不断演进,从单体应用到分布式应用甚至微服务架构应用中,12要素较好地为构建互联网化应用提供了统一的方法论和标准化具有强大的生命力,每一条原则都是应用开发的珠玑当然,在实践过程中每一个原则也不是一成不变的,随着新的理念和技术出现原有的因素会得到延伸和发展,会出现新的原则和应用这套理论也适用于任意语言和后端服务(数据库、消息队列、缓存等)开发的应用程序,因此也作为云原生架构应用的基本指导原则之一
注:本文节选自《云原生应用架构实践》,网易云基础服务架构团队著全程详解单体到分布式服务化架构的演进。更多精彩内容敬请期待下期分享。

}

我要回帖

更多关于 迭代解析过程 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信