最小可用架构

前言

最小可用架构Minimum Viable Architecture是一种架构原则,也可以说是一套架构方法论。它指出在一家互联网公司的生命周期过程中,通常会经历哪几个阶段。对于处在不同阶段的公司应该采用什么样的架构和技术,它也给出了指导建议。

最小可用架构这个方法论,是由前eBay首席架构师RandyShoup[参考附录1]所提出。波波在RandyShoup的演讲视频和PPT[参考附录2/3]的基础上,根据自己的经验和理解,对这个方法论做出了进一步的阐释。

三家公司的架构演进

三家公司的架构演进
亿贝、携程和拍拍贷,是我分别工作过的三家互联网公司。这三个公司的体量规模各不相同,但是它们的架构演进具有相似的模式。

eBay的网站架构大致经历了五代,每一代基本上都是对上一代的大规模重写。eBay网站的雏形,源于创始人Pierre Omidyar,在一个劳动节周末三天内完成的一个玩具级项目。最初它是用Perl语言开发的,商品信息直接存在磁盘文件中。之后eBay开始发展起来,建立起正式第二代的网站架构。第二代是C++写的一个单体应用,据说代码行数曾达到三百四十万行左右,编译时甚至都触发了编译器警告,因为平均每个类的方法数量超过了编译器限制。第三代是用Java重写的多App应用,也就是说,整个网站被拆分为买家、卖家等多个应用(这些应用也称为Mini-App),后台也拆分出了一些API。第三代具有初步的服务化思想,只是服务数量不多,粒度也比较粗。到第四代可以称为细化的SOA架构,服务数量快速增长到超过几十个,这时技术栈仍以Java为主。到第五代,基本上就演进到多语言栈和多存储的微服务架构了。

我是2006年左右加入的eBay,当时它的架构已经演进到V3,之后我经历了它的V4架构的演进。2012年左右我离开了亿贝,之后它又研发了第五代架构V5。

携程的网站架构大致经历了三代。最早的第一代架构,就是创始人梁建章他们搞的一个ASP.Net+SQLServer单体应用。我是2012年下半年加入携程的,加入之前公司已经进行了初步的应用拆分和SOA服务化,但是服务数量不多,粒度比较粗。可以认为到2012年,携程网站经过近十年的发展,架构差不多发展到第二代。支持第二代架构的主要技术栈仍然是.Net+SQLServer,这个时候数据库还是集中的,数据库里头使用了大量的存储过程,有些存储过程的代码超过几千行。2012年以后,携程的业务(特别是无线业务),经历了一波高速成长期。在业务的驱动下,携程引入了很多技术人才,整个架构也经历了一次大升级,一直演进到目前的第三代架构,也就是.Net/Java混合式微服务架构。

拍拍贷网站架构的发展和携程有些类似,也大致经历了三代。最早第一代的架构,是创始人顾少丰个人搞的一个ASP.Net+SQLServer单体应用。经过近5~6年的发展,一直到2014年,在整个互金行业起风之前,支撑拍拍贷网站的服务器也不超过十台。我是2016年下半年加入拍拍贷的,加入之前公司也已经经过了初步的应用拆分和SOA服务化,拆出了一些关键的应用和服务,但是后台数据库还是集中的。可以认为到2016年底,拍拍贷网站差不多发展到了第二代,具备了初步的SOA服务化架构。在2017年,拍拍贷的业务量和团队规模都经历了一次比较大的增长,整个架构又经历了一次大升级。到2017年底,拍拍贷网站演进到了基于Java微服务的中台架构,也就是现在的第三代架构。

行业模式

行业模式
纵观整个互联网行业,我们几乎找不出一家公司,它从一开始就搞分布式微服务架构,然后现在业务又做得比较成功的。这样的公司为什么不存在?大家不妨思考其中的原因。

从亿贝、携程和拍拍贷的网站架构演进,我们可以看出互联网公司的一个技术架构演进模式。这些公司一开始都没有搞微服务,都是从单体应用开始的。但是当业务和团队规模发展到一定的阶段,这些公司都先后演进出了微服务架构。换句话说,是否采用微服务架构,最终是由业务和团队规模来决定的,或者说体量决定架构。对于大部分中小规模的公司,它们可能永远没有机会发展到像拍拍贷、携程甚至亿贝这么大。

这里我想要表达的一个重要观点是:对大公司适用的架构,一般并不适用于中小规模的公司,中小公司不能盲目照搬大公司的架构。这一点是我提醒架构师要特别注意的。

S曲线

S曲线
这个是所谓的S曲线,它表明一家企业,在整个生命周期过程中通常会经历四个阶段,分别是想法阶段、起步阶段、规模化阶段和优化阶段。通常在想法和起步阶段,企业的规模比较小,发展也比较缓慢。在规模化阶段企业会经历快速的成长。最后到优化阶段逐步进入平稳期。其实不仅是企业,很多事物的发展都遵循S曲线。

下面我就根据这个S曲线,来讲解针对每一个不同阶段,企业分别应该采用哪些最合适的架构和技术。

想法阶段

想法阶段
首先是想法阶段,从创始人的一个想法开始。

原型架构(Prototype Architecture)

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值