自如是提供租房产品和服务的O2O互联网品牌,成立于2011年10月,目前已为近50万业主、300万自如客提供服务,管理房源超过100万间。自如的主要客群是租房用户,由于租房这个动作并不像电商、社交一样高频,因此自如的互联网属性也很少有高并发、高流量的特征。
针对流量逐步从线下转到线上、业务线从1条到10条、访客从1万到20万的业务场景,我们应该选择什么样的架构呢?本节会为读者呈现一个典型的中型互联网公司的技术架构变迁过程。
自如是一家连接业主、房子、租客的C2B2C公司,业务逻辑如图2-4所示。
图2-4 业务逻辑
左侧的C是业主,作为市场的供给方,业主有房源,想要更快捷、更安全、更高收益地出租。业主的痛点是找不到合适的租客、拿不到高的租金,同时,业主也没有精力打理房屋托管租期内的事宜。右侧的C是租客,作为市场的需求方,广大租客的核心痛点是找不到合适的房源、享受不到优质的租房服务。
在以自如为首的品牌公寓出现之前,房屋租赁市场有3个错配。
首先是供需错配,因为信息差异,业主找不到放心的租客,租客找不到诚信的业主。其次是装修错配,业主房子的新旧程度、装修风格差异性极大,对于租客而言,房子品质的可选范围非常有限。最后是服务错配,租客租到房子后,基本上都是“自扫门前雪”,厕所、客厅、厨房等公共区域脏乱差、噪声大等问题非常突出。
自如先把业主的房源收集上来,然后进行精致的装修,为租客打造全新体验的租住和服务产品。同时,自如通过开发App、小程序、线下管家使这一匹配模式更加高效。
经过10年的发展,自如的业务规模和业务领域都大大增加。在业务规模巨增的背后,是自如业务系统的飞速演进。自如的技术发展大概经历了如下几个阶段。
2015年之前,自如以资产应用为主,管理房源信息、合同信息、客户信息,为了快速迭代业务,主语言以PHP为主,代码仓库以SVN来管理。到目前为止,老应用还存在部分未下线的功能,但是历史代码已经达到了1GB。
2015年到2018年是架构服务化的阶段,这时自如业务蓬勃发展,长租、短租、优品、家装、服务等多条业务线崛起,各个业务线开始构建独立的专属服务,此时Java开始逐步替代PHP,成为新业务线使用的语言。各个服务间开始通过RPC进行通信。这个阶段自如从单体架构迈向了分布式架构,度过爆发性增长的3年。
到了2018年7月,基础平台成立,自如开始对已有的持续交付流程进行重构,引入大量开源技术栈,如Spring Cloud、Nacos、Pinpoint、Graylog、Apollo等,使各个业务线通用的能力得到下沉,同时建设了第二机房,使自如的架构第一次具备了同城灾备的能力。
2019年,自如开始搭建DevOps体系,所有应用运维往SRE(Site Reliability Engineer,站点可靠性工程师)方向转型,开始学习编码,准备为Kubernetes落地储备人才。自如建设了大量的平台功能,如网关、监控报警、配置中心、消息队列平台、权限平台、用户中心等,使技术中台已具雏形。
2020年,伴随着容器、Kubernetes的广泛传播,自如对持续交付流程做了颠覆性重构,完全改变了之前的发布部署方式,对环境、分支模型都进行了重新定义,成为整个自如的技术演进过程中一个新的里程碑。
经过了10年的技术演进,当前自如的技术架构如图2-5所示。
自如前台有多条业务线,如业主、租住、家装、客服等,每条业务线有独自的产研团队进行信息系统的构建,下方有三大中台进行支撑。
业务中台:主要整合各条业务的通用业务能力,如卡券中心、评价中心、价格中心、消息中心等至少能给2条业务线复用的能力才会抽象成中台能力。自如业务中台的建设还不是很成熟,真正可以复用的核心能力还在不断完善中。
图2-5 自如技术架构图
数据中台:数据中台基本上是最能有效赋能业务的通用能力域集合,核心的能力是自如的定价系统、用户档案、楼盘档案、业主档案、推荐系统,这些核心数据奠定了前台业务快速响应、多维度聚合数据的基础。
技术中台:相比于业务中台和数据中台,技术中台是自如目前能力域最多、最为成熟的中台。技术中台包括两部分:一部分侧重业务能力域,如用户登录、权限系统、敏感词系统、即时通信、推送服务、搜索服务;另一部分侧重基础架构,如配置中心、注册中心、监控报警、混沌工程、网关、熔断限流、业务开关、服务治理、流量染色。技术中台是自如业务研发使用最高频的能力,是工程效能最核心的部分。