Soft_Job 板


LINE

「本文已取得原作者同意转录」 http://blog.ragic.com/tw/outsource-error-handling/ http://blog.ragic.com/tw/outsource-error-handling-2/ 棍! 厂商写的系统讯息乱七八糟 – 论规范外包商Error Handling的重要(上) 棍! 厂商写的系统讯息乱七八糟 – 论规范外包商Error Handling的重要(下) 到哪里一、魔鬼降临 在总裁一句 “人事冻结” 的命令下, 身为一间大企业的MIS工程师, 展开了 与外包商长期的角力。”魔鬼就在执行的细节里” 一句话点破了外包管理省 工省事的神话。为了避免包商拿了钱一拍两散的常态, 或千拜托万拜托却另 外要你签个 25% MA。因此验收合约的精细度就变得很重要, 今天要和大家 谈的就是规范Error Handling和Return Code这档事。 参与专案外包工作已经十个年头, 从三五人的小公司到号称遵循CMMI/ISO制 度的大公司, 几乎没看到有专案, 在需求文件中对包商交付系统的 Error Handling 做规范。因此当专案结束, 维运人员接手一段日子後, 才 发现原来系统传回 “帐号密码错误”, 有时候事实上是 “资料库连线失败” 或 “伺服器磁碟已满”。搞得维运人员灰头土脸, 三不五时被老板叫去骂系 统写的烂。其实探究原因, 这是由於开发系统时, 工程师常以工程的角度去 做Error Handling, 而非以维运角度去处理。 “那要如何在合约中简单的规范下包商的处理方式呢?” 下面将建议几个法则。 (这里我们不谈“throw early, catch late” 之类的程式编写原则, 那是下包 商工程师撰写上的艺术, 我们在合约中不需多加干涉。) 二、法则1: “用责任区来编Error Code” 对工程师来说, 处理一个错误, 最重要的就是 “技术上这是哪类的错误?”, 分类方法可能是DB, AP, Network, … 但对维运人员来说, 看到一个错误, 最 重要的就是 “谁该处理?”, 分类方法是 “使用者密码错误-使用者要处理”, “排程汇入供应商的产品资料格式有误-供应商的错”,“网路中断-喂!网管醒醒”, … 为了强迫包商工程师改变思考习惯, 避免他不分青红皂白的全部 “try…catch…” 起来传回同一个错误。进而变成有效的下包商验收准则, 你必须先找出与这系 统相关的 “责任区”, 如果Error Code有4码, 第一码可以是责任区的代号, 像: 1xxx-代表使用者操作问题 – 像帐号密码有误。 2xxx-代表供应商介接系统问题 – 可能是汇入资料格式有误, 或根本连不到供 应商的主机。 3xxx-代表系统基础环境有问题 – MIS部门要check是否磁碟已满, 或网路设备 异常。 其它三码则由下包商工程师自行编排分类。 相信我, 这时间花的值得, 这样 工程师在写程式时就会试着去判断问题的原因, 发生错误时, 你手下可怜的维 运团队也不需要再推敲追查半天, 你也不需要无助的找大老板坐镇, 来开那种 永远没结果的跨部门推责大会。另外, 当程式归责错误时, 也可以明确指出是 程式 “defect”, 要求下包商修正。下包商再也没有理由说 “这个是新需求, 要再算钱!”。 三、法则2: 应妥善处理前端错误讯息, 应引导使用者排除问题 如果您不希望天天有客户打电话进来客诉, 就得让错误讯息, 能引导使用者自 已排除问题, 这项需求的确认比较麻烦, 可能需要透过与下包商情境的商谈来 事先定义, 并透过第一线客服人员或直接由使用者试用。当然, 最好是错误讯 息可以不用透过修改程式, 直接以 config file / resource file 的方式, 由维运人员依上线後的客诉情况来微调错误讯息。 但要注意, 详细的引导可能会让你的系统更新困难, 因此一些常变动, 但分散 在各页面的部份, 像客服电话号码, 或某个常变动的权限申请程序, 应要求厂 商读取相同 config, 或 Link到同一则 FAQ。 四、法则3: 应妥善处理前端错误讯息, 不可透露程式安全细节 有时程式错误, 厂商为了方便debug, 会把程式哪行出错的讯息dump在画面上, 甚至还包含了IP, DB Account, Password 等资讯, 不禁叫人捏一把冷汗。近年 来一些 Application Server 已支援 “开发模式” 与 “上线模式”, 上线模式时 会自动隐藏错误细节。但无论透过什麽方式, 厂商必须遵守 “catch 所有可能 错误” 的原则, 毕竟没有一位高阶主管在看到系统弹出丑丑的 “Http 500 Interal Server Error” 时, 会觉得你负责的系统做的棒极了! 五、法则4: 後端错误log应越详细越好 为了追踪问题, 後端错误log当然应越详细越好。若系统流量很大, 为了分析方 便, 可考虑要求厂商log应该是 “可被汇入DB分析的”, “具备自动rotate或灌爆 警示的功能。完整的记录栏位除了发生错误的trace stack之外, 还可依需求包 含来源IP、案件代号、发生时间、输入资料等资讯, 以便连结到特定客诉使用者 行为, 或进行错误类型的统计。 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 219.87.162.162
1F:→ realmeat:确实是要如此, 不过实行的程度有多少就... 04/12 12:39
2F:推 phantom400:付多少钱 做多少事 不管在哪一环都一样......... 04/12 12:55
3F:→ bartschen:作者经验很丰富,我觉得这篇文章很值得参考 04/12 12:58
4F:推 TonyQ:推,切中要领... 04/12 14:33
5F:→ sazabijiang:写给user的程式, 还要防范user造成的error XD 04/12 23:47







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:WOW站内搜寻

TOP