文章目录

  • 前言
  • 35 | 版本发布:软件上线只是新的开始
  • 36 | DevOps工程师到底要做什么事情?
  • 37 | 遇到线上故障,你和高手的差距在哪里?
  • 38 | 日志管理:如何借助工具快速发现和定位产品问题 ?
  • 39 | 项目总结:做好项目复盘,把经验变成能力
  • 最后

前言

本周正式回归正常的办公场所,关于远程办公和公司办公我只能说各有各的好坏,说实话我会更偏向在公司办公,后面有机会写篇文章分享下。本周继续专栏学习计划,目前已经进展到专栏的尾声了,正篇内容基本可以在这周可以搞定,这周的主题是运行维护篇,以下内容是我的总结:

35 | 版本发布:软件上线只是新的开始

业界通用版本编号

主版本号 . 子版本号.[. 修正版本号.[构建版本号]]
比如:1.2.1.1
主版本和子版本分别在大功能和小功能编号时累加,修正版本标识Bug修复,而构建版本号基于每一次构建,自动累加。

版本的发布规划

  • 首先要规划要发布的功能
  • 定义好发布的质量标准
  • 设计好发布的策略(比如:Beta策略,让小部分用户先体验新功能)
  • 最后有一个综合性的版本发布计划

业界好的发布规范流程

  • 在发布之前要做代码冻结(封版,不允许新的功能增加)
  • 对代码冻结后发现的Bug要分级(是否在发布前修改,还是发布后修改)
  • 每次修复Bug后,发布新的候选版本
  • 每次部署新的候选发布版本,要做回归测试(确认Bug已经修复并且无引入新的Bug)
  • 申请上线发布(正规的审批流程)
  • 部署发布(确保线上运行正常)
  • 上线后的测试(发现问题采取回滚策略)

上线后要做的事情

  • 提供用户反馈的渠道
  • 针对版本进行监控,收集必要的信息;比如:App Crash的Log、服务器资源占用情况、API出错比例、网页响应速度等
  • 回顾项目过程,总结复盘,将经验变成能力

这一节讲的内容讲的是软件项目上线之后要关注的事情,上线仅仅只是开始,一个产品的好坏除了更新迭代,也得靠日常运营,营造好的品牌口碑,提高曝光度。作为一个软件工程师,能够负责一款受人喜爱的产品研发,自己也能从中收获到成就感。

36 | DevOps工程师到底要做什么事情?

什么是DevOps?

先来回答DevOps解决什么问题,现代运维模式存在两个挑战:

  1. 服务器的规模快速增长和虚拟化技术的快速发展
  2. 高频的部署发布

DevOps的出现是为了解决开发和运维之间的协作问题,提升运维开发和自动化能力。

DevOps是开发(Development)和运维(Operations)一切紧密协作的工作方式,从而可以更快更可靠的构建、测试和发布软件。

DevOps带来的好处

  • 软件的构建、测试和发布过程高度自动化
  • 信息更加透明和易于策略
  • 培养跨职能协作的文化

DevOps工程师要做什么?

  • 帮助团队建立基于持续集成和持续交付工作流程
  • 建立一套基于日志的监控报警的系统,以及故障响应的流程
  • 构建基于云计算和虚拟化技术的基础设施
  • 帮助团队构建协作文化

关于这一节的内容,我最大的感受就是不仅仅只是运维工程师需要学习DevOps,而是所有开发都应该学习DevOps,开发和运维本身就分不开,构建协作的文化,提升研发效能,不管对产品还是团队都是非常好的实践。

扩展阅读:
DevOps 前世今生 | mPaaS 线上直播 CodeHub #1 回顾
孙宇聪:来自Google的DevOps理念及实践
关于 DevOps ,咱们聊的可能不是一回事

37 | 遇到线上故障,你和高手的差距在哪里?

新手处理线上故障

  • 遇到复杂的线上故障,不知道怎么下手
  • 遇到线上故障,会想着马上修复Bug,匆忙打补丁,可能会引入新的Bug,造成更严重的损失
  • 不知道如何快速定位Bug
  • 解决完线上故障,可能还会重犯

高手处理线上故障

  • 会有一套解决问题的步骤

    • 第一步,评估影响范围
    • 第二步,试图重现问题
    • 第三步,临时方案和终极方案
    • 第四步,风险评估及持续优化
  • 遇到故障,会先评级、评估影响范围,优先保证业务可用,恢复生产,再考虑修复Bug
  • 通过有效手段重现Bug,逐步缩小问题范围,定位具体的错误位置
  • 会仔细分析Bug产生的原因,从根本上解决,避免类似的故障再次发生

大厂处理线上故障值得借鉴的地方

大厂其实是把高手解决故障的方式,变成故障处理的流程和操作手册,并且通过反复地故障演习。不断练习和强化对故障处理的流程,让系统更健壮,让新手也可以快速上手,做到高效处理线上故障。

  • 故障报警和轮值机制

    • 找对故障服务最熟悉的人
    • 轮值on call,报警响应
  • 实战演习(混沌工程)
  • 日志记录和分析工具(搭建ELK或Splunk这样的日志分析系统)
  • 其他好的实践
    • 灰度发布策略
    • 开关控制灰度

这节课让我更深刻的了解处理线上故障的实践,前后端解决具体问题的方法可能会有所不同,但总体解决策略和思路是类似的。关于工程师解决问题的和分析问题的能力其实也是我们的核心竞争力,如何更好的解决问题,提升业务价值,是我们在整个成长过程中需要不停去思考并践行的。

38 | 日志管理:如何借助工具快速发现和定位产品问题 ?

这节课宝玉老师主要分享了怎么通过搭建日志管理系统来帮助我们快速发现和定位产品问题。更多是偏后端的内容,这里我就基于文章内容进行以下总结:

什么是日志管理?

日志就是操作系统和应用软件自动生成的事件说明或者消息记录,包含了时间、日志信息。

日志管理就是指对系统和应用程序产生的日志进行处理的方法,包括对日志进行统一收集,对日志数据进行筛选和解析,统一存储,还要让它们可以方便被检索。

日志管理系统解决的肉眼检索困难,服务架构复杂,无法统一记录和检索的问题

如何快速发现和定位问题?

  • 集中式管理,统一检索
  • 统一收集和实时统计,生成可视化图表
  • 根据日志数值设置规则自动报警

业内大厂的最佳实践

  • 日志采集和解析

    • 解析成结构化数据,方便检索
  • 存储和搜索
    • 索引和分析,快速检索出结果
  • 结果可视化
    • 观察数据走势曲线
  • 监控和报警
    • 设定触发报警规则,通知值班人员处理

39 | 项目总结:做好项目复盘,把经验变成能力

复盘的常见问题

  • 总结不出来有效的结论(过流水账)
  • 没做好是客观原因导致的(没有想清楚)
  • 知道什么原因,但不知道该怎么办(没有解决思路)

复盘的四个基本步骤

  1. 回顾项目目标
  • 清晰描述当初定的项目目标
  • 里程碑是什么,能否做到准确客观(可量化)
  1. 评估项目结果

列出好的差异和坏的差异,就是做得好的部分和不好的部分

  1. 分析原因

分析导致项目结果好跟坏的原因,好的比如改进了研发流程,工具的使用,规范了项目流程;坏的比如老板过多干预产品需求,周期过长,频繁变更导致延期等

  1. 总结规律,落实行动

基于原因总结规律,保持好的实践,停止不好的实践或寻求改变

这节课能给我们的启发是很多的,当时也发了个朋友圈:

定期回顾项目进展和目标,让团队小伙伴知道劲往哪里使,避免无意义的抱怨,解决问题为主,让写代码变得更加美好。

最后

运行维护篇作为软件工程当中最后的环节,让我们知道软件上线仅仅只是第一步,后续的运行维护才是我们让产品生命力继续发光的手段,只有产品成功,我们研发的价值才能体现。在软件研发过程中,自然会有做的好的和不好的,阶段性复盘是我们能够将经验转化成能力的好实践,经过这段时间的学习,我也很想将这里面学习到的内容推广到我们的团队当中,借助好的方法论一定能够让我们团队研发实力更上一层楼。

《软件工程之美》打卡第七周相关推荐

  1. 《软件工程之美》打卡第一周

    前言 最近我参加了极客时间的21天打卡活动,极客时间是我比较喜欢的一款知识付费型产品,买了十几个感兴趣的专栏,有很多都没来得及学习完,学习这件事情需要专注力,不是看完就算了还得去理解并消化,这个需要找 ...

  2. 《软件工程之美》打卡第三周

    这是笔者参加极客时间21天打卡行动第三周,三周的时间无间断刚好21天,这21天里我强迫自己每天都要学习半个小时并写100个字的分享,正是这样的自律让我找回以前的那种感觉,真的好久没这样认认真真做一件事 ...

  3. 《软件工程之美》打卡第五周

    上周因为临时公司有紧急需求,大部分时间都投入到工作上,所以就暂缓打卡的计划,这周正式进入远程办公的第一周,继续把专栏的学习计划滚动起来,这周会分享宝玉老的极客时间专栏--**<软件工程之美> ...

  4. 《软件工程之美》学习笔记(2020)

    本篇笔记源于学习极客时间的<软件工程之美> 2020.5.14 课前必读里讲的"做中学"和"教中学,不就是通过做一个东西来学,以及学过之后的输出吗 本篇文章正 ...

  5. 20155319 2016-2017-2 《Java程序设计》第七周学习总结

    20155319 2016-2017-2 <Java程序设计>第七周学习总结 教材学习内容总结 第十二章 Lambda 如果使用JDK8的话,可以使用Lambda特性去除重复的信息. 在只 ...

  6. 20155213 2016-2017-2 《Java程序设计》第七周学习总结

    20155213 2016-2017-2 <Java程序设计>第七周学习总结 教材学习内容总结 Lambda 如果使用JDK8的话,可以使用Lambda特性去除重复的信息. 在只有Lamb ...

  7. 20172330 2017-2018-1 《Java程序设计》第七周学习总结

    学号 2017-2018-1 <程序设计与数据结构>第七周学习总结 教材学习内容总结 这一章主要是对继承的学习: 继承是组织和创建类的基本技术,概念简单但影响重大,决定着面向对象软件的设计 ...

  8. 2017-2018-1 20155204 《信息安全系统设计基础》第七周学习总结

    2017-2018-1 20155204 <信息安全系统设计基础>第七周学习总结 教材学习内容总结 ISA的作用: 在编译器编写者(CPU软件)和处理器设计人员(CPU硬件)之间提供了一个 ...

  9. 20162302 第七周作业

    20162302 2016-2017-2 <程序设计与数据结构>第七周学习总结 教材学习总结 复习以前的内容,修正代码中的错误 学习多态的用法 学习接口的相关内容,并创建多态引用 教材学习 ...

最新文章

  1. 解决更新到os x10.11后openssl头文件无法找到的问题
  2. 网站推广——网站推广专员如何恢复下降的权重值?
  3. hive表信息查询:查看表结构、表操作等--转
  4. just函数python_提升 Python 性能 Numba 与 Cython
  5. 市面上有哪几种门_实木门、原木门、模压门,各有门道不怕坑!
  6. 弱鸡儿长乐爆零旅Day1
  7. 51全志R58平台Android4.4下Camera的HAL层修改
  8. mongodb教程_MongoDB教程
  9. 小卷积核的特征图与卷积参数变化不大,计算量变化明显
  10. 如何把照片裁剪成证件照指定尺寸比例?
  11. AD将原理图转换成彩色或者黑白PDF
  12. 什么是性能测试,性能测试的目的
  13. 【AI能否取代设计师】「Stable Diffusion」AI绘画黑科技将告诉你答案
  14. easy excel date 类型解析报错_两个日期相差多少天,你还在一天天的数吗?用Excel轻松完成计算...
  15. mysql 空间数据操作,MySQL 空间数据 简单操作
  16. windows10系统的域服务器版本,windows10域服务器
  17. CleanMyMac4.12最新Mac电脑系统垃圾清理神器
  18. 看了这个,你还敢用分身版微信刷步吗?
  19. 史上程序员被黑得最惨的一次?
  20. 放宽心,一切都是最好的安排

热门文章

  1. iOS、iPadOS、macOS屏蔽系统更新
  2. kitty终端ranger预览图片
  3. 探针台选型的注意事项有哪些
  4. ffmpeg截取视频片段的两种方式 1) 按时间截取 2)按帧数截取
  5. 鸿蒙3部曲先看哪部,“斗罗”有四作,那当年齐名的“鸿蒙”系列到底有“几部曲”?...
  6. 《第一行代码》阅读记录—Git和Notification
  7. Word域的应用和详解
  8. 计算机设备名称英语词汇
  9. RD会话主机服务器2012上没有可用的远程桌面许可证服务器
  10. 微软向Mac用户提供30天评估版Office 2008