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