我们创办扇贝网
shanbay.com 至今,技术上跌跌撞撞的遇到也解决了不少问题,譬如:
我们从前迁移一次数据库需要半夜停机几小时,后来使用mylvmbackup和LVM快照,基本几分钟可以搞定。
因为uwsgi的参数利用不足,导致应用服务器即便负载很小的时候依然会常常拒绝服务,这个问题折腾了我们有大半年。
因为MySQL的某个参数受Raid卡的电池影响,导致我们新买的一台服务器在机房里白呆了一个月,花了我们一两周的时间调试,最后通过升级Raid卡解决。
想来不少问题对于很多技术团队而言可能是有共性的(假设和我们一样,技术凑合,能出活,但是没有大牛),因此想把这些经验教训结成一组文章,一来帮些人少走点弯路,二来能得到高人指点补充,也能帮我们再少走点弯路。
提纲大致如下:
--系统环境配置
LVM 文件系统(需要LVM的快照用于MySQL备份)
KVM 虚拟机(在机器有限的情况下搭建多个测试环境)
--开发环境
Virtualevn 有相对隔离的Python运行环境
Pip
--单元测试
--代码管理和开发发布流程
Git
--Web服务
Nginx 前端Web服务
uwsgi 后端服务,衔接Django程序
--持续集成
Jenkins 自动定时从Git的master分支里pull代码,并执行单元测试
--数据库
MySQL 重要参数配置
数据备份 基于LVM 快照方式的mylvmbackup
较少停机时间的数据库迁移 (从一台物理主机搬到另一台)
分库
--前端
另外:
1. 我们不是大牛,所以不能保证这系列文章会是best practices,但是是实际用于扇贝网(近60万注册用户,3-4万日独立访客)的working practices,而且我也希望抛砖引玉,借助社区总结出更好的practices
2. 文章只关技术,不会有创业感悟或者产品心得,这方面去看看Getting Real或者Rework就差不多了
3. 我们用的是Python/Django,但是系统和数据库方面的内容和开发语言是相对独立的。
先在v2ex上发一下,听听各位意见,大家要是有兴趣,我写起来会比较起劲的
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/33489
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.