原文地址:http://geek.csdn.net/news/detail/84944

作者:李智慧,宅米CTO,曾供职阿里巴巴与英特尔亚太研发中心,从事大型网站、分布式系统、大数据平台方面的研发工作。著有《大型网站技术架构-核心原理与案例分析》一书。

最近几年,互联网创业浪潮风起云涌,各类互联网创业公司如雨后春笋般成立。技术做为互联网创业重要的一个组成部分,也前所未有的受到重视。互联网企业的发展通常都是爆发式增长,在极短的时间内,业务规模、用户量成百上千倍的增长,对网站的技术架构提出极大的挑战。

本文以宅米网为例,跟大家分享在一个典型的互联网创业公司中,技术如何快速响应业务变化,不断重构优化系统架构,满足业务的需求。技术团队又是如何不断地重组优化快速发展壮大,适应业务和技术架构的变化。

一、宅米业务规模变迁

宅米成立于2014年底,是一家专注校园电子商务的互联网企业。仅仅一年多的时间,公司业务覆盖近200座城市,1000多所大中专院校,10000多栋宿舍楼,日均订单20万,峰值订单50万。

相对应的,技术团队规模也从开始创业时的三个工程师,发展成一个50人的团队。公司业务规模变迁如图1。

图1 宅米业务规模变迁

二、宅米技术架构变迁

象所有初创互联网公司一样,宅米早期的系统架构十分简单。四个主要的业务系统:买家系统、卖家系统、供应链系统、运营支撑系统,组成公司的核心应用系统。Nginx做为前端web服务器通过负载均衡服务向移动App及移动Web提供服务。如图2所示。

图2 宅米系统架构1.0

这样一个简单的系统架构在公司早期并没有什么问题,在日均订单只有几千单的时候,系统的处理能力并不是当时最主要的问题。但是随着用户、商品、订单的快速增长,系统的压力越来越大,主要表现是数据库的负载压力特别高,高峰期数据库响应延迟加大。当时公司的业务目标是日均订单20万,峰值订单50万,性能测试的结果是当前的系统架构根本不足以支撑这样的订单量。

解决方案是增加缓存和进行数据库主从分离。在应用服务层增加Redis缓存,缓存业务对象。在前端使用第三方CDN服务,缓存图片、JS等静态文件。并且把数据分析任务迁移到大数据平台以降低数据库的访问压力。重构后的系统如图3所示。

图3 宅米系统架构2.0

2.0版的架构对系统性能和处理能力有极大的提升,但是随着系统越来越复杂,许多功能被重复开发,开发新需求的工期越来越长,Bug也越来越多。于是决定使用分布式服务,将可复用的功能模块以分布式服务的方式独立部署,供各个业务系统使用,从而提高开发效率和维护成本。

同时随着业务规模的不断发展,另一个问题也凸显出来:订单表的数据量急剧增加,按照这样的速度,订单表的单表数据量将很快超过数据库存储的极限。当时考虑的方案有两个,一个是分布式数据库,将订单表拆分到多个物理库中。另一个是冷热分离,将历史订单迁移到MongoDB中,只提供只读查询操作。技术团队经过权衡,最后选择了第二种方案。最新的系统架构如图4所示。

图4 宅米系统架构3.0

三、宅米技术团队变迁

早期宅米技术团队只有三个工程师,几乎没有分工,每个人都是全栈工程师,哪里需要就做什么。随着公司逐渐发展壮大,技术团队的规模也不断变化,当团队有十多个人的时候,就必须要进行组织分工。最初的分组方式是按照工程师的专业职能进行分工,即后端组,app组,前端组。如图5所示,这样分组的好处是相同专业技能的工程师在一个小组,彼此更容易进行技术交流和协作。

图5 宅米技术团队组织架构1.0

当团队规模较小,只有十几个人,产品也不多,只有一两个产品的时候,这样的组织方式是可以有效运作的。但是当人数有几十个,产品有五六个时候,每个产品都需要跨越多个技术小组进行开发,沟通和协调的成本迅速上升,这时候按产品归属分工更有利提高开发效率,组织架构如图6所示。

图6 宅米技术团队组织架构2.0

随着团队规模不断增长,分工也更细致,组织架构也需要做出更精细的调整,如图6所示。

图7 宅米技术团队组织架构3.0

技术部成立专门的架构组,进行性能测试、性能优化、架构重构、流程改进等业务无关的技术改造,并对产品研发团队进行技术支持,是技术部的救火队和特种兵。

四、总结

在云计算与互联网技术非常完善的今天,对于大多数初创互联网公司而言,技术几乎不会成为创业的障碍。如果业务模式正确,得到市场的认可和资本的追捧,业务规模迅速发展,即使技术上出现一些差错和滞后,也基本不会对业务发展造成重大伤害。
宅米在自身短暂的发展历程中,快速的业务发展不断对技术提出各种各样的挑战,技术团队也曾手忙脚乱穷于应对,但是通过不断的自我进化,经历一次又一次的脱胎换骨和浴火重生,终究还是成长起来了。


异史彭氏曰:宅米的这种模式值得小微互联网企业借鉴,当然执行力是首要的。以技术推动团队建设,水到渠成,人员配置也能做最优化。

宅米技术推动应用架构与人员组织架构发展相关推荐

  1. 重构技术架构首先解决组织架构

    技术架构来源于人员组织架构 过去两年做了不少大型的中台项目,什么是中台?这篇文章就不多说了,自行百度一下,总而言之最后我得出了一个结论--企业什么样的人员组织架构就会什么样的系统技术架构.我们先以下一 ...

  2. 【SDCC 2016现场】互联网应用架构实战峰会(上):蚂蚁金服、宅米、携程、腾讯平台架构演变与实践...

    摘要:2016年3月18-19日,由CSDN重磅打造的"2016中国软件开发者大会"在上海光大会展中心国际大酒店隆重召开.在第二天的架构实践论坛上,来自蚂蚁金服.宅米网.携程旅游网 ...

  3. html组织架构插件,jQuery组织架构图插件okrTree.js

    插件描述:jQuery组织架构图支持拖拽节点,支持插入标记节点,分支节点 更新时间:2021-03-02 23:52:07 更新说明: 1. 修改默认主题, 2. 添加自定义主题接口var s = $ ...

  4. 长虹声纹识别技术推动家电产业向高阶形态发展

    科技的进步推动了家电产业的发展,从主打语音识别功能的全球第一台人工智能电视推出到声纹识别人工智能电视的落地,仅仅用了一年时间. 近日,由长虹研发和生产,搭载着远场语音.声纹识别技术的人工智能电视Q5K ...

  5. 亿图图示----组织架构图----市场组织架构和公司架构图及家庭架构图

  6. 宅米网技术变迁——初创互联网公司的技术发展之路

    最近几年,互联网创业浪潮风起云涌,各类互联网创业公司如雨后春笋般成立.技术做为互联网创业重要的一个组成部分,也前所未有的受到重视.互联网企业的发展通常都是爆发式增长,在极短的时间内,业务规模.用户量成 ...

  7. 腾讯正式宣布成立技术委员会,要对组织架构下狠手

    2019 年伊始,社交巨人腾讯正式宣布成立技术委员会,计划在未来发力内部代码的开源和协同,投入更多资金和精力在技术建设上.BAT 三家里一直被诟病技术建设落后的腾讯,终于开始补足自己的短板.这会对腾讯 ...

  8. 企业的组织架构对技术架构的影响

    导读 技术人员往往有闷头挖煤的倾向(闷头做技术架构),而不了解挖煤的上下文背景(企业的业务背景和组织架构),殊不知企业的组织架构和业务背景和技术架构之间有隐含的映射关系,这种关系有时候直接决定了技术架 ...

  9. 技术架构与组织架构的优化

    技术架构与组织架构的优化 翼龙贷-吴雅龙 摘要 互联网金融是一个在风口的行业,其中p2p(点对点网络借款)网贷借贷则是一个核心基本的金融模式,翼龙贷是一家面向三农(农民.农村.农业)的民间借贷金融撮合 ...

最新文章

  1. 试题 基础练习 回文数
  2. ABAP where used list
  3. 反转链表 IIPython解法
  4. d3.js 旋转图形_变化莫测的图形推理,你能解出几种?
  5. 非常恶俗地分享一首歌曲(子陵·周郎顾)
  6. Linux下将数据文件的指定域读取到shell脚本中
  7. oracle数据库存储结构语句,oracle基本语句(第五章、数据库逻辑存储结构管理)...
  8. 如何引用传递参数从一个函数中得到多个返回值
  9. java hashtable 数据结构_java Hashtable底层原理是怎样的?数据结构包括什么?
  10. LINUX SHELL使用变量控制循环
  11. HTTP的padding状态
  12. 2010湖南省第六界程序设计大赛 B题 --弟弟的作业(nyoj663)
  13. 9 Creating a Chain of Effects
  14. 【java】java实现pdf根据内容定位插入图片
  15. onlyoffice文档服务器加载慢,【onlyoffice中文指南】12-问题及排除
  16. java操作txt文件目录
  17. 内网渗透靶场 Vulnstack(二)
  18. web技术分析| 一篇前端图像处理秘籍
  19. 【Java】位运算符---算术右移和逻辑右移、算术左移和逻辑左移
  20. iOS 获取设备类型和系统信息

热门文章

  1. UnityShader案例篇-镜子1
  2. 排序(尝试对时间戳做排序)
  3. windows server 服务器基本操作
  4. 重大预测:中国各地的收费家教网,或将在年内倒闭。
  5. 业界|机器学习改变商业的17个案例
  6. Macbook Pro虚拟机VM上的Ubuntu18.04 输入源没有拼音问题
  7. 开发实习日记10.10
  8. 非线性回归中的Levenberg-Marquardt算法理论和代码实现
  9. java根据传的日期(yyyy-MM-dd)向前推X天或者向后推X天
  10. 我们是码农?还是手工艺人?