金属盖厂家
免费服务热线

Free service

hotline

010-00000000
金属盖厂家
热门搜索:
技术资讯
当前位置:首页 > 技术资讯

CMDNClub第20期粉笔网移动创业产品的架构和项目管理实践万芳

发布时间:2020-02-14 11:20:24 阅读: 来源:金属盖厂家

CMDN Club 第20期:粉笔网移动创业产品的架构和项目管理实践-CSDN.NET

摘要:本期,CMDN活动以“移动创业产品的架构和项目管理”为主题,邀请粉笔网技术总监郭常圳和高级研发工程师杨元祖,解读“5个程序员,3个月,30多万行代码,1000+bug”粉笔网快速开发的故事。从粉笔网多终端产品的快速开发说开,探讨移动创业产品的架构和项目管理。

CMDN第二十期活动于10月10日在北京福泰酒店公寓举行。本次活动以 移动创业产品的架构和项目管理 为主题,邀请粉笔网技术总监郭常圳和高级研发工程师杨元祖,解读 5个程序员,3个月,30多万行代码,1000+bug 粉笔网快速开发的故事。从粉笔网Web、iPhone、Android多终端产品的快速开发说开,探讨移动创业产品的架构和项目管理。

粉笔网产品技术总监郭常圳:粉笔网的Scrum项目管理实践

郭常圳介绍了粉笔网整个团队的构建过程和管理方式。粉笔网于4月16日正式成立,现共有7位员工。经历4个月,推出官方网站粉笔网、Android和iPhone客户端。该客户端代码分别约是7万行,前端约是8万行,服务器端约为10万行。如此之大的编程规模,粉笔网是如何从容不迫开发、测试、上线?郭常圳从开发过程中总结出三个成功要点,优秀的个人能力,借助先进的工具和流程,以及6x11的努力。

他指出,粉笔网使用Scrum流程,是通过Product Backlog、Sprint Backlog、Sprint三个阶段相互循环、搭配,可减少复杂性、牵连性,从而保证项目能顺利的上线。在开发过程中,粉笔网每天都会举行站立会议。 除此之外,还在不同阶段开展计划会议、评审会议和回顾会议,这四个会议非常关键。

计划会议,谈论Sprint需要做什么事情,计划好了以后接下来需要做什么。

每日站立会议,讨论今天需要做的事情。有时候是会根据昨天、今天的工作情况来决定是早上开,还是晚上开。

评审会议,例如,我们承诺要做一到十,在评审会议就会审查进度。如果只做到一至九是,但达到了上线标准也可以。

回顾会议,是不针对任何具体的功能、开发工程代码和功能实现,完全是针对这个过程的顺利情况。也就是说,回顾我们Scrum开发流程顺不顺,我们认为每日站会有问题我们应该改进。如果我们认为开发的产品质量不好,是在评审会议会提出。

粉笔网就是通过这么一个大会议,包括评审会议、包括回顾会议,包括计划会议。我们从1到100,挑1到10分析来做,最多是通过Sprint来分析这些事,我们每天通过Sprint拖动工作表,有问题我们及时发现,没问题我们按时上线。这个是Scrum开发过程,其实很简单。

在业内很多人都对Scrum开发流程存有质疑,郭常圳例举一些常见问题并作出了详细解答。第一个问题,Scrum有用吗?郭常圳认为,Scrum就如同一个信仰,首先你需要信任Scrum。他曾经最开始尝试Scrum是做网易微博的时候,花半天时间把所有Scrum流程学习了一遍,现场推演一遍,从而认为Scrumn值得信赖。第二个问题,多少人的团队适合Scrum?Scrum官方显示是三到九个人,维基百科上说三十个人也行。但郭常圳却表示,粉笔网团队少于九个人,我们依旧可以很好的利用资源,开发项目,所以团队人员数量并没有局限性。

粉笔网高级研发工程师杨元祖:多终端(Web、iPhone、Android)的服务器架构

杨元祖演讲主题围绕着粉笔网服务器端的架构,干活十足。据他介绍,在粉笔网创业初期面临很多选择,比如开发语言、存储的选择。但他认为,当面临如此之多问题时,选择也会随之丰富,没有特定的限制,全部可以从头开始。

粉笔网最终选择的开发语言是最熟悉的Java和Spring,这两种语言综合性能是最适合粉笔网未来的发展规模,存储选择了Mysql和Redis。而由于粉笔网拥有多个终端的特性,所以在接口定义的时候遵循Restful的风格。

粉笔网网站主体,相对比较简单的一个部分。有三个终端,WEB、Android和iphone客户端,这三个客户端连上同一个WEB Server,在业务逻辑上面会垂直切分很多的Server,每一个相互之间是独立的,但是将来在性能和其他方面出现问题的时候完全可以做一个独立的Server。Storage,分为两部分,一个是Memcached,还有Mysql。除此之外,有一个跟业务的Push Server,最后还有一个blackhole,这只是一个离线计算的一个框架。

粉笔网部署方案。Client包括手机端,也包括客户端,图片、检索文件通过CDN访问。Nginx做附载均衡,这是一个通用的做法。我们刚刚说的业务逻辑层,下面连接是多个存储相关的事情,一个是REDIS,MySQL也是用多个。

我现在说一下NFS,我们一开始就没有想到应该怎么存,一般数据我们可以防盗REDIS,也可以放到数据库,但是这个文件太大了,不可能放到那个地方。我们一般想到两个选择,一个是分布式文件系统,一个是裸的文件系统,由于分布式文件系统要求配置和成本偏高,所以,一开始我们就放弃了分布式文件系统。我们直接从裸的文件系统做NFS,我们有多个Server访问,很自然想到了NFS。NFS就是所有文件请求在NFS机器上,为了分担这个读写请求,我们会请多个Server,做一个垂直切分,来分散读写请求。当然NFS本身没有任何的备份,或者是恢复机制,所以我们在这个上面加了一个RAID,在此基础上还要定时备份,这个备份有多个层次,我们备份不同的机器、不同的机房,我们在亚马逊租了一个主机,尽量保证数据不丢失。

看一下MySQL最简单就是主从复制的方式,在这个基础上我们做了一些改动,MySQL默认为异步,所以说这会有一个问题,SLAVE慢Master半拍,如果这个时候Master挂了客户端认为这个数据已经提交了,但是在SLAVE数据是不一样的,我们尽量解决这个问题,我们用Semi Sync的方式,现在用起来也比较方便。什么原理就是说在客户端提交一个事务的时候,还要等到Slave写完了之后才可以返回,这个时候Master挂,Slave已经接收到这个数据,这个在一定程度上解决数据不一致的问题。

看看Redis,我们主要是用了HAProxy做附载均衡,采用了链矢Master Slave方案,我们只写第一个事例,复制到Redis2,再到Redis3,这样一个好处是说,我可以任意加一些事例,这样读复制可以很容易做。然后会有,我们看到这个平静一就是Master会把所有的请求扛下来,这个时候压的比较大的,所以在REDIS没有开持久化的东西,紧接着MAWaster开一个AOF持久化工作,不会出现其他乱七八糟的东西。这个时候Master挂了,很简单我们把紧接着的服务移过来。服务挂了之后要接续只要取MASTER一个AOF来接续就可以了。

美女人体写真

名言大全

励志语录