分享我在分期乐 5 年半所见证的技术演变

这次准备写点特别的东西,分享我在分期乐 5 年半所见证的技术演变。企业发展到不同阶段要面临不同的技术选型及技术管理问题,本文将分为初期、中期、后期以及升华四个阶段来分析其中的问题及如何做技术选型和管理。当然,不一定适用于所有企业,但其中的思路是可借鉴的。

初期

关键词:快、LAMP、jQuery、Sea.js

企业初期为了快速验证业务及商业模式,不用过多考虑技术问题,唯一的目标是快速上线验证业务模式是否正确,根据数据和市场反馈快速高速业务。此时,在技术上的要求是能够快速迭代,尽量满足业务验证需求。

后台技术方案

初期的整体后台技术架构采用 LAMP(Linux/Apache/Mysql/PHP)。

这套技术方案在普通不过了,咋一看这没啥好讲的。但是,早期加入分期乐的同学都知道,虽然这是普通的 LAMP 架构,但 PHP 底的整体框架是 xiaot 一个人设计并编码的,这套方案虽然没有什么高大上的技术应用,但整体的设计思想是非常值得学习的。

技术方案主要亮点:

  • 服务化设计思想,框架设计接近服务化水平
  • 数据层和逻辑层分离,数据库操作与业务逻辑解耦
  • 统一数据库操作,很大程度提升开发效率和质量
  • 简单易上手,我作为前端也能快速写出后台服务

为什么只整理了四个功能亮点?其实好的东西不用过多花哨的东西点缀,这四点在后续的服务化改造及切 Java 时起了很大的作用。

系统架构设计.png

前端技术方案

初期前端技术方案采用 Sea.js/jQuery 主导了前端模块化开发方案。13 年的时候还是 jQuery 的天下,所以当时的解决方案是跑不了 jQuery 了。同时,当年模块化开发思想也比较火,淘宝玉伯的 Sea.js 一时成为国内的热点讨论话题,但好景不长很快被替代了。

由于后台整体技术方案采用 LAMP 的方式,前端引入了 PHP 框架做为『中间件』与后台服务通信。所以,当年在分期乐写前端是要写 PHP 的。

PHP 层主要用于与后台服务通信,然后再包装成 restulf 接口暴露给前端调用,同时 PHP 层也会处理一些业务逻辑,通过服务端直接渲染后输出页面,减少前端 JS 逻辑。

为了提升前端开发效率及交互一致性问题,做为一个好的前端开发工程师需要不断在业务中提炼出能用的业务组件和基础组件。比如:对话框组件、日历组件、分页组件、表单验证组件、Ajax 防重等等。

技术方案主要亮点:

  • 模块化,采用当时最火的模块化解决方案
  • 组件化,结合模块按需加载组件
  • 高效率,高复用率提升开发效率

这套技术方案目前还在分期乐的小部分业务中继续服务着,虽然也有懒得打破的成分,但不得不说在当时确实是一个比较不错的解决方案。

前端目录结构.png

问题

在过往的经验中遇到的一些问题和解决方法,初期使用 LAMP 时性能问题是比较突出的,这个时候由于业务发展以及人员不足,可以短期加机器来解决。安全问题往往是最容易被忘记的,最简单的是SQL防注入、XSS注入、CSRF攻击。前期建议把 apache 换成 nginx,整体性能上还是有提升帮助的。由于前期业务变化较快,技术人员要避免过度设计以免影响整体项目迭代过程。

  • 性能问题——加机器解决,机器比人便宜
  • 安全问题——一定要全局性考虑,前期安全问题很容易被忽略
  • apache问题——建议采用 nginx+fpm-php
  • 业务问题——业务变化快,技术方案需要权衡,不要过度设计

总结

初创团队在做技术选型时,建议优先考虑能够快速迭代的方案来支撑业务模式验证。同时需要考虑未来可能会选用哪种技术方案,在前期提前做好规划,减少未来切换时的难度。在文档沉淀和代码注释上一定要认真落实,在企业步入中期时人员扩张特别快,如果文档缺失会导致新人融入难问题。尽早前后端分离,并在一开始就启用 https 的技术方案。最后,不要使用分布式。

  • 优先考虑快速支持业务迭代验证
  • 良好的架构设计决定未来技术债坑有多深
  • 完善的架构设计文档和代码注释,在跨入中期时人员扩张过快能形成培训文档
  • 尽早启用 https
  • 尽早前后端分离
  • 不要使用分布式

标签: none

添加新评论