https://yq.aliyun.com/articles/54414?spm=a2c4e.11163080.searchblog.64.65012ec1pwrBEy

问题提出今天在电商金融架构群里,来自蚂蚁金服的于总抛出了一个问题:“完全从0到1建设一个电商网站,技术上如何选型,如何快速上线?”

群友们集思广益

参与讨论的电商公司背景:有来自传统行业的“互联网+”式的电商平台,有目前正处在风口的“跨境电商”,也有来自知名大公司的电商实践等。

UC的莫俊彬说:
我觉得...先把基础设施弄好,上云..搞业务..这样精力就集中了”(给赞,还卖了一手好萌)。

北京的isnow分享了他的经历:
“我们是去年10月份(注:2014年)从0到1搭建的电商网站,做知识产权电商,2b2c的业务,开始在首都在线的云上,前端是用bootstrap,使用nginx做负载均衡,后端用springmvc+spring+mybatis数据库用mysql,支付接入第三方支付,支付宝和银联支付,网站分前端用户访问和后端业务系统,分开部署,前端部署在两台tomcat上,mysql一主一备,这大概是我们的第一版系统的架构。开始的时候产品线比较单一,将主打的产品上线,然后在后期迭代过程中逐步上线其他业务。”

于总心想我才不相信你们没遇到问题,说问题。

然后isnow就开始倒苦水模式:

  1. 由于人员和流程的问题,每次上线都是直接将变动的class文件部署上去,代码管理没跟上;
  2. 随着业务线的增多,发现最开始的业务架构无法扩展,每次增加业务线代码重用效率不高;
  3. 由于业务线中存在大量的文件,导致随着订单的逐渐增多,文件io变慢 ;
  4. 随着业余订单的变多,订单访问开始变慢;
  5. 因为业务系统是o2o的模式,客户那边做业务的时候容易对业务经常状态变动,现阶段都是专人在数据库上更改数据状态,个人觉得太危险;
  6. 业务方变动太大,我们的产品暂时在市场上没有可借鉴的(第一个吃螃蟹的),因此在业务上一直都是在变动,然后就形成了一种业务混乱的感觉。后来,招了cto,改第二版时候把大量的业务逻辑转移到数据库里用存储过程来解决,导致业务逻辑分散。
  7. 感觉创业公司其实技术过得挺艰难的,招不到好的人员,领导在新技术的尝试上往往步伐没那么大,不敢轻易上他没有把握的技术,有时候甚至为了稳定去将就一些技术甚至业务上的坑”。


于总看到这里瞬间不淡定了:“CTO的经验决定技术堆栈啊!存储过程是一个大坑,未来要分离,服务,可读性都是问题”。

  • 小刚插了一句:“硬件和网络,直接买厂商的”(土豪任性)
  • 来自金山的Kerwin说:“先想一个能扩展的框架”(果然是大公司的,家底就是厚呀)
  • 北京的孔庆龙则说:完全从0到1 建设一个电商网站?
  1. 如何选型,首先要清楚自己想要什么这个就要做好业务分析和业务架构和战略整理,进而找到关键需求,通过关键需求来对市面上的技术或者套装软件进行选型——也就是应用架构选型。
  2. 快速上线:这个涉及到的问题较多,如数据架构、基础架构、应用架构、安全架构等一系列问题,如果安全架构不高那么上云是一个不错的选择,毕竟云可以提供一整套的PASS和SAAS解决方案。
  3. 关于技术栈:主要是根据自己的团队人员量身打造,从前到后有前端技术选型(jquery、Bootstrap等)、HTTP网关或LBS(nginx、F5等)、容器中间件(Tomcat、jboss、weblogic等)、应用(SSH、分布式的dubbo等)、数据库(mysql、redis、oracle、db2等),监控软件(应用监控、网络监控、数据库监控、服务监控等)
  4. 关于团队:如何快速构建如何上实现DEVOPS(技术工具如:maven、svn/git、sonar、jenkins、Confluence、jira、nexus等)
  • 于总补充到:“容器中间件(Tomcat、jboss、weblogic等),现在都是tomcat 和jetty,其他的太重。”
  • 刚开始做跨境电商的Jesse说:项目一个半月上线。
  1. 服务器与数据库直接买现成的,减少运维成本。目前我们是ECS加RDS,全是阿里云。 框架是Spring+Mybatis,服务器是tomcat
  2. 图片存储用的是OSS,自定义域名,CDN加速(也是阿里云的)首页优化包括动静分离,异步加载,用户首页打开速度从7秒多缩短到了3秒以内。 由于上线匆忙,很多细节来不及优化和确定。所以对于一些经常变动的模块直接用新的工程。这样要修改不会影响到其他模块。 代码管理用Git。没有service话,感觉用不到。
  3. 缓存直接是EHCache,每个机器都保存一份。没有用memcache,因为目前memcahche还是会增加管理成本。
  4. 负载均衡也是直接上阿里云的负载均衡
  5. 快速上线的一个问题就是好多技术设计的细节没有考虑完善,代码比较粗糙,但是又不能做大的调整,而且还要兼顾新的功能。目前的做法是,业务需要更改哪一个模块,就去在做业务的过程中去重构,而且做灰度发布。
  6. 业务上跨境电商的一个最大问题就是货币问题。不同国家的用户登录显示的货币要不一样。对于产品,报关是个大问题,现在这一块都是运营手动报关发货。现在还做不出来那种跨境DRP,即使购买现成的服务也不知道该咋用。 汇率是采用一个月取平均值。要判断是哪个国家的话。。先做成让用户自己选。。但其实现在就是中文和英文
  • UC的莫俊彬接着问了一个问题:“初期数据支撑,这块感觉不好做,不知道有没专做这块服务的公司。”
  • 来自北京的俞斌说:“我们全部阿里云。”
  • 来自深圳的小刚说: 我们的业务才刚起步,技术上没有太多的创新。
  1. 硬件带宽:非核心业务,阿里云;
  2. 整体架构:分层模式+微服务模式,可复用的核心功能下沉、抽成服务。
  3. 技术选型

3.1.  网站前端php+yii+thrift+阿里ocs+mysql;
            3.2.  后台服务spring+mybatis+thrift+dubbo+mysql

  • 最后来自友群的朋友分享了他们的经验:

我们现在电商平台,算是从0-1,我全程参与过,技术选型也都参与讨论过,现在来看的话,犯过以下几个错误:

  1. 没有准确估计实际业务量或是就没估计,导致技术选型直接参考京东,淘宝等一线公司,实现较复杂,技术铺的也很大。
  2. 因为缺少经验的原因吧,前期业务没有明确的规划,技术选型也没有考虑高内聚,低耦合,导致系统之间依赖太强,现在想拆分很难
  3. 选择了一些较新的技术框架,依赖于1~2个技术牛人,牛人离职,一片茫然。。。
  4. 初期除了购买流程上不能有技术短板外,产品为核心的营销数据流也很重要。提升流量,用流量测试转化率和动销率,然后想办法提升这两点。一旦转化率稳定,才是买大流量的时候。这些都要有数据支撑试错。

总结

最后我们总结了一下我们的讨论:

快速上线,满足目标不要做过多设计,大概用到的技术堆栈有:
电商平台一般都分为面向客户的客户端网站系统、面向公司内(或第三方平台)的业务系统以及运维平台(云平台)。

对于面向客户端的网站系统主要包括以下几个模块:
    1. 用户管理系统
    2. 商品管理系统
    3. 支付系统
    4. 订单管理系统
    5. 评价系统

对于面向公司内(或第三方平台)的业务系统主要包括以下几个模块:
人员管理以及权限管理系统

  • 客户服务系统
  • 订单管理系统
  • 财务管理系统
  • 商品维护系统
  • 数据统计系统
  • 运营支撑系统

主要架构图:

从图中我们可以很清晰的看到大概的技术栈:
1. 前端系统:
     1.1 Web端技术选择:
            1.1.1 JS框架搭建
            1.1.2 PHP框架搭建
            1.1.3 JSP/Freemarker模板+UI框架(Bootstrap等)+Jquery工具
    1.2 移动端
           1.2.1 Android平台
           1.2.2 IOS平台
           1.2.3 Mobile(H5)平台
2. 后端系统
     2.1 负载均衡系统
        2.1.1 硬件类负载均衡器
              (1). NetScaler
              (2). F5
              (3). Radware
              (4). Array
       2.1.2 基于Linux免费开源的负载均衡软件策略
              (1). Nginx
              (2). LVS/HAProxy
              (3). Lighttpd、Apache-mod_proxy、Squid、Socks、TIS FWTK、Delegate等
     2.2 web容器集群(最基础的集群,一主一备)
        2.2.1 传统模式,将所有模块定义到同一个项目中发布到web容器中
        2.2.2 SOA模式(微服务模式),根据业务模块将系统进行拆分,分开部署,系统间使用rpc或rest方式调用。具体可参考dubbo(dubbox)、Spring-boot等框架。
    2.3 文件服务器
        2.3.1 储存方式
        2.3.2 储存容量
        2.3.3 安全性与存取权限控管
        2.3.4 存取效能
     2.4 缓存服务器
         2.4.1 分布式Redis缓存
         2.4.2 Memcache缓存
         2.4.3 EHCache等
     2.5 消息系统
         2.5.1 ActiveMQ
         2.5.2 分布式消息系统Kafka、Rocketmq等
     2.6 数据持久层
         2.6.1 关系型数据库
              (1). PostgreSQL
              (2). Mysql
              (3). Oracle、DB2等
         2.6.2 Nosql
              (1). MongoDB
              (2). HBase等

注: 硬件解决方案的优点是:有专业的维护团队来对这些服务进行维护、缺点就是花销太大。软件解决方案的优点是费用低廉,缺点是开源系统,可能出问题得自己想办法找解决方案。

CTO(技术负责人)会很大程度上影响技术发展

CTO 在创业公司扮演了的角色很独特,创业公司CTO不仅负责业务上的开发任务,还负责扛住外界(其他部门负责人)的压力等。对内还要负责团队人员的合理搭配和安排,对外负责开发任务的安排和调控。 同时CTO在技术选型上更多时候考虑的是自身熟悉的技术以及稳定的技术,或许创业公司有更多的试错机会,但毕竟是身处创业的环境,外界环境不可能给予团队多次失误的机会, 因此在技术选型上包括公司技术走向上更多的取决于CTO对技术的熟练程度。

发展过程中遇到的问题

问题:
1.由于创业公司迭代非常频繁,因此运维上线的问题是最大一个很大的问题
我们开始的解决是每次将修改后的class文件直接替换线上环境,这种方案是非常危险的。后期我们搭建了自动部署平台,基于Git和Jenkins进行代码自动化部署。

2.前期由于各种各样的原因导致业务逻辑上耦合程度高,开发新业务线的成本很高
这个没办法,前面挖的坑后面慢慢填,然后在重构的时候,一点点的将业务独立出来,使用微服务方式进行架构。

3.前期未将系统中文件同代码分离出来,导致随着用户量增多,服务器IO越来越慢
搭建文件服务器,将所有文件移到文件服务器中,减轻web应用服务器的压力。

4.随着订单的增多,后台业务系统订单访问变慢
第一步,从sql优化的角度,看是否能够通过加索引等方式加快速度。第二步,计算订单相关表的读写比,进行分库分表操作。(目前我们团队还未到达这一步)

5.业务方需求变动太快或产品思路不清晰,每次迭代都是在挖坑
 这个没办法,第一,寻找更加懂业务的产品经理。第二,业务开会须有核心业务开发人员参与,对需求或产品的发展做出中肯的评审

 我们的关于从0到1的电商平台建设的一些建议

  1. 对核心业务思路要成熟,不要人云亦云,千万不要说"淘宝、京东就是这么搞的"。要结合自己的产品和业务去架构自己的平台。
  2. 在技术选择上,尽量选择开源稳定的方案,不要选特别新的技术。
  3. 前期可以将非核心数据或服务托管在稳定可靠的云服务平台上,集中精力将核心业务完成核心业务的开发和产品迭代,到团队有一定的积累后,可选择自主开发某些托管在云平台的服务。
  4. 能选择将业务分离开,则尽量分离开,以方便后期产品的重构。

从0到1的电商架构应该怎么做?相关推荐

  1. 8000字讲清楚从0到1搭建电商商品中心(建议收藏)

    <电商产品经理从0到1>系列文章面向0~3岁的产品经理或者有多年产品工作经验却刚接触电商领域的产品经理. 本系列文章将详细介绍电商核心系统的产品设计方案,帮助你体系化地认识电商产品. 看完 ...

  2. Dtop环球嘉年华全球Web3.0分布式私域电商生态发展峰会圆满举办

    5月7日,Dtop环球嘉年华全球Web3.0分布式跨境私域电商生态发展峰会暨战略合作备忘录签署仪式在马来西亚首都吉隆坡隆重举办.此次峰会汇集了Dtop环球嘉年华韩国.新加坡.澳洲.泰国.印尼等国家的社 ...

  3. 双11之后,国际、大型、创业、传统、搜索等电商架构首次深度较量

    双11异常火爆,不管是销售数字,还是用户体验,这次全民购物狂潮再次刷新了过去的所有记录.而在这一切背后,需要稳定高效的系统架构设计来提供有力支持.为此,我们在11月18日-20日,中国软件开发者大会上 ...

  4. 双11之后,七大电商架构主题的首次深度较量

    双11异常火爆,不管是销售数字,还是用户体验,这次全民购物狂潮再次刷新了过去的所有记录.而在这一切背后,需要稳定高效的系统架构设计来提供有力支持.为此,我们在11月18日-20日,中国软件开发者大会上 ...

  5. 阿里电商架构演变之路

    前言:从网上找的首届阿里中间件技术峰会上的一个报告,2017年7月的,报告的名字叫阿里电商架构演变之路,感觉不错所以看了一遍,在此记录一下,复制了其中大部分内容,并进行了整理,然后在晦涩之处用自己的语 ...

  6. 亿级流量电商详情页系统设计与实战-小型电商架构VS大型电商架构

    一.电商详情页架构大致分析 电商网站里,大概可以说分成两种: 传统小型电商网站,主要采用页面静态化的架构方案. 大型电商网站,使用较复杂的一套架构方案,商品详情页的系统架构 -> 缓存架构 -& ...

  7. 探秘双“11”征服马云刘强东的电商架构 !

    在刚刚过去的"双11",阿里巴巴和京东两大巨头双双创造新的购物纪录:阿里巴巴天猫全天成交额达1682亿元,打破去年1207亿元的纪录:京东全天下单金额超1271亿元,同比增长超过5 ...

  8. 【SDCC 2016】电商架构专题干货七连发:探秘知名电商架构最佳技术实践

    [CSDN现场报道]2016年11月18日-20日,由CSDN重磅打造的年终技术盛会 -- "2016中国软件开发者大会"(Software Developer Conferenc ...

  9. 鏖战双11,电商架构大起底

    摘要:2014年双11异常火爆,不管是销售数字,还是用户体验,这次全民购物狂潮再次刷新了过去的所有记录.而在这一切背后,需要稳定高效的系统架构设计来提供有力支持.本文揭示了国内各大知名电商架构设计的最 ...

  10. 电商架构+综合物流架构

    一.电商架构 二.物流架构

最新文章

  1. Pyhon爬虫开发:URLError的使用
  2. Okhttp源码解析(三)——责任链
  3. Mysql 如何设置字段自动获取当前时间,附带添加字段和修改字段的例子
  4. 工作305:对选择的数值清空
  5. 作者:朱扬勇,博士,复旦大学计算机科学技术学院教授、学术委员会主任,上海市数据科学重点实验室主任。...
  6. 基於MySQL+PHP的羽毛球費用查询网站设计
  7. 位运算判断奇偶数_基础拾遗:除了amp;和amp;amp;的区别,你还要知道位运算的这5个运算符...
  8. 不小心合并了icloud通讯录_苹果手机通讯录突然不见了如何恢复呢?
  9. 使用免费ip代理进行投票
  10. 确定一个整数是否是2的幂
  11. QT编译错误:invalid application of 'sizeof' to incomplete type 'Qt3DRender::QPickEvent'
  12. 0代码隐藏GroupedTableView上边多余的间隔
  13. Tomcat整体架构分析
  14. MySQL主从介绍及配置
  15. KITTY数据集 下载 及 使用
  16. vscode可以配置哪些编程语言_vscode支持哪些编程语言
  17. teraterm 执行sql_tera term通过ttl脚本 自动连接服务器
  18. 计算机 word 节是什么,Word的分节符是什么
  19. PowerVR Series5 Architecture Guide for Developers
  20. 使用Windows自带工具WINSat给硬盘测速

热门文章

  1. MySQL窗口函数——分组排序函数:number_rank(),rank(),dense_rank()
  2. 计算机处理器i3 i5,i3与i5以及i7处理器有什么区别?
  3. 小柯在学JAVA之第一弹
  4. pip使用代理安装python模块
  5. 布同:统计英文单词的个数
  6. spring事务出现的超卖问题
  7. python xlrd pandas_Python:Pandas pd.read_excel提供ImportError:为Excel supp安装xlrd = 0.9.0
  8. Wireshark基础知识(一)
  9. Python学习模块 Pygame写游戏二(太空大战)
  10. 谈一谈PAC学习理论