共计 4855 个字符,预计需要花费 13 分钟才能阅读完成。
👉腾小云导读
作为一名领有 6 年腾讯工作教训的后盾开发者,作者深知在一个宏大且简单的技术栈中,领有正确的方法论和思维形式对工作效力影响有多大。在这篇文章中,作者将联合在腾讯工作的具体我的项目和案例,分享 5 个方法论:量化、比照、记录 & 流程、标准 & 对立、自动化。心愿这些教训和方法论能对宽广开发者有所帮忙,尤其是对于后端开发者而言。
👉看目录,点珍藏
1 量化
1.1 技术指标数据
1.2 业务指标数据
2 比照
2.1 同比环比
2.2 前后比照
3 记录 & 流程
3.1 记录
3.2 流程
4 标准 & 对立
4.1 标准
4.2 对立
5 自动化
5.1 继续集成和继续部署(CI/CD)
5.2 自动化测试
5.3 脚本和工具
5.4 监控与告警
6 结语
01、量化
第一个办法就是量化,因为量化是所有办法的根底。量化是将形象的概念、景象或过程转化为可测量、可剖析的数值的过程。通过量化,开发者能够更好地了解、比拟和改良零碎或过程。在软件开发中,量化能够帮忙开发者确定要害性能指标(KPI)和掂量软件我的项目的胜利水平。
在理论我的项目中,咱们通常会把要害指标分成两类进行量化:一 类称之为业务指标数据,另外一类称之为技术指标数据。 对于一个合格的后盾开发人员来说,须要同时关注业务指标数据和技术指标数据,能力更好的感知业务状况。上面咱们开展来讲。
1.1 技术指标数据
在技术指标数据中,我的项目个别也会有几类量化数据。第一种是服务器(容器)根底数据,第二种是业务埋点监控数据,第三种性能基准数据。
1.1.1 服务器(容器)根底数据
服务器根底数据是每个公司都默认会有的根底监控数据,次要统计服务器的根底信息,比方 CPU、内存、IO 等。开发者能够通过这些监控数据来查看服务器是否故障,服务器的负载是否失常,服务耗费的资源状况和趋势等信息。
在腾讯外部,服务器的根底监控最开始都是通过一个叫 monitor 的服务来查看,告警的话个别都是 TMP(Tencent Monitor Platform)。比方 Ping 无响应或响应超时、硬盘空间有余。
云原生化之后,一般开发者根本不须要关注服务器自身的监控数据了,只须要关注对应的 Pod 数据。然而,逻辑是差不多的。
1.1.2 业务埋点监控数据
服务器的粒度是比拟大的,无奈感知每个用户的状况,所以就须要通过在服务中埋点减少要害指标数据和日志,而后再依据各种维度进行相干的数据统计。
在后盾开发畛域,因为产品状态的不同,要害的指标也个别都不雷同,然而也有一些通用的指标数据。比方各个模块的解决工夫、接口的响应工夫、失常响应的次数、响应异样的次数,依据用户、分组、工夫的维度。
对这些要害进行统计,失去相应的业务技术指标,比方错误率、超时率、均匀耗时、最大耗时、在线人数等。
在我集体的我的项目中,新近是通过 monitor 统计了一些指标数据,比方并发、申请数,失常响应,谬误响应等。然而 monitor 是机器维度,无奈进行更多维度的剖析。所以第一次优化,是通过将这些数据通过埋点的形式写在日志,而后再通过 ELK 建各种视图进行数据分析。要害的的指标数据再通过 ES API 写到 MySQL 中长久化。第二次优化又将一些指标数据拆分进去应用 Prometheus 存储替换了原来的 monitor 那一部分。
1.1.3 性能基准数据
性能基准数据也是技术指标数据中十分要害的一个组成部分。 通过对系统的要害组件和要害链路进行基准测试,能够理解各个组件的的性能,再通过对服务的性能测试,能够通过计算失去一个数值,可能精确的进行资源评估。比方服务预计 QPS 是 1 万,那须要分明的晓得须要多少核的机器部署服务,须要多少核的数据库,多大的缓存,以及后续是否还有优化的空间,零碎的瓶颈是什么。
1.2 业务指标数据
不同的业务指标数据的定义不尽相同,咱们以腾讯外部的直播和语音为例讲述。
以直播业务为例,开发者会定义房间数、同时在线人数,起播数,起播胜利次数,卡顿人数,卡顿次数等业务相干指标。
以语音为例的话,会定义申请次数,会话数,申请耗时,音频长度,音频解决耗时,实时率等业务相干指标。
通过剖析以上的业务指标定义的法则,能够发现:业务指标数据定义个别遵循以下的逻辑:
总之,业务指标数据的定义须要遵循以上逻辑,来确保关注业务外围、用户体验、效率和性能等多个方面。通过继续监测和剖析这些业务指标,能够更好地理解业务的运行状况,并采取相应措施优化产品和服务。
02、比照
在有了量化的业务指标数据和技术指标数据之后,就须要具备肯定的数据分析能力,能力利用这些数据更好的提前预警问题,发现问题和解决问题,优化服务,晋升产品质量和竞争力。
所以第二个方法论就是比照。为啥叫比照而不叫数据分析呢?因为数据分析是一个业余的畛域,波及的畛域十分多。作为一个一般的后盾开发人员,很难成为一个业余的数据分析师。然而通过比照其实就能解决很多技术问题。
2.1 同比环比
在后盾开发过程中,须要每天关注服务运行的技术指标数据和业务指标数据,以确保零碎的稳定性和可扩展性。通过进行同比(比方这周一比照上周一)和环比(比方明天比照昨天)剖析,能够更好更快地理解零碎的发展趋势和业务变动。同时,这也有助于开发者及时发现潜在的问题,如性能瓶颈、资源节约等。
在我个人经历的我的项目中,每天都会有要害数据同比和环比的状况。这样能够及时发现业务的变动状况、发现一些周期性的法则(比方,教育行业的寒暑假对业务的影响其实十分大)。
只有通过同比环比的比照能力更好的发现这些法则,及时的做一些策略的调整防止资源的闲置和有余。
2.2 前后比照
在后盾开发过程中,常常须要对系统进行优化或批改。在进行这些操作之前,须要先对系统进行备份,以便在优化或批改后进行前后比照,确保优化或批改的有效性。
在腾讯,咱们会应用版本控制系统(如 Git)来治理代码,确保每次优化或批改都能够轻松回滚。 同时,也会应用自动化测试和继续集成来验证批改的正确性和性能影响,确保只会有变更点产生了变更。
而有时候排查问题会发现日志量很大,而且没有将埋点笼罩到每一处。这种状况下,只能通过一直的剖析异样产生的前后日志,急躁的比照前后的不同处和雷同处,最终找打那个触发的变量。这样能够帮忙开发者更好更简略的排查到问题起因。
03、记录 & 流程
对于后盾开发者来说,记录有时候是比开发更重要的。 因为没有记录,很多货色可能都找不到在哪里,十分的浪费时间。而流程是为了保证质量。
实际上,咱们团队呈现了几次事变,基本上都是因为研发人员操作流程不合规导致。流程不等于按部就班,而是以一种高效的有品质保障的形式去执行一些容易出错的操作。
3.1 记录
记录在后盾开发过程中具备无足轻重的位置。它能够帮忙开发人员跟踪问题、共享常识以及进步合作效率。以下是一些对于记录的例子:
3.2 流程
流程在保障我的项目品质和进步工作效率方面具备至关重要的作用。
在腾讯外部,流程旨在标准开发人员的行为,避免谬误的产生,并确保高质量的后果。以下是一些「流程」在腾讯外部的利用:
- 代码审查:通过设立代码审查流程,确保每一段代码在提交前通过共事的审查,以发现并修复潜在的问题和谬误。
- 自动化测试:通过施行自动化测试流程,能够在短时间内测试大量用例,进步软件品质并缩小人为谬误。
- 公布治理:制订严格的公布流程和上线策略,确保在公布新性能或修复问题时不会对现有零碎造成不良影响。个别会有公布周知和公布审批,须要同步测试后果,公布个性,灰度策略,影响范畴等信息。
- 故障应答和回滚:在呈现故障时,设立应答和回滚流程,以便迅速的回滚的上一版本。
04、标准 & 对立
标准 & 对立次要指的是开发者在编码或者写文档、或者应用其余组件时,应用标准的形式,且尽可能的用对立的形式或者组件或框架,防止在同一个畛域应用多个不同的轮子。
在代码的标准这块,腾讯外部有多种语言的编码标准。 尽管没有强制执行,然而这个代码标准的代码是能够帮忙开发者更好的了解彼此的代码逻辑,更好的保护的开发。那不光要尽可能的遵循这一套标准,而且要尽量避免应用不同的标准。
4.1 标准
4.1.1 代码标准
- 遵循编码标准:确保团队成员遵循公司外部的编码标准。这包含命名标准、代码格局、正文标准等。这有助于进步代码的可读性,升高保护难度。
- 应用代码查看工具:利用代码查看工具(如 CodeCC)来主动查看代码是否符合规范。这有助于确保团队成员的代码格调统一,防止在代码审查阶段浪费时间在格局问题上。
4.1.2 文档标准
- 遵循文档模板:为团队制订文档模板,确保所有文档的构造和格局对立。这有助于进步文档的可读性,不便团队成员疾速找到所需信息。
- 应用对立的文档平台:应用对立的文档治理平台(如 iwiki)来存储和共享文档。这有助于确保团队成员可能不便地拜访和更新文档,防止信息的失落和凌乱。
4.2 对立
4.2.1 组件和框架的对立
- 对立技术栈:尽可能在团队外部对立应用雷同的技术栈,防止在同一个畛域应用多个不同的组件、库或框架。这有助于升高学习老本,进步合作效率。
- 组件和库复用:在开发过程中,尽量复用现有的组件和库,防止反复造轮子。这有助于缩小开发工夫,升高保护老本,同时确保我的项目的品质和稳定性。能应用腾讯云的资源就不要自建相干服务。
- 定期技术评审:定期组织技术评审会议,探讨团队外部应用的组件、库和框架,评估其适用性和性能。这有助于确保团队应用的技术是最佳实际,防止不必要的技术债权。
05、自动化
在后盾开发的过程中,须要用到一些自动化的工具来晋升效率。 比方 CICD、自动化测试、脚本和工具。本人写脚本,自动化的目标有两个:
一个是最大化的进步咱们的效率、解放重复劳动,二是流程标准化、缩小人工出错的可能性。
5.1 继续集成和继续部署(CI/CD)
应用 CI/CD 工具(如蓝盾流水线、智研 CI 等)来自动化代码构建、测试和部署过程。这有助于缩短产品上线周期,升高部署危险,同时确保团队成员遵循对立的开发流程。
为 CI/CD 流程编写配置文件(如 Dockerfile、trpc.yml 等),以便在代码仓库中跟踪和治理。这有助于确保流程的可维护性和可重用性。
5.2 自动化测试
应用自动化测试框架(如 QTA、星海等)来编写和执行测试用例。这有助于确保代码在提交前通过充沛的测试,升高人为谬误。
将自动化测试集成到 CI/CD 流程中,确保每次代码提交都会触发测试。这有助于发现问题晚期,防止谬误流传到生产环境。
5.3 脚本和工具
编写自动化脚本(如 Shell、Python、Node.js 等)来简化日常开发工作,如数据库备份、日志剖析、性能监控等。这有助于进步工作效率、解放重复劳动。
应用开发者工具(如 IDE 插件、代码生成器、API 文档生成器等)来辅助开发过程。这些工具能够帮忙开发者更高效地实现工作,进步代码品质。
5.4 监控与告警
在后盾开发中,实时监控零碎运行状况并及时处理问题是十分重要的。通过自动化监控和告警,能够疾速发现并解决零碎中的问题,保障服务的稳定性。在腾讯,应用诸如云监控、天机阁等工具来实现零碎的实时监控,同时配置告警规定,确保在呈现问题时可能及时告诉到相应的负责人。
06、结语
我为期 6 年的腾讯工作经验中,总结出的这 5 个后盾开发方法论对自己的工作及四周敌人的帮忙很大。心愿通过量化、比照、记录 & 流程、标准 & 对立、自动化这五个方面的方法论,可能为宽广后盾开发者带来灵感、更好地发展工作,进步开发品质和效率。
在理论工作中,开发者须要依据我的项目的具体情况灵活运用这些方法论,一直总结经验,造成本人的开发体系和框架。以上是本次分享全部内容,欢送大家在评论区分享交换。如果感觉内容有用,欢送转发~
-End-
原创作者|滕达
技术责编|滕达
后端都要学习什么?欢送在公众号评论区分享对你后端职业生涯有帮忙的我的项目、文章、教程、书目、思维办法 ……
咱们将选取获赞量最高的 2 位敌人,送出腾讯云开发者 - 限定随行杯 1 个(见下图)。4 月 24 日中午 12 点开奖。快邀请你的开发者敌人们一起来参加吧!
小云 p.s. 记得珍藏这篇文章,定期回来捞捞网友们的新干货哦~
关注我并点亮星标
公众号后盾回复「后端」看更多鹅厂教训