做SaaS的程序员们,是时候关注企业架构了
SaaS赛道是一个超大赛道,足够容纳上万家服务商,不太可能有哪个服务商能满足所有场景,大部分SaaS服务商在某个垂直领域,提供差异化的产品和服务。SaaS产品大部分都是面向B端客户,少部分面向C端客户,本文主要讲的B端SaaS产品。
B端SaaS产品的挑战
B端SaaS产品为企业提供协同办公的工具,帮助企业解决某类经营管理问题,核心价值在于增加收入、降本提效、管控风险。一般会按业务垂直或行业垂直来细分,业务垂直型的SaaS产品有CRM、人力资源、ERP、推广营销、财税、OA等细分市场;行业垂直型的产品有零售、餐饮、旅游、教育、医疗、物流等细分市场。
B端SaaS产品有以下特点:
客户是一个群体:B端SaaS产品为某个企业组织服务,一项业务目标通常需要由多名角色完成,例如,订单履约流程,需要消费者、运营人员、仓储人员、配送人员共同完成,产品帮助他们高效完成分工协作。
功能繁杂:由于B端SaaS产品涉及企业经营的方方面面,关联的用户角色多、业务流程长,反应到产品上,菜单、界面、配置项特别多,复杂度远高于C端产品。为了实现一项功能需求,往往会影响其他许多功能,需要进行全面的梳理,考虑各种极端情况,才能保证整体功能正常。
定制化功能:B端SaaS产品必然会有很多定制化需求,如果一味抗拒,很容易丢掉一些优质客户,但如果大包大揽地接受,系统复杂度会指数级上升,高昂的研发维护成本将很难承受,所以如何处理好定制化需求,是一项非常艰巨的任务。
见效慢、难量化:由于B端SaaS产品的客户是一个群体,产品上线新功能,通常是管理层先评估,能否在企业中适用,如果合适,才会组织一线人员,进行操作培训。这样一来一回,可能要2个月后才有客户正式使用新功能。其次,业务见效的影响因素非常多,很多时候并非因为产品设计问题。
这些特点都会导致SaaS产品的软件架构错综复杂,很容易严重腐化,演变成难以维护的“大泥球”,最终导致产品丧失竞争力,被市场淘汰。
SaaS产品的生产系统简易模型
通过一个SaaS产品的生产系统的简易模型,来描述SaaS产品的各个发展阶段的状态。
生产系统刚开始的状态
业务越来越复杂,架构腐化严重,生产系统的状态
期望的生产系统状态
企业架构是什么?
企业架构既包括对企业的愿景、战略、业务、组织的分析,又包括基于业务架构进行的应用系统分析与设计,是非常全面的架构设计框架。但很少有程序员了解过企业架构,更别提在软件研发过程中应用企业架构。然而,当下消费互联网的流量见顶,产业互联网必将成为未来趋势,企业架构也会越来越普及,谁先上船,谁就有了先发优势。
企业架构的历史
1996年,克林格.科恩法案颁布,美国联邦政府立法,强制要求政府机构使用企业架构理论构建自己的IT系统,最重要的机构是国防部、财政部,这一举措,直接让政府机构的数字化水平,像坐上火箭般高速发展。
同一时间,大名鼎鼎的TOGAF也在猥琐发育,它大量参考了政府机构的企业架构理论,沉淀出一套更加通用的企业架构方法论。
目前80%的福布斯排行榜前50名的企业,以及60%的美国500强企业,都在使用TOGAF理论改善自身的IT架构。
但是,目前中国各行各业对企业架构理论的理解和应用还处于非常初期的阶段。
企业架构期望解决的痛点问题
信息孤岛:业务与IT技术存在信息鸿沟,各业务域间存在信息鸿沟,协作效率低下。
标准不一:业务概念非标准化,系统边界划分复杂混乱,技术标准不兼容。
灵活性差:新业务无法基于已有的解决方案和能力快速组装上线,业务无法快速迭代创新。
企业架构的价值
认知框架的价值
有些人可能会问,认知框架能有什么价值?常见的价值不是新签客户数、客单价、销售收入这些吗?说的没错,这些都是最直观的业务价值,但架构想创造的是更深层次的价值,并不是很直观。
要说清楚认知框架的价值,首先要了解什么是认知负荷。认知负荷是专业的心理学理论,简单来说就是,人脑的短时记忆和处理的信息数是极其有限,一般人就2-3条信息,牛掰点的4-5条。但是,长时记忆的容量几乎是无限的,长时记忆就是我们积累的知识。知识以框架的形式存储于长时记忆中,框架就是根据信息元素的使用方式来组织信息,它提供知识组织和存储的机制,可以减少短时记忆负荷。
说人话就是,人脑的短时记忆和长时记忆,可类比为内存和硬盘,人脑的内存容量就芝麻点大,只能存储2-3条信息,但硬盘空间是无限的。为了提高人脑处理效率,就必须将信息进行抽象,原来有30条信息,抽象后就变3条了,这样就能处理过来了,而抽象的框架就是我们要说的架构。
其实整个研发周期,真正在生产(敲代码)的时间非常少,可能连20%都不到,产研团队大部分时间都花在澄清信息和认知信息上,有了认知框架,能够显著降低整个团队的认知负荷,进而极大地提升生产效率。
质量提升的价值
这个比较好理解,通过架构规划和治理活动,可以有效提升整个软件系统的质量属性。
产品层面的质量属性:
功能性:指软件产品能够提供正确的、符合预期的结果,能够安全地保存信息和数据,用户权限与访问权限匹配等。
易用性:指产品对用户来说易理解、易学习、易操作。
技术层面的质量属性:
稳定性:不容易出故障,出了故障也能快速恢复。
性能:软件的响应时间符合预期,在极端场景下(例如高并发、大批量数据处理等),也能维持一定的性能水平。
可维护性:软件容易修改,不会牵一发而动全身;容易调试和修复bug;容易落地自动化测试。
还有其他质量属性,不一一列举。
自我约束的价值
系统不做什么和能做什么同样重要,就像成功的经验需要固化下来,并规模化复制。成熟的认知框架也需要固化下来,并约束团队,让团队在正确的路上行进,错误的路就别再尝试了。例如,团队A做了商品管理,其他团队拿去用就行了,别再重复造轮子,最终导致一座座数据孤岛。
可能有人会说,这会约束团队创新吧?但创新和荒诞常常就一步之遥,这一步可能就是遵守最基本的约束规则。
企业架构的概念模型
本文主要参考TOGAF企业架构理论,但TOGAF的内容非常非常多,也常常被批评太“笨重”,不太可能应用到所有知识,这里介绍的已经是裁剪后的企业架构概念模型,保留最精华的内容,方便大家理解和实践。
目标:指的是企业的宏观业务目标或战略,一般会依赖多个业务能力来实现。
业务项目:指的是长期的、持续性的业务项目,一般需要制定明确的经营计划和财务预算。
业务能力:业务能力描述了企业目前能做什么或需要做什么。业务能力建模的关键点在于它定义了企业做什么,而不是如何做(由业务流程描述)。业务能力独立于组织架构、业务流程、资源,准确地说,这些业务要素是支撑企业的业务能力而存在的。以“招聘人才”为例,“招聘人才”包括人力部门(人力资源团队)、业务流程(例如吸引、筛选、面试、雇用)和IT系统(例如招聘系统、人事系统)。准确定义的业务能力是非常稳定的,在过去的几十年中,招聘的流程、技术、模式发生了翻天覆地的变化,但“招聘人才”这项业务能力始终恒定存在,业务能力遵循高内聚、低耦合的特性,正是因为业务能力的这些特性,业务能力对构建IT架构提供了至关重要的帮助,围绕业务能力构建的IT系统会具备更加稳定的结构,并易于扩展。
组织架构:想要深入理解企业的组织架构,是非常困难的一件事。因为大部分人都没有实际经营过一家企业,更没有参与设计过企业的组织架构。但组织架构属于 B 端 SaaS 产品非常底层的架构,非常考验架构能力,几乎所有的业务场景都需要应用组织数据,背后反应的是企业决策层的经营战略和财务战略,因此需要掌握一定的企业管理知识和财务知识,如果能够掌握组织架构的概念和要点,对设计好 B 端 SaaS 产品帮助巨大。
业务流程:是指为达成特定业务目标,由不同的角色分工完成的一系列活动。活动之间不仅有严格的先后顺序限定,并且活动的内容、方式、责任等也都必须有明确的安排和界定,让不同活动在不同岗位角色之间进行流转与交接。业务流程对于B端产品的意义不仅在于对B端客户业务的一种描述,更在于SaaS产研团队对B端业务运营的理解和剖析,这种理解是对企业资源的优化、对企业组织机构的优化以及对管理制度的一系列深入探究。只有真正理解业务流程,才能帮助B端客户达成期望的目标:降低企业运营成本,提高市场需求的响应速度,争取企业利润的最大化。
应用系统:即应用系统的架构设计,它起到统一规划、承上启下的作用,向上承接了企业战略目标和业务发展,向下规划和指导各个IT组件的定位和功能定义。通常包括系统、容器、组件、代码等元素的划分规范,以及它们的定义、边界和交互协议。
服务:应用系统间的交互协议,具备一定的服务功能,并且提供给外部使用。
IT组件:具体的IT技术组件,例如,mysql、kafka、虚拟机、es等。
提供方:提供和维护IT组件的人,一般是运维团队。
技术类别:通过抽象IT组件的共性特征,对组件进行分类的方法,用于管理IT组件。
企业架构在SaaS中的应用场景
赋能企业数字化转型是SaaS产品非常重要的发展方向,而数字化转型最重要的一步,就是将企业的业务模式和商业模式从真实世界搬到数字世界,这需要对业务进行全量全要素的建模和采集。
企业架构在国外已经发展了二三十年,为什么又被重新提及。因为企业架构是一套非常优秀且在国外有大量成功案例的架构方法论,能够显著提高数字化的效率和质量。这样说可能比较虚,我们以零售行业为例,列举一些数字化水平低的经营痛点。
会员数字化水平低
门店与会员互动的渠道主要是个人微信号,个微限制较多导致大量会员流失。
门店会员缺乏触达渠道,进店率低,由于疫情原因,会员招募逐年下滑。
会员被掌握在导购个人手上,随着人才流失而流失。
会员数据没有合理采集和使用,只能基于销售数据或财务数据决策,单客价值挖掘效率低下。
渠道数字化水平低
线上线下交易履约流程没有标准化,线上运营主要依赖外部人员,业务数据散落在各处。
渠道全链路数据无法收集,没有数字化手段洞察消费者需求,不同渠道的商品布局规划只能依赖经验做决策。
渠道商对数字化认知低,前端用户数据收集难,系统打通难。
烟囱式的系统架构
企业内部系统烟囱式发展,系统之间数据没有打通,数字资产无法共享,无法相互连接。形成一座座数据孤岛,完全没有发挥出数据的价值。
建设IT系统非常烧钱,企业花了大把的投入,但缺乏企业自上而下的全局设计,对业务收益甚微。
总结
既然企业数字化转型已是必然趋势,掌握数字化这项武器是大部分企业的必经之路。企业数字化转型不仅推动和加速SaaS发展,也是SaaS的巨大红利。
当然企业数字化转型肯定不是一件简单的事情,道阻且长,既要循序渐进,也要掌握好的方法论,企业架构可能是需要重点关注的解题方法。
做SaaS的程序员们,是时候关注企业架构了的更多相关文章
- 高级程序员与CTO技术总监首席架构师
一.高级程序员 如果你是一个刚刚创业的公司,公司没有专职产品经理和项目经理,你就是公司的产品经理,你如果对你现在的开发员能力不满,那么你只需要的是一个高级程序员. 你定义功能.你做计划推进和管理,他可 ...
- 苹果公布WWDC2016时间 并做了个程序员情怀网页
新浪手机讯 4月19日上午消息,苹果公司今日正式确定2016年全球开发者大会(WWDC)开幕时间:6月13-17日,并做了个非常有意思的代码风格页面. 网友戏称这个页面只有程序员们才能看懂,它的首页是 ...
- Jeecg心得篇--这个世界不缺程序员,而是缺少匠人和架构师
真正的快乐,是用自己喜欢的方式过完这一生.来人间一趟,不能只为了活着. 这个世界不缺程序员,而是缺少匠人精神的架构师与产品经理. 因为他们通过自己的行为与理念默默地改变着世界,一个更好的世界. 这是我 ...
- 做高逼格程序员之说走就走的「Windows」
简介:随着移动固态硬盘越来越便宜,网上逐渐出来一个黑科技.Windows To GO见名知意.简单来说就是在U盘或者是移动固态硬盘上安装Windows系统.达到即插即用. WTG 简介 Windows ...
- 做高逼格程序员之说走就走的「Linux To Go 」
简介:想拥有一个Linux,在自己的电脑上安装双系统太麻烦.想和WTG一样,随插随用. 使用LTG的好处 安装.修复系统:配置好后的Linux系统极其强大. 工作中我们同样可以使用这个系统,回到家里插 ...
- 【转】程序员应该了解的——除了coding我们还有很多事要做
from : http://www.cnblogs.com/lingyun1120/archive/2011/10/09/2203306.html try { if (you.believe(it) ...
- 做什么职业,也别做程序员,尤其是Java程序员
千万别做程序员,尤其别做Java这种门槛低,入门快的程序员(别跟我说Java搞精通了也很牛之类的,原因不解释,做5年以上就知道了),程序员本来就是我见过最坑爹的职业了...Java程序员更是,现在满地 ...
- 万能的林萧说:我来告诉你,一个草根程序员如何进入BAT。
引言 首先声明,不要再问LZ谁是林萧,林萧就是某著名程序员小说的主角名字. 写这篇文章的目的其实很简单,算是对之前LZ一篇文章的补充和完善. 之前LZ写过一篇<回答阿里社招面试如何准备,顺便谈谈 ...
- 优秀ASP.NET程序员修炼之路
初级的程序员或经验不足的程序员往往只意识到自己的程序是写给计算机的,而不会在意程序其实也是写给人的,或在意得不够.不全面. 写给机器的程序,往往追求的是运行正确.执行效率能满足要求.但程序员的任务仅仅 ...
随机推荐
- Memcache 与 Redis 的区别都有哪些?
1.存储方式 Memecache 把数据全部存在内存之中,断电后会挂掉,数据不能 超过内存大小. Redis 有部份存在硬盘上,这样能保证数据的持久性. 2.数据支持类型 Memcache 对数据类型 ...
- @Controller 注解?
该注解表明该类扮演控制器的角色,Spring 不需要你继承任何其他控制器基类或 引用 Servlet API.
- DIANA算法
DIANA算法 DIANA算法示例 DIANA算法练习
- vim recording的使用方法
使用vim时无意间触碰到q键,左下角出现"recording"这个标识,觉得好奇,遂在网上查了一下,然后这是vim的一个强大功能.他可以录 制一个宏(Macro),在开始记录后,会 ...
- 从八道面试题看JavaScript DOM事件机制
As we all know,事件机制其实很简单,无非冒泡和捕获这两点,笔者不再赘述,网上相关文章一大堆,下面让我们直接看面试题 题目一到七,统一设置css .test2 { height: 50px ...
- python-班级人员信息统计
输入a,b班的名单,并进行如下统计. 输入格式: 第1行::a班名单,一串字符串,每个字符代表一个学生,无空格,可能有重复字符.第2行::b班名单,一串字符串,每个学生名称以1个或多个空格分隔,可能有 ...
- FastAPI(六十六)实战开发《在线课程学习系统》接口开发--用户注册接口开发
在前面我们分析了接口的设计,那么我们现在做接口的开发. 我们先去设计下pydantic用户参数的校验 from pydantic import BaseModel from typing import ...
- Python入门-迭代器和生成器
迭代演示 # 传统数据生成缺陷演示,编号操作未全部使用,会占用内存 #合适的做法,是需要的时候再生产,而不是全部生成好了再用 def generator(maxnum): print("[代 ...
- Struts2-拦截器原理
拦截器原理包含Aop思想和责任链模式 1.Aop思想 aop是面向切面编程,有基本功能,扩展功能,不通过修改源代码方式扩展功能.(动态代理) 2.责任链模式,Java有23种设计模式,责任链模式是其中 ...
- java实现二叉树的Node节点定义手撕8种遍历(一遍过)
java实现二叉树的Node节点定义手撕8种遍历(一遍过) 用java的思想和程序从最基本的怎么将一个int型的数组变成Node树状结构说起,再到递归前序遍历,递归中序遍历,递归后序遍历,非递归前序遍 ...