OneCode:错误码管理平台背后的几点思考

做者:张胜利  转载至微信公共号:方凳雅集微信


前言


OneCode是一个阿里内部的错误码管理平台,简单来讲就是维护错误码和它对应的描述。它是一个极其简单的一对一关系,对它的操做也是极其简单的CRUD。在这个“极其简单”的背后,我想分享一下个人几点思考。运维


错误码是有价值的


咱们在每一个系统、每一个应用中都有一套本身的错误码,这自己就代表咱们承认错误码的价值。正如HTTP的Code,一看到5XX,咱们就知道是服务端的问题,一看到4XX,就是客户端的问题。错误码给咱们提供了一种快速过滤问题的方法。同时,咱们也但愿他人在看到错误码时,知道发生问题了和这个问题的缘由,尽管不是每一个人都能作到这一点。好比用户看到4XX错误,知道是己方的缘由,而不是服务提供者的缘由。设计


因此,错误码给服务提供方提供了一种快速排查问题的手段,给服务消费方提供了一个分析问题的方法cdn


让错误码发挥价值


咱们一般采用文档的形式,维护一份错误码,但这份错误码每每只有几我的知道,而且也不能保证维护的持续性,在发生问题时,咱们第一反应也不是查找这份文档,此时,这份错误码并无发挥真正的价值。对象


什么叫错误码发挥了价值呢?若是服务消费方看到一个错误码,知道Message或者有地方查询到对应的Message,并能作出初步判断;或者服务提供方拿到一个错误码,知道Message,能初步断定问题的缘由。这两种状况,错误码都发挥了价值。blog


但现实状况每每会遇到阻力。接口


  1. 错误码透传问题:咱们指望错误码能够透传,返回发生错误的错误码,在遇到错误时,能够直接定位到发生问题的地方,减轻运维成本,甚至客服同窗也可根据客户的错误码反馈,初步作出判断,但现实是不多有系统作到这一点;
  2. 查找错误码描述信息问题:在系统接口调用层会有Message字段,但面向用户的Message大可能是通过包装的;在处理问题时,须要找到错误码对应的真实描述信息,在哪里能够查找到呢?


因此,错误码发挥价值的简单断定方法是:不管是谁,均可根据错误码可初步断定错误的缘由文档


错误码服务的人群


在错误码设计以前,咱们须要先考虑一下咱们的错误码服务的人群。产品



错误码的两端是“提供方”和“消费方”。我想向下深挖一下,谁是提供方,谁是消费方,由于这会影响到咱们如何设计错误码。it


对于服务端各系统之间的调用,不管是提供方,仍是消费方,大多都是技术人员。而对于用户端,提供方是技术人员,而消费方不一而足,咱们简单的把他们统一为非技术人员,多是用户,多是客服同窗,也多是产品或运营同窗等。


因此,错误码服务两类人群:技术人员和非技术人员


错误码的设计原则


不论哪一种设计规则,咱们最终的目的都是:高效的解决问题。在实现这种目的的同时,咱们要考虑服务的对象及服务对象的使用方式,即站在对方的立场上考虑一下。


一般你们在设计错误码规则时,会从“系统 -> 引用 -> 模块 -> 区分码”的多维度进行设计,这对于服务提供者来讲很是有价值,知道是哪一个模块出现了问题,但也要有辅助信息帮助了解到底哪里除了问题,好比调用了哪一个方法、Message是什么。对于服务提供者来讲,知道了Message,也大致知道了错误是什么。另外一方面,对服务消费者来讲,“系统 -> 引用 -> 模块 -> 区分码”这一整套的设计是无感的,徒增理解和交流的复杂度。


OneCode中错误码的惟一原则就是:简单。更多信息,经过错误码详情连接的形式触达。应用的设计主要是为了权限的控制,固然也可无应用的概念。应用错误码前缀,是对当前大部分已有应用的兼容,无他,更好,尤为是对非技术人员。


因此,OneCode的错误码设计规则的惟一原则就是:简单


OneCode:错误码管理中心


其实,我以为OneCode像是荒野中的一株绿芽。错误码一直在野蛮中生长,每一个系统都有本身的错误码规则,也有对应的参考文档。设计错误码之初咱们都有雄心大略,制定标准,持续维护,但结果并不理想。OneCode如今还在生根发芽,还有半片绿叶护身,但愿能给你们带来帮助。

相关文章
相关标签/搜索