Web架构演变及团队成长之路

从2014年6月开始职业生涯发生变化,来到一家互联网金融公司,开始了组建团队、搭建技术架构之路,在此对这一年多的经历做些总结。

团队

  • 20人->75人
  • 开发 产品 运维 测试 UED
  • 官网及后台BOSS系统 大数据 风控 移动端 APP WEBAPP(H5)

架构&技术演变

  • 快速迭代机制 建立版本、分支管理方法,每周迭代
  • 使用MAVEN作为代码项目管理,搭建MAVEN私服
  • 项目独立 分为前台、后台、业务处理中心、交易中心、批处理
  • 分布式架构 每个项目部署在多个虚拟机,高可用,多活,负载均衡
  • 分布式锁 使用zookeeper实现
  • 分布式session 曾考虑使用zookeeper作为存储容器,发现性能不佳且不方便查询和清理,改为redis
  • 分布式缓存 使用redis作为缓存实现,使用spring-cache管理缓存
  • 分布式日志 使用mongodb集中收集日志,后因查看不便,改为elk
  • 分布式监控 使用zabbix监控服务器状态 通过邮件和微信企业号推送监控信息
  • 分布式事务 使用异步消息队列处理分布式事务,redis作为轻量级消息队列实现
  • 数据库设计 交易有迹可循
  • Web安全 HTTPS,XSS Filter,双向验签,限制失败尝试次数,限制调用次数,nginx端使用lua实现过滤规则,实时监控TOP 20请求,DDOS防火墙,Druid sql防火墙,前台敏感数据隐藏
  • 防重复提交 前台使用Token机制防重复提交,后台使用乐观锁防重复提交
  • 性能优化 动静分离、开启gzip、优化业务减少请求、使用异步消息减小事务
  • 动静分离 将静态资源从前后台分离,并对项目透明,项目目录mount到nfs
  • 代码质量 搭建代码审核平台reviewboard,强制代码审核;自动化测试;单元测试 spring-test
  • 封装3个基础框架包 utils,dbutils,appframe
  • 自动化打包 使用脚本自动化打包及部署,并执行测试用例,使用saltstack下发配置文件

后续待做

  • 培养优秀程序员 招聘前端工程师
  • 规范项目管理平台redmine的使用
  • 需求规范
  • 设计规范 设计文档
  • 加强单元测试
  • 每日构建及自动化测试
  • dubbo SOA治理,负载均衡,提高通讯性能
  • 分布式日志收集处理
  • 监控平台 运维、业务、日志
  • 账务系统银行托管


blog comments powered by Disqus
—  原创作品许可 — 署名-非商业性使用-禁止演绎 3.0 未本地化版本 — CC BY-NC-ND 3.0   —