App开发流程改进建议

问题和现状

  1. 产品会在临上线一两天提出需求变更

  2. 在需求评审阶段,看不出问题,在执行阶段,发现逻辑需要修改。

  3. 领导临时加需求,往往导致加班

  4. 上线压力大,有点乱,有点急,风险高,容易出现遗漏问题,临时版本多

  5. 在开发过程中,需求仍然不确定,导致反复修改,相关人员对同一问题的理解偏差较大

  6. 后端扩展个信息,测试增加测试案例等等都可能导致客户端进行修改。

原因分析

  1. 从后台到移动客户端整个流程太长,涉及人员太多。沟通不充分和依赖等待造成的浪费很大

  2. 单纯的word文档,或者口头说,比较抽象。评审环节必不可少,不过光靠评审是不够的。发现的风险,评估的工作量等都不是很准确。

  3. 交互设计毕竟是模型,跟实际程序相差比较大。如果做高保真模型,产品将挤占更多的开发测试时间,导致设计和实际程序落差更大,开发的加班更多

  4. PC和APP共用一套后台,耦合严重,APP开发“PC思维无线化”现象严重

  5. 开发版本直接上线运行,中间缺少缓冲,风险较大

  6. 缺乏概要设计和充分的验证,导致边开发边改需求,造成不必要的浪费和混乱。

  7. 开发、验证、上线三个关键动作集中处理,压力大,风险高

如何解决?

  1. 在APP和后台服务之间增加“独立网关”,独立开发,独立部署,作为“APP的后台,后台服务的前端”。

  2. APP和PC各自拥有“独立网关”,根据各自特点独立开发,独立部署,实现解耦,解决“PC思维无线化”问题。

以上两点可以参考1号店架构师王庆友写的架构文章一个可供创业公司参考的移动APP服务端架构演进方案

  1. 以APP的“独立网关”为切入点,将整个流程分为“APP开发”和“后台开发”两个相互独立的部分,解决流程过长的问题。
  • “APP开发”适合用“迭代开发”的思维,与产品和运营做更充分的沟通。主要任务是快速应对需求端的变化,并将需求变化集中在前端,为后台开发提供一个相对稳定的环境。
  • “后台开发”适合采用传统的“瀑布模型”,面向“独立网关”进行服务开发,与终端用户、产品、运营等实现解耦。主要是实现高并发,稳定可靠的服务,从本质上提升用户体验。
  1. 版本模式分为开发版本,内部试用版本,生产版本。
  • 开发版本采用内部release的方式,接开发服务器,使用者主要是开发和测试。
  • 内部试用版本接“独立的真实服务器”,用户总数受控制,比如100个。iOS版本在审核期间也可以接这个版本,可以提供提供几个“超级用户”,方便审核人员审核。使用者主要是产品,运营,以及经过筛选的“认证用户”,比如公司领导、外部合作商户、内部员工、铁杆粉丝等等。
  • 生产版本接“正式的生产服务器”,用户比例受控制,采用“灰度发布”的方式,逐步放开用户量。使用者主要是产品和运营。
  1. 将发布、验证、上线三个关键节点在时间上错开

流程改进

  1. 第一级:“瀑布模型”,分为“APP开发”和“后台开发”两个阶段,面向“独立网关”进行开发。
  • “APP开发”优先,主动应对领导、产品、运营等的变更需求;让抽象的设计尽早变成实际可用的产品。
  • “后台开发”待变更基本稳定之后,基于特定的APP产品提供具体的实现,专注于高并发的处理和安全性。
  1. 第二级:“APP开发”实行“迭代开发”。“后台开发”采用“瀑布模型”。
  • 视觉、开发、测试、网关等组成“虚拟的小团队”,指定一个负责人,面向具体业务开发。
  • 人数限定在10人左右。
  • 实行“每日站立会议”制度,每人限时1分钟,讲清楚(a)昨天做了什么(b)今天做什么(c)需要什么协助。
  • 如果能能将“虚拟的小团队”的座位调在一起,成立“作战室”,效果会更好
  • 管理工具适合迭代模型的“JIRA”
  1. 第三级:在一个迭代周期中,实行“瀑布模型”。分为“概要设计”(5工作日),“开发测试”(10工作日),“版本验收&&下一版本的需求评审”(5工作日)三个阶段。总时间约为4周,1月1次版本迭代。可以简单地以月初为起点,月末为截止点。
  • “概要设计”:本阶段的输入是“评审后的交互设计”,需求已经基本稳定。
    开发进行概要设计,在团队内部讨论实现方案,对于原型中逻辑不落地的情况及时提出修改意见。
    “独立网关”设计API接口,能接的后台系统就接上,不能接的,提供修改界面,给测试录入测试用例数据。
    测试设计测试用例,并在“独立网关”上输测试用例,创建Mock数据。
    视觉进行页面设计,有问题或者变更及时和开发测试沟通。
    领导、产品、运营等需求方原则上不要再变更需求,不过实在有必要,这是最后的变更机会,这个阶段变更的代价还是可接受的。
  • “开发测试”:开发、网关、测试、视觉等进入实际的执行阶段,以“虚拟小团队”模式进行,“每日站会”也可以开展起来,团队内部及时沟通。
    领导、产品、运营等需求方在这个阶段不要提需求变更,给执行团队一段稳定的干活时间。如果有兴趣,可以参与相关“虚拟小团队”的“每日站会”,及时了解进展状况,能提供相应帮助就更好了。
  • “版本验收&&下一版本的需求评审”:产品和运营团队接管产品,进行验收。如果条件允许,可以切换到“内部试用真实服务器”,这取决于后台开发状况。根据实际产品体验情况,提出下一版本的需求变更。评审下一版本的需求。
    开发在这个阶段做新需求的技术预研,验收阶段的hotfix,代码重构,历史遗漏bug的解决等事项。为下一阶段的开始做好充分的准备。
  • 管理工具适合瀑布模型的“禅道”

独立网关

APP网关接口.jpg
  • APP端的API为iOS、Android、weex、H5统一提供数据服务

  • 对多个后台服务做聚合,对APP提供粗粒度的数据,以减少远程网络调用次数。比如当前的首页要访问4次网络,可以在这里进行“聚合”,让APP只要一次网络访问,就能展示必要数据。

  • 提供服务器切换功能。根据版本号,可以切换“开发服务器”,“内部试用服务器”,“正式服务器”三种。对APP提供统一的访问地址。

  • 提供后台配置功能,有些地方叫CMS。在开发阶段,可以给测试配置测试案例,正式使用时给运营配置动态数据。

  • 提供缓存数据服务。如果后台服务没好,可以在这里提供开发需要的Mock数据,让整个流程形成闭环。

  • 提供公共逻辑,比如安全,监控,日志等,也可以配合后台加锁,加队列,减轻数据库访问压力等等。

  • 提供“智能升降级”功能,隔离问题接口

  • 提供流量控制开关,为“灰度发布”提供技术基础

关键点

  1. 与传统模式的核心区别是:由“后台功能推动” 演变为 “前端需求拉动”。后台可以延后一个或者半个周期实现,面向“独立网关”的数据接口编程。在沟通上,大家讨论的“标的”由以前的“想法、Word文档、交互原型、设计图、动画、demo... ...”转变为“实实在在的产品”(应该说是半成品,后台数据落地就是成品了)。

  2. App开发和PC开发相互独立,互不影响。PC和APP的特性不同,没有必要强调一致,也没有必要同步发展。

  3. 由后台“技术驱动”,改为前台“需求拉动”,将一个很长的技术链分为两个阶段,面向“独立网关”这个接口编程

  4. 是中间产品,是半成品,并不仅仅是Mock数据。在开发服务器上,70%以上的接口都是真正接上的,只有不超过30%的新增接口,才会在“独立网关”上先定义APP API,然后提供Mock数据。并且这个mock数据由测试选取“典型的测试案例”,“独立网关”提供通用的key-value数据库,以这个API的id为key,内容就是一个json。在后期的性能提升中,这个通用的key-value数据库还可以作为缓存服务存在。

  5. 真正的开发时间还是“2周不变”。“设计一周”是为了加强技术团队内部的沟通,包括开发之间,开发与测试之间的沟通。“验收一周”是为了加强技术部门与需求部门之间的沟通。

  6. 瀑布模型优点是风险管控严格,适合后台开发。迭代模型优点是沟通方便,适合APP客户端。以“独立网关”为切入点,两边用不同的开发模型

  7. 职能型组织有利于专业技术积累。项目型组织有利于消除部门墙,利益趋向一致。“开发的两周”采用项目型组织,专注于目标的达成;“技术和验收的两周”采用职能型组织,重点在技术的积累。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,783评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,360评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,942评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,507评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,324评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,299评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,685评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,358评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,652评论 1 293
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,704评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,465评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,318评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,711评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,991评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,265评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,661评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,864评论 2 335

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,121评论 25 707
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,502评论 18 139
  • //我所经历的大数据平台发展史(三):互联网时代 • 上篇http://www.infoq.com/cn/arti...
    葡萄喃喃呓语阅读 51,154评论 10 200
  • 此时的心境 我空飘在一叶扁舟之上 旁处鸟叫不断 我似乎又是在期盼 那双眸 那活泼且充满青春的躯体 只要再等我度过这...
    欢厘阅读 150评论 1 3
  • 一阵风,一颗种子,一片蒲公英。随风飘洒的灵魂散发着无边际的轻盈与欢乐。诉说着青春的故事。那时我们正当年少,懵懂无知...
    上攻素文阅读 170评论 0 0