RCA

Wesley13
• 阅读 502

1.背景知识

微信授权,php,订阅号,微信授权代理

2.问题现象

外包开发个php项目,最终上线,不想让外包人员拿到服务器权限,所以总监让我介入帮忙部署。外包和业务告诉我代码在外包服务器上测试通过了要求我上线部署到自己服务器。开始我说上线部署也就3天搞定,我本来打着富裕时间去的,我也有其他开发工作要做。结果噩梦的开始,这外包也是偷懒的人,文档,sql,代码,本来说一次性给全,确实给了,基本上我部署时候发现一个问题,找他要一部分代码或sql,好不容易部署上去,微信授权有问题。

3.影响范围

微信授权

4.问题原因

多个问题,微信订阅号无法微信授权,只有公众号可以。阿里云那台机子配置有问题(没有外网出口)

5.问题分析过程

5.1.微信授权第一步获得code时候就报错,开始本来觉得订阅号可以做微信授权,后来查了一下微信文档说只能公众号能微信用户授权,而我们公众号在java项目使用,不想改java项目了,告诉给外包问题原因,忙别的工作去了。外包技术没重视,以为我瞎说的,他们改代码改了半天,又在他们公众号上测,过了3天才确认是这个问题,结论说没办法处理,问题提给我。

5.2.我网上找了找文章,又试了试用订阅号微信授权的旁门左道的招儿,失败,放弃,我们公众号授权回调域名不能改,老实的改JAVA项目。考虑用微信授权代理的方式简单解决,微信授权第二步回调到java域名的请求,该请求302到php项目域名上(两个项目域名不同)。改php项目获得code,然后跳过php微信授权第一步,后续让外包写的代码执行。

5.3.微信授权还是有问题,PHP不报错,我让外包排查,外包推诿了2天,重新部署了两回代码还是有问题,原因也没有发现。后来我烦了,自己查了,php写错误日志,发现该服务器没有外网出口,当时我一度不敢相信,因为该机子有往外发邮件的服务,按理说有外网的,再三wget,ping确认,确实没有,怀疑邮件服务可能是dnat处理掉了,最终找运维确认没有外网出口(运维也是外包,沟通成本比较大),一般我都习惯自己定位问题了后再找运维。

5.4.大改php代码,授权完全通过JAVA微信授权代理获得openid,昵称,头像。改完以后又发现微信分享不行,问了下前端同事,他说可能是微信js授权有问题,没办法,继续调PHP,js微信授权也走java,最后完工上线,这事开始上线实施,一共拖了2周半,中间各种人有事,任务互相推诿,让对方排查环境。

5.5 总监让我对外包项目进行验收,说实话这验收报告我都不想签字了,实施上线联调都是我做了70%,不过想想项目外包一共才给人家1w块,想想算了大家都不容易,签了个字了事了。

6.解决办法

外包沟通成本太大,有时候自己动手调可能更快。

7.后续处理措施

8.经验教训

第一次与陌生外包人员打交道的项目风险一定要考虑清楚(我也见过靠谱的外包),尤其你中间没有参与检查的话。最后的沟通时间,联调成本,上线时间,测试时间统统往大了估算,多估2-3倍是有必要的。实在任务推诿的太厉害只能自我驱动,问题自己排查,要不有时候真心推进不动。如果技术人员参与少的情况,建议考虑配置全栈工程师或高级工程师,有时候在代码业务都陌生的情况下,这类开发会适应性强很多,减少不必要的沟通和等待反馈的过程,如果配了低级工程师,那只会把越来越多的无关人员拖入恶梦。

9.RCA类型

风险预估不足。

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
待兔 待兔
3年前
软件开发外包的优势,哪些企业适合软件开发外包?
软件开发涉及到需求、设计、研发、交付、维护,很多企业并没有软件开发能力与经验,将软件开发项目外包出去成为一种选择。外包出去企业会少走很多冤枉路,那么进行软件开发项目外包的好处有哪些呢?提高企业工作效率专业的软件开发包括了后台开发、前端设计、实施、后期推广维护等各个方面,团队专业,人员齐全,企业把软件应用交给外包公司来做,自己基本不用花费太多精力,而且
Wesley13 Wesley13
2年前
Java日期时间API系列31
  时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数,是所有时间的基础,其他时间可以通过时间戳转换得到。Java中本来已经有相关获取时间戳的方法,Java8后增加新的类Instant等专用于处理时间戳问题。 1获取时间戳的方法和性能对比1.1获取时间戳方法Java8以前
Stella981 Stella981
2年前
Linux Maven私服安装
LinuxMaven私服安装前景我对maven私服其实并不感冒,国内阿里云的镜像已经可以满足日常工作需要,为什么想着去弄maven私服,想想也是件不得已的事情。由于项目性质从项目外包发展到人力外包,小伙伴的办公场地和环境发生了变化,无网或者部分网络限制的情况也是深恶痛绝。因为项
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
新支点小玉 新支点小玉
3个月前
做软件检测如何少花冤枉钱
市场竞争压力使得专注某一项核心业务的企业成为了市场上的刚需,很多企业会在管理系统实施过程中,将业务外包给相应专业该项业务的外包公司,可以有效节省企业人力物力成本,有利于高效管理。软件测试行业同样也有外包公司,一般的软件企业较注重软件开发,因此在软件测试上趋
新支点小星 新支点小星
3个月前
CNAS做软件测试,如何节约企业成本
市场竞争压力使得专注某一项核心业务的企业成为了市场上的刚需,很多企业会在管理系统实施过程中,将业务外包给相应专业该项业务的外包公司,可以有效节省企业人力物力成本,有利于高效管理。软件测试行业同样也有外包公司,一般的软件企业较注重软件开发,因此在软件测试上趋
Python进阶者 Python进阶者
2个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这