-
36 | DevOps工程师到底要做什么事情?
-
37 | 遇到线上故障,你和高手的差距在哪里?
-
38 | 日志管理:如何借助工具快速发现和定位产品问题 ?
-
39 | 项目总结:做好项目复盘,把经验变成能力
-
最后
本周正式回归正常的办公场所,关于远程办公和公司办公我只能说各有各的好坏,说实话我会更偏向在公司办公,后面有机会写篇文章分享下。本周继续专栏学习计划,目前已经进展到专栏的尾声了,正篇内容基本可以在这周可以搞定,这周的主题是运行维护篇,以下内容是我的总结:
业界通用版本编号
主版本号 . 子版本号.[. 修正版本号.[构建版本号]]
比如:1.2.1.1
主版本和子版本分别在大功能和小功能编号时累加,修正版本标识Bug修复,而构建版本号基于每一次构建,自动累加。
版本的发布规划
-
首先要规划要发布的功能
-
定义好发布的质量标准
-
设计好发布的策略(比如:Beta策略,让小部分用户先体验新功能)
-
最后有一个综合性的版本发布计划
业界好的发布规范流程
-
在发布之前要做代码冻结(封版,不允许新的功能增加)
-
对代码冻结后发现的Bug要分级(是否在发布前修改,还是发布后修改)
-
每次修复Bug后,发布新的候选版本
-
每次部署新的候选发布版本,要做回归测试(确认Bug已经修复并且无引入新的Bug)
-
申请上线发布(正规的审批流程)
-
部署发布(确保线上运行正常)
-
上线后的测试(发现问题采取回滚策略)
上线后要做的事情
-
提供用户反馈的渠道
-
针对版本进行监控,收集必要的信息;比如:App Crash的Log、服务器资源占用情况、API出错比例、网页响应速度等
-
回顾项目过程,总结复盘,将经验变成能力
这一节讲的内容讲的是软件项目上线之后要关注的事情,上线仅仅只是开始,一个产品的好坏除了更新迭代,也得靠日常运营,营造好的品牌口碑,提高曝光度。作为一个软件工程师,能够负责一款受人喜爱的产品研发,自己也能从中收获到成就感。
什么是DevOps?
先来回答DevOps解决什么问题,现代运维模式存在两个挑战:
-
服务器的规模快速增长和虚拟化技术的快速发展
-
高频的部署发布
DevOps的出现是为了解决开发和运维之间的协作问题,提升运维开发和自动化能力。
DevOps是开发(Development)和运维(Operations)一切紧密协作的工作方式,从而可以更快更可靠的构建、测试和发布软件。
DevOps带来的好处
-
软件的构建、测试和发布过程高度自动化
-
信息更加透明和易于策略
-
培养跨职能协作的文化
DevOps工程师要做什么?
-
帮助团队建立基于持续集成和持续交付工作流程
-
建立一套基于日志的监控报警的系统,以及故障响应的流程
-
构建基于云计算和虚拟化技术的基础设施
-
帮助团队构建协作文化
关于这一节的内容,我最大的感受就是不仅仅只是运维工程师需要学习DevOps,而是所有开发都应该学习DevOps,开发和运维本身就分不开,构建协作的文化,提升研发效能,不管对产品还是团队都是非常好的实践。
扩展阅读:
[关于 DevOps ,咱们聊的可能不是一回事
](https://www.jianshu.com/p/645bb1283a77)
新手处理线上故障
-
遇到复杂的线上故障,不知道怎么下手
-
遇到线上故障,会想着马上修复Bug,匆忙打补丁,可能会引入新的Bug,造成更严重的损失
-
不知道如何快速定位Bug
-
解决完线上故障,可能还会重犯
高手处理线上故障
-
会有一套解决问题的步骤
-
第一步,评估影响范围
-
第二步,试图重现问题
-
第三步,临时方案和终极方案
-
第四步,风险评估及持续优化
-
遇到故障,会先评级、评估影响范围,优先保证业务可用,恢复生产,再考虑修复Bug
-
通过有效手段重现Bug,逐步缩小问题范围,定位具体的错误位置
-
会仔细分析Bug产生的原因,从根本上解决,避免类似的故障再次发生
大厂处理线上故障值得借鉴的地方
大厂其实是把高手解决故障的方式,变成故障处理的流程和操作手册,并且通过反复地故障演习。不断练习和强化对故障处理的流程,让系统更健壮,让新手也可以快速上手,做到高效处理线上故障。
-
故障报警和轮值机制
-
找对故障服务最熟悉的人
-
轮值on call,报警响应
-
实战演习(混沌工程)
-
日志记录和分析工具(搭建ELK或Splunk这样的日志分析系统)
-
其他好的实践
-
灰度发布策略
-
开关控制灰度
这节课让我更深刻的了解处理线上故障的实践,前后端解决具体问题的方法可能会有所不同,但总体解决策略和思路是类似的。关于工程师解决问题的和分析问题的能力其实也是我们的核心竞争力,如何更好的解决问题,提升业务价值,是我们在整个成长过程中需要不停去思考并践行的。
这节课宝玉老师主要分享了怎么通过搭建日志管理系统来帮助我们快速发现和定位产品问题。更多是偏后端的内容,这里我就基于文章内容进行以下总结:
什么是日志管理?
日志就是操作系统和应用软件自动生成的事件说明或者消息记录,包含了时间、日志信息。
日志管理就是指对系统和应用程序产生的日志进行处理的方法,包括对日志进行统一收集,对日志数据进行筛选和解析,统一存储,还要让它们可以方便被检索。
日志管理系统解决的肉眼检索困难,服务架构复杂,无法统一记录和检索的问题
如何快速发现和定位问题?
-
集中式管理,统一检索
-
统一收集和实时统计,生成可视化图表
-
根据日志数值设置规则自动报警
业内大厂的最佳实践
-
日志采集和解析
-
解析成结构化数据,方便检索
-
存储和搜索
-
索引和分析,快速检索出结果
-
结果可视化
-
观察数据走势曲线
-
监控和报警
-
设定触发报警规则,通知值班人员处理
最后
小编这些年深知大多数初中级Android工程师,想要提升自己,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人
都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
如果你需要这些资料, ⬅ 专栏获取
…(img-mbL27oqy-1719415055895)]
[外链图片转存中…(img-CbfxHdpi-1719415055896)]
[外链图片转存中…(img-kcDemgA2-1719415055897)]
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人
都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
如果你需要这些资料, ⬅ 专栏获取