成长型电商架构启示:世界排名153的etsy十年走过的弯路
《成长型电商架构启示:世界排名153的etsy十年走过的弯路》要点: 编者按:小编也参加过不少技术大会,台下听到比较多的一种评论:“大师的分享很赞,不过我们这种体量的公司暂时还用不上……”,针对这种情况,小编挑选了一个发展十年的中型的电商网站 etsy,目前在 alexa 上排名 153,美国排名第 42,和国内很多电商公司流量相当. etsy 的架构和很多成长型公司的架构非常相似,由于创始团队没有互联网开发经验,按照传统软件开发思维搭建的架构给后期扩展带来了沉重的负担;另外小编也了解到,大一点的互联网公司基本是按照职能进行分工的,RD,OP,DBA,QA 各司其职,这也是后文要谈的康威定律,也就是分工决定架构的思路的隐患. 原型:3 个工程师开发的系统Etsy 的是手工品交易市场,网站从 2005 年 6 月开始做,由 3 人在一间公寓开发.这和很多初创型应用非常类似. 2007 年:中心化大型数据库的架构技术栈:Ubuntu,PostgreSQL,lighttpd,PHP,Python 早期我们对互联网模式并不是特别熟悉,按照传统软件的思路,业务逻辑大多在 PostgreSQL 的存储过程中实现.前端交互使用 PHP 调用存储过程.使用大型中心化的数据库,按照业务功能分成不同的数据库. 当时的架构问题很多,可用性很差,需要定期维护窗口,意味着网站较长时间不可访问.上线部署往往会导致故障与中断. 2008 年:错误的架构决策:基于分工的架构选型虽然过去了 2 年,依然是家创业公司,20 – 30 人. 康威定律:人力组织的架构往往决定了设计的层次. 康威定律描述了当时的现状,团队的结构:开发,运维. 开发写代码,DBA 写存储过程,运维部署代码. 团队之间由于分工形成了明显的隔阂. 为了解决架构的可扩展性问题,但也是由于受康威定律的思维局限,团队创建了一个名为 Sprouter 中间件层:存储过程路由器.这个成为后面架构沉重的包袱.
Sprouter 开发完成后依旧存在一大堆问题:
2008 年:Etsy 开发文化大转型新来了 CTO(后来成为公司的 CEO) 带来了新的团队文化.
2009 年:转型中的架构:5 大改进1. 引入?DevOps
2. 网站稳定性改进
3. 实现一键式持续交付,没有独立的 QA
4. 开发自己的 ORM,弃用 Sprouter使用 ORM(对象关系映射)来代替 Sprouter.ORM 也是自己开发的.ORM 也实现一些缓存.前端 PHP 代码直接通过 ORM 来访问数据库.使用 ORM 将一些业务逻辑操作更多转移到前端代码,Web 服务器更容易扩展. 5. 数据库的分片扩展性改造:从 PostgreSQL 到 MySQL由于公司新加入不少来自 Flickr 的工程师,所以逐渐引入来自 Flickr 的数据库分片方案 . 使用 MySQL 作为简单的数据存储服务器,这种架构已经在 Flickr 久经考验.数据库可以根据需要无限扩展.另外通过 MySQL 双主复制(master – master)来消除单点隐患. 2011 年春:Sprouter 下线终于在 2011 年春天,Sprouter 从代码库中删除. 2011 年之后新的架构
2012 – 2016 年的 Etsy 架构Etsy 一直以来都是一个看起来很有趣的平台,也有很多值得研究的地方,它从一个新型平台转型成一个稳定而值得认可的电子商务引擎.这种改变需要很多文化上的转变,但是其结果是引人注目的. (编辑:ASP站长网) |