1 项目背景

所在业务在早期没有营销费用,买家购买商品的折扣优惠是由卖家提供的。全部订单的终于价格是由卖家和业务方确定的,整个购买流程非常easy。

如今此业务收受到公司重视,业务团队能申请到营销费用。业务团队能主动补贴折扣优惠。一件东西进行促销时,用户购买此物品后。由业务方出钱补贴折扣的费用。而卖家不须要考虑优惠折扣。实现这样的营销需求须要和第三方的团队合作。比如商家营销团队、账务团队。

2 项目管理

团队协作

项目開始的时候。我方向这2个团体介绍业务背景,提产品需求,开头非常顺利:业务边界范围的界定、接口交付时间、联调測试时间、系统上线时间。

1周之后获知:账务团队又一次安排了开发负责人。然后和这个开发同事沟通之后,才发现之前讨论的需求他全然不了解,然后又一次開始讨论产品需求和实现方案,结果之前定的时间点所有废弃。由于负责的同事说实现的方案非常复杂,第一次无语了。。。

然后我发開始消减产品复杂度。。。又一次定时间评审需求、确定每一个进度的时间点。

总结:核心业务假设依赖第三方的团队。在项目初期应该尽量他们沟通,确认项目初期是否有已经开展、是否有不清楚的细节。尽管在项目開始的时候又一次安排开发负责人的情况非常少。但确实存在。并且又一次评估复杂度之后。发现对deadline影响非常大。

对于这样的问题除了项目初期尽量暴露出来之外,发生的时候,要和产品需求方又一次确定需求中是否有些模块可以折中成简单的规则,比如:每一个商家的每一个订单的转账补贴由实时结算的方式改为 每一个商家补贴日结+提供日结明细流水的方式。由于这样的方法可以继续复用账务系统现有的日结逻辑,不须要汇款系统新开发实时结算模块。

基于这个教训,我们之后和营销系统、账务系统每隔2天都会互相通报进度。分批次提供或者要求提供 API接口。在自己业务系统通过mock方式完毕全部的流程后。分批开发、联调接口,这样可以在比统一交互时间点更早的时间进行联调和自測。两方系统API接口可以并行的联调、測试、开发,充分利用时间。

測试环境不稳定:在业务主流程开发联调完毕之后,账务系统同事通知说他们的測试环境不稳定,可是我们自以为他们会将这个问题搞定,等了一天之后发现依旧不稳定。就顺便问了下他们什么时候能搞定,结果才知道:和国足踢进世界杯一样。希望渺茫。⊙﹏⊙b!

!之前还想再等等,假设再等下去。那就餐具了。我们果断去他们的工位上開始沟通測试方案,用一天的时间现场自測、磨合,之后開始业务測试----在聊天工具上沟通測试中的问题,之后測试非常顺利。

需求变更

在项目中。PM是不能接受需求有太大的变化----推断根据是在当前的技术实现的复杂度。而不是依赖于产品功能的描写叙述。

所以能被接受的需求变更,一般属于产品功能的简化需求。

在跨团队合作中,一个需求简单的变化,假设没有同步给合作团队,非常有可能造成项目的延期。

这样的变化即使由产品方通知了合作团队,技术团队也要再次沟通确认,合作方的技术团队非常有可能由于这个小小的需求变动将技术实现方案大改,并且不会主动通知。PM要时刻关注这样的变化,并且保证全部团队时刻了解最新的产品需求。

这次项目中,暂时决定有个功能在此活动不会被使用(业务方来不及统计数据),可是随后的活动都会被使用,可是未及时同步到位,结果遭到合作方的吐槽,说是假设这样,此版本号就能够不开发这个功能了,延期到下个版本号。

只是最后全部的功能都按时上线,\(^o^)/~。

这样的问题归根结底是一定要把沟通放在第一位。

2 系统设计

模块和耦合

做好业务边界的划分,保证新业务功能模块和当前系统的关联关系最少,易于从逻辑上或者物理结构上进行切分。独立的业务模块仅仅处理一件事件,并且将这个事情处理的非常完美。

并且易于之后应用于其它业务场景,做功能扩展也不会历史业务包袱。

健壮性

健壮性分为业务实现的健壮性和系统服务的健壮性。

业务实现的健壮性体如今业务的幂等性、事务性、容错性等方面。

和REST架构风格中POST/PUT类型接口的实现原则一样,最好每一个接口要有幂等性的特征,query类型的接口天然支持幂等性,可是ADD/UPDATE/DELETE类型的接口须要一些特征參数来实现这些原则。一个完毕的交易业务由多个子流程A、B、C等子流程组成的。

假设C流程失败了,应该怎样处理当前交易业务呢?

有2种场景:

1、  假设当前交易是另外一个交易的附属流程。由于前置条件符合业务场景,则次交易流程是不同意失败的,那么事务在这样的场景是不合适的,仅仅能通过业务状态来重试,保证终于成功。

2、  另外一种方式也非经常见:假设C失败,通过事务/分布式事务来将A、B的操作所有回滚,此次业务操作失败。

假设2种方式都是可选的,第1种方式比較合理,由于可重试的实现方式,不会由于某个流程临时性错误:数据库连接失败、线程池任务加入失败等等,而影响其它业务流程,同一时候这些接口能暴露到管理界面便于之后的人工干预、系统自己主动的补偿操作。

通过业务健壮性来保证给提供使用方的服务的终于状态肯定是符合预期结果的。

系统服务的健壮性体如今良好的错误通知和恢复策略。系统中单个节点宕机或者一段时间内服务不可用或者压力过大。不应该导致整个服务集群不可用。

所谓的Load Balance、Failover、Failback、Throttle(Sampler) 这些软硬技术策略可以发挥非常大作用。

自我监控

监控分为业务监控和系统应用环境的监控。

业务系统监控主要关注业务接口的RT/QPS、成功和失败次数,核心业务的成交量等。

在某个时间段内的假设有数据指标波动较大,有可能是某些业务接口出现故障了;或者一些偶发的错误报警也须要关注,这些偶然的也有可能是代码逻辑的bug或者。系统快达到瓶颈导致的。

系统应用环境的监控就非经常见了系统的Load、CPU、MEM、磁盘IO、网卡流量、JVM等。

管理入口

业务管理界面:之前一直强调系统的幂等性、容错性。既能够通过系统自己主动重试来达到终于一致性。也能够便于暴露接口到管理页面,由管理人员人工干预进行补偿操作或者数据订正。本次系统基本上全部的服务接口都暴露到管理上,非常easy做数据订正和业务重试。

配置项管理界面:高可配置性是一个系统可以非常easy做到服务的高可靠性、易扩展性。

通过改动配置可以停用/启用不重要的流程,启用/停用压力过大的服务。。。这次系统上线開始做活动,由于新版功能上线怕账务计算错误。通过配置暂时停止划款操作,账务总额确认通过后,才启用这个业务配置。

3 总结

每次的项目都会有不如意的地方。在项目流程上的:沟通不顺畅、人员变动、需求被强制大改。有些是依赖的第三方系统的细节不透明,首次使用之后,常常会在遇到状况才发现某些隐藏规则

项目流程管理&&架构总结的更多相关文章

  1. 使用Visual Studio Team Services敏捷规划和项目组合管理(七)——流程定制

    使用Visual Studio Team Services敏捷规划和项目组合管理(七)--流程定制 在Team Services中,可以通过流程定制工作追踪体验.流程定义了工作项跟踪系统的构建部分,以 ...

  2. 从国内流程管理软件市场份额看中国BPM行业发展

    随着互联网+.中国制造2025.工业4.0等国家战略的支持与引导,企业在数字经济时代的信息化表现惊人,越来越多企业认识到,对于企业的发展来说,信息自动化远远还不够,企业的战略.业务和IT之间需保持高度 ...

  3. PMP:5.项目范围管理

    项目范围管理包括确保项目做且只做所需的全部工作,以成功完成项目的各个过程. 管理项目范围主要在于定义和控制哪些工作应该包括在项目内,哪些不应该包括在项目内.   核心概念: 规划范围管理:为记录如何定 ...

  4. 网络Devops探索与实践 流程管理分析师

    https://mp.weixin.qq.com/s/OKLiDi78uB8ZkPG2kUVxvA 网络Devops探索与实践 王镇 鹅厂网事 2020-09-23  9月16日举办的2020 ODC ...

  5. 【PMP学习笔记】第5章 项目范围管理

    一.规范管理的内涵 项目范围管理:包括确保项目做且只做所需的全部工作,以成功完成项目的各个过程. 项目范围:为交付具有规定特性与功能的产品.服务或成果而必须完成的工作. 预测型:开始时定义可交付成果, ...

  6. 熊乐:H3 BPM为加速企业流程管理提供源动力

    近日,在北京·金隅喜来登酒店,H3 BPM以"让天下没有难用的流程"为主题,正式发布H3 BPM10.0版本.全新的业务流程管理系统在易用性方面大大提升,并且全面支持Java与.N ...

  7. PMP备考_第五章_项目范围管理_实践思考

    项目范围管理 前言 今天学习项目范围管理的内容,深切的感受到了原单位在项目管理方面存在的问题,今天在这里做一个总结,既相当于对项目范围的一个学习整理,也相当于自己对项目实践过程中存在问题的一个思考. ...

  8. 规范化的软件项目演进管理--从 Github 使用说起

    规范化的软件项目演进管理 从 Github 使用说起 1   前言 首先,本文的层次定位是:很基本很基础的 Github 工具的入门级应用,写给入门级的用户看的. 基本上工作过几年的人,下面描述的这些 ...

  9. PMP 第五章 项目范围管理

    1.范围管理主要是干什么?什么是产品范围?什么是项目范围?    项目范围管理包括确保项目做而且只做成功完成项目所需的全部工作的各过程.管理项目范围主要是在定义和控制哪些工作应该包括在项目内,哪些不应 ...

随机推荐

  1. 浅析C#组件编程中的一些小细节

    控件与组件的区别(Control&Component的区别) 作者:作者不详  发布日期:2011-06-30 12:08:41 控件与组件的区别(Control&Component的 ...

  2. ArcGIS教程:地理处理服务演示样例(河流网络)(三)

    设置输出符号系统 步骤: 展开 StoweStreamNet.tbx 并双击创建河流网络模型. 接受默认的 45 公顷并单击确定以运行模型. StreamNet 图层将加入至 ArcMap. 右键单击 ...

  3. 【例题 6-16 UVa 10129】Play on Words

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 入度减去出度个数为1的点和为-1的点各有1个,然后其他点入度减去出度为0 或者全都是入度为0的点即可. [代码] #include ...

  4. Android NetworkOnMainThreadException异常

    看名字就应该知道,是网络请求在MainThread中产生的异常 先来看一下官网的解释: Class Overview The exception that is thrown when an appl ...

  5. 克隆windows 2008 x64 后网络问题

    克隆windows 2008 x64 后,网卡中配置IP地址192.168.199.40 (NAT 模式) 内网无法ping 通该机器. 使用ipconfig 查看IP显示为 169.254.203. ...

  6. SDWebImage使用

    SDWebImage这个类库提供一个UIImageView类别以支持加载来自网络的远程图片.具有缓存管理.异步下载.同一个URL下载次数控制和优化等特征. 将SDWebImage类库添加入工程时,一定 ...

  7. hadoop的关键进程 分类: A1_HADOOP 2015-06-06 11:37 52人阅读 评论(0) 收藏

    hadoop集群中主要进程有 master:   NameNode, ResourceManager, slaves:   DataNode, NodeManager,  RunJar, MRAppM ...

  8. HINTERNET应包含的头文件

    #include <afxinet.h> DWORD status=0;DWORD dwLen=sizeof(DWORD); if(!HttpQueryInfo(hRequest,HTTP ...

  9. 【Codeforces Round #185 (Div. 2) A】 Whose sentence is it?

    [链接] 链接 [题意] 告诉你每句话; 然后每句话是谁说的和开头与结尾的一段字符串有关. [题解] 一个一个判断就好; 注意大小<5的情况 [错的次数] 在这里输入错的次数 [反思] 在这里输 ...

  10. 随手可得的Application对象

    在Android的开发其中,Application和Context对象应该是我们接触最多的对象了,特别是Context对象. 当我们在某个Activity或者Service其中时,因为它们本身就是Co ...