文章标题的incident含义:在企业级软件领域里,当客户使用软件提供商的软件,遇到各种问题或故障,可以使用专门的工具,向软件供应商寻求帮助。我们通常称这种工具创建的帮助请求(Support Request)为incident.
今天这篇文章无关具体的技术。Jerry最近使用微软Azure云平台时遇到一个问题,通过Azure提供的Support工具向微软提交incident的过程中,感叹自己十多年来一直是修bug的命,这次终于翻身了,由我给另一家软件公司报bug,体验了一回当上帝的感觉。
我在SAP这些年,一共处理过317个客户incidents(当然并不是所有的都是Jerry修复的,包括我分析后转手到其他部分的也算).
我们Commerce Cloud团队使用Azure提供的Function create API在Azure上创建Lambda Function,过程中遇到一些问题,详见Jerry之前的文章:SAP ABAP应用服务器的HTTP响应状态码(Status Code).
在排除了问题不是我们消费端代码引起之后,我开始给Azure报incident.
虽然Azure的字面意思是天蓝色,但Jerry打开的Azure页面全是下图这种纯黑色背景,只是因为我换了一个黑色主题。
新建一个支持请求(Support Request),类型选择为Technical:
选中之后,Subscription就自动填充为我当前这个用户的订阅ID了。大家可以把Azure Subscription的作用类比成SAP Cloud Platform的Global Account.
然后指定遇到问题的Service类型,和具体的Resource名称。Subscription,Service,Resource这三个字段都是联动的下拉菜单。
Service,Problem type和Problem subtype这三个联动的下拉菜单,共同扮演的角色,类似给SAP产品报incident时需要维护的Application Component. 下图是SAP Application Component的树状关系图。
Jerry个人觉得Azure这种多层级联式下拉菜单的做法,为用户免去了记忆component ID的负担;但作为程序员,我个人还是更喜欢SAP这种通过树形结构维护component的方式。
回到Azure Portal,维护好了问题类型和描述信息后,Azure根据这些信息自动从其后台检索出相关的推荐解决方案。我浏览了一下,发现并不能解决我遇到的问题,于是点Next继续:
这里可以维护明细信息和上传附件。我当时将重现问题的步骤,Postman请求的payload,我的分析,包括我搭建的jMeter等信息全部写到一个PDF文件里了,总共8页,添加到附件里。
然后是选择故障的紧急程度,Azure有四档紧急程度可选:Critical,Urgent,Moderate和Minimal. 而对应的SAP里的术语叫Priority(优先级),SAP incident的优先级也分四档:Very High,High,Medium和Low.
Jerry处理过的317个客户incidents中也不乏Very High的,当时处理时承担的压力,至今思之仍觉得后怕。
尽管明白“程序员何苦为难程序员”的道理,我还是选择了最高级别的Critical impact,享受一次7×24小时的服务。留下自己的手机以供联系。
最后点击Next就能成功创建Support Request.
因为我们享受的Support Plan级别是Premier,在这个级别之下,理论上15分钟之内就会收到响应。
果然,几分钟之后Jerry就收到了一个用Teams发起的会议请求:
我心想,微软真是动作神速啊,这么快就派出工程师准备和我一起在线调试了吗?本来我正在吃饭,只得放下碗筷回到电脑面前。
登入Microsoft Teams参加了会议我才知道,这个会的目的首先是,Azure Support工程师确认他们对我附件PDF里描述信息的理解是否正确,然后讨论这个incident的Severity是否应该从Critical降成Urgent. 工程师们详细询问了我们组对这个API的使用场景,以及当前Azure上是否存在已经上线的应用。最终我也同意了这个降级请求,毕竟微软这套衡量incident优先级的标准和SAP类似,都是按照Business Impact来界定的。
这个会刚结束,我手机又接到一个号码显示为美国的来电,一位自称是微软Critical Situation Manager的女士,询问我对刚才和Azure Support工程师开会的体验,以及对这个incident优先级的降低是否有异议。
整体来讲,我对这次向Azure提交incident的体验很满意,无论是响应速度还是同Azure Support工程师及Critical Situation Manager交谈下来感受到的专业程度,都给我留下了深刻的印象。
最后还是再来回顾一下SAP从业者们最熟悉的如何给SAP产品报incident的工具吧。
在SAP Cloud for Customer about菜单里集成了提交incident的功能:
提交界面比较简洁,维护标题和问题详细描述,上传附件。
当然也能使用最统一最通用的SAP One Support Launchpad:
https://launchpad.support.sap.com
同Azure一样,SAP Support Launchpad也鼓励用户,在实际提交incident之前,首先去Knowledge Base里查询有无相关线索和解决方案。
不搜不知道,一搜吓一跳,原来HTTP 400 bad request确实是一个普遍问题,在SAP领域也一共存在1400多个相关note和讨论:
如果觉得这些搜索结果没有帮助,点击Submit an Incident. SAP incident也分4档不同的优先级:
关于上图的必填字段Component,如果是基于ABAP的SAP产品,很容易在开发包的Application Component字段找到这个值:
如果是SAP Cloud Platform的某个模块遇到了问题,对应的Application Component在SAP Help上能查到:
回到Jerry给Azure报的那个incident,目前还在处理过程中。对此我也非常能理解,这种不能100%重现的故障是最让程序员头疼的。
我想起之前处理过的一个SAP CRM IBASE问题,应用运行时有一定概率会出现运行时Dump,但不是总能重现。
当年Jerry还在SAP成都研究院CRM开发团队工作,负责SAP CRM IBASE的维护。
当时给我报bug的同事也坦言,这个Dump不能稳定重现。如果试一次是正常工作的话......那就多试几次,直到出现Dump为止......
最让我抓狂的是,如果单步调试,这个故障100%无法重现。换句话说,我多年积累下来的在文章SAP错误消息调试之七种武器:让所有的错误消息都能被定位里介绍的ABAP单步调试经验,在这个问题的分析上完全派不上用场。
幸运的是我最终通过自己的分析,写了一个脚手架程序,通过该测试程序能够100%重现Dump. 既然能稳定重现,剩下的任务就轻松了,通过单步调试就能找到问题根源。
这个问题折腾了我整整两天,解决完问题之后,我也做了复盘,分析自己为什么会花掉这么多时间。我把我的经验教训,以及最终通过分析找到能够稳定重现问题的突破口,写成了一篇SAP社区博客:
My Tips about how to handle complex and tricky issues
https://blogs.sap.com/2014/05/01/my-tips-about-how-to-handle-complex-and-tricky-issues/
我把自己采取的问题定位方式归纳命名为“最小系统法”。本世纪初,国内电脑界流行DIY,大家分别购买自己中意品牌的电脑零配件,自己动手组装,运行时经常出现无法开机(俗称“点不亮”)的情况。电脑发烧友们习惯通过“最小系统法”去逐一排查,最终找到出故障的配件。
我处理那个IBASE bug因为无法单步调试,仅能通过ST22 Dump里的静态信息进行分析,所以我也使用了“最小系统法”,分析出可能引起故障的子模块,再写测试程序运行这些模块,逐一验证我的猜想。
关于我提交的这个不能稳定重现的Azure incident,我也会持续关注。最后祝我的同行,处理这个incident的微软工程师好运。感谢阅读。
要获取更多Jerry的原创文章,请关注公众号"汪子熙":
相关推荐
微软AzureStack技术白皮书.pdf是一份关于微软AzureStack解决方案的技术白皮书,该解决方案旨在提供混合云一致的云服务体验,满足不同业务架构所需的云服务需求。在本地运行云服务,连接到Azure,使用各种云服务,...
微软Azure提供了一套强大的OCR服务,它能够高效准确地识别多种语言的文字,包括中文。在这个场景中,我们将专注于如何使用Java来调用微软Azure的OCR API,实现图像中的中文文字识别。 首先,我们需要在Azure平台上...
unity接入微软Azure SDK, 实现文本转语音功能
Azure Stack的工作原理是基于微软Azure云计算平台的技术,提供了一致的应用程序开发体验。Azure Stack允许用户在本地环境中部署Azure云计算平台,提供了一致的应用程序开发体验。 六、Azure Stack的应用场景 Azure...
微软Windows Azure云应用开发实践 微软Windows Azure云应用开发实践是微软云计算平台的开发指南,旨在帮助开发人员快速掌握云计算平台的开发技能。本文将详细介绍微软云计算平台的架构、组件、功能和服务,以及如何...
基于微软Azure云服务的车联网解决方案.pdf基于微软Azure云服务的车联网解决方案.pdf基于微软Azure云服务的车联网解决方案.pdf基于微软Azure云服务的车联网解决方案.pdf基于微软Azure云服务的车联网解决方案.pdf基于...
微软Azure云服务是全球领先的公有云平台,它为企业提供了广泛的功能和服务,助力业务转型和创新。Azure在IaaS(基础设施即服务)市场中的表现尤为突出,被Gartner认可,并且超过90%的财富500强企业都在使用微软云...
本文将介绍微软Azure的最佳实践,特别针对云服务应用开发,内容涵盖编程模型、代码可移植性、开发效率、运维管理、成本扩展方式、软件发布、云服务特点和服务架构设计等方面。 编程模型方面,云时代的应用开发与...
微软Azure云助力微服务 微软Azure云助力微服务-赵文婧
Azure Stack 是微软推出的混合云解决方案,旨在将 Azure 扩展至本地环境,满足企业数字化转型的需求。Azure Stack 提供了一致的框架、流程和工具,帮助企业在本地环境中构建和部署创新应用程序。 知识点1: Azure ...
总的来说,这个“微软公有云Azure教程”全面介绍了Azure的基础知识、使用方法以及选择Azure的原因,对于希望在云计算领域深耕,特别是想利用Azure服务的个人和企业来说,是一份宝贵的参考资料。通过深入学习,用户...
微软Azure Stack是一种创新的混合云平台,它将Azure公有云服务的灵活性和创新性带入到本地环境。作为一个集成系统,Azure Stack提供了基础设施即服务(IaaS)和平台即服务(PaaS),允许用户在自己的数据中心内运行...
Azure Stack是一种经过精心设计的硬件和软件集成系统,由微软与多个硬件合作伙伴(如戴尔、惠普和联想等)共同开发。这个平台提供了与Azure公有云一致的开发和运营体验,使企业能够在自己的数据中心内运行Azure服务...
微软Azure Stack私有云解决方案是微软提供的一种混合云平台,旨在让企业能够在本地环境中体验到与公有Azure云服务相同的功能和一致性。Azure Stack通过将Azure的服务和开发体验带到企业的数据中心,为企业提供了更大...
该工具将微软Azure文字转语音后的音频生成文件,并且提供下载链接,方便视频剪辑使用。 1、安装插件 firefox:菜单-->扩展和主题-->调试附加组件-->临时载入附加组件 选择下载的zip文件即可安装成功(firefox关闭后...
在探讨如何使用微软云平台Azure实现MQTT连接之前,我们先来理解一下这些关键词和概念。首先,“Azure”是微软公司推出的公有云服务平台,提供了包括计算、数据库、存储、网络等多种云服务。而MQTT,即消息队列遥测...
Azure Stack是微软提供的一种混合云解决方案,它允许企业在自己的数据中心内运行Azure服务,从而实现与Azure公有云一致的体验。这使得企业能够根据业务需求灵活选择在本地还是在云端运行工作负载,同时享受云计算的...
ABAP Libraries for SAP Native Integration with Azure Services 是一个重要的软件组件,它允许SAP系统与Microsoft Azure云服务之间实现原生的、高效的集成。这个压缩包文件包含了一个名为 "ahao2" 的子文件,可能...
标题中的知识点集中在ARM和微软Azure两个业界巨头在物联网领域的战略联盟。ARM作为处理器设计和IP许可公司,其主要产品是基于ARM架构的处理器内核,广泛应用于智能手机、平板电脑以及物联网设备中。微软Azure则是...