当前位置: 首页 > news >正文

运维开发和测试中常见的8个问题

这是学习笔记的第 2167 篇文章

  今天集中精力,一门心思来做一些后端功能的改造,在这个过程中摸索出了一些实践经验。 

  首先改造的是一个后端的基础功能,即通过数据库连接执行SQL语句,原有的模式只支持一条SQL语句,对于多条SQL语句的执行存在一些执行的兼容性问题,耐着性子开始持续改进,总算是把这个功能改造成为一个较为通用的实现方式了。

  所以这个改造对我来说,其中的一个感悟是:技术改进其实和健身差不多,感觉功能可以支持了,差不多了,能用就行,而在后续的扩展中就会发现少了很多动力,最近练习平板撑,如果坚持2分半钟的话,那么1分半开始的时间就最为艰难的,时刻都想放弃,但是如果有了一个明确的目标也就有了一个最基本的要求和动力。 

  顺着这个实现的思路往下展开,其实可改进的事情就有很多了。我在这个过程中也做了反思,发现目前主要有以下几类问题:

1)测试环境和线上环境的数据差异较大,很多场景在测试环境难以模拟,如果要尽可能完整的测试,需要快速的同步线上的数据,方便测试。

2)测试环境的少了很多流程的测试依赖,所以只能够尽可能模拟一些基础流程,对于一个较为复杂的功能想要模拟测试,花费的时间比较多,而且如果返工,代价比较高

3)在集成和调试的过程中,如果要把某一个流程串起来,需要做一些埋点和日志记录,这个过程收收放放得反复进行,不够透明

4)程序的变更部署发布目前没有pipeline模式,很多快速部署都是基于手工补丁的模式。 

5)API层的设计不够清晰,目前很多API在需求变更中会对接口细节做一些调整,所以文档和实现不大一样。 

6)API和工具类的集成存在冗余,目前的一个重要需求方向是对于一些API的实现,如果是基础功能部分,其实不光可以通过API调用,也可以通过工具类的方法来进行设计,而在代码的逻辑层应该可以做到无缝的切换,这样代码的源只有一份,不会因为变更的同步而导致逻辑分离。 

7)API体系的设计,目前对于model的变更和状态传播都是通过一大坨一大坨的代码来嵌入,这对于流程维护来说不够友好,而且侵入性较高。

8)代码的容错处理不够健壮,有些功能还有执行失败,但是返回200的情况。

这8个地方的问题我相信但凡有一些业务需求开发的场景都会或多或少碰到,而这也是我最近要践行优化的一个变革面板。

在今天整理这些问题的过程中,也逐步理清了一些思路,也走了一些弯路和返工,在难以进行下去的时候,总是在休息的时候会得到一些处理的灵感。所以整体来看,是在做自我的革新,而这个过程也会让我从差不多先生转换过来。 

这些工作中,怎么把设计思想和模型设计的思路沉淀下来,我觉得还是得靠自己对于功能和设计的逐步细化和追求。 

近期热文:

迁移到MySQL的业务架构演进实战

数据库修改密码风险高,如何保证业务持续,这几种密码双活方案可以参考

MySQL业务双活的初步设计方案

如何优化MySQL千万级大表,我写了6000字的解读

一道经典的MySQL面试题,答案出现三次反转

业务双活的数据切换思路设计(下)

业务双活的数据切换思路设计(一)

MySQL中的主键和rowid,看似简单,其实有一些使用陷阱需要注意

小白学MySQL要多久?我整理了10多个问题的答案

转载热文:

《吊打面试官》系列-Redis基础

唯一ID生成算法剖析,看看这篇就够了

关于大数据运维能力的一些思考

DBA菜鸟的进化简史:不忘初心,记工作中踩过的三个坑

美女主持直播,被突发意外打断!湾区网友却高喊: 我懂!超甜

QQ群号:763628645

QQ群二维码如下, 添加请注明:姓名+地区+职位,否则不予通过

在看,让更多人看到

相关文章:

  • MySQL数据清理有技巧,这么破
  • 《奇葩说》救猫还是救画,我做了认真的分析
  • 程序员开发效率神器汇总!
  • 瞎忙之余的一些小结
  • 关于高可用,我们关注得好像有点窄
  • 去IOE or Not?
  • 拉里·佩奇(Larry Page)的伟大归来
  • Linux系统——架构浅析
  • 解码Redis最易被忽视的CPU和内存占用高问题
  • 还能这样?把 Python 自动翻译成 C++
  • 华裔教授发现二次方程极简解法,我默默的做了下验算
  • 运维系统性能优化后思考,除了避免懒惰的麻木,还需要了解系统的“脾性”...
  • 用python重新定义【2019十大网络流行语】
  • 那些对我来说没有价值和有价值的事情
  • 关于MySQL GTID的一次深刻学习
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • 07.Android之多媒体问题
  • Android系统模拟器绘制实现概述
  • Angular 2 DI - IoC DI - 1
  • CSS实用技巧
  • Facebook AccountKit 接入的坑点
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • JavaScript实现分页效果
  • js
  • Lsb图片隐写
  • node.js
  • React的组件模式
  • Redis的resp协议
  • Vue 重置组件到初始状态
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 安卓应用性能调试和优化经验分享
  • 从0实现一个tiny react(三)生命周期
  • 反思总结然后整装待发
  • 工程优化暨babel升级小记
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 用mpvue开发微信小程序
  • 自定义函数
  • Prometheus VS InfluxDB
  • raise 与 raise ... from 的区别
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • ​TypeScript都不会用,也敢说会前端?
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • #etcd#安装时出错
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • (1)(1.11) SiK Radio v2(一)
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (三)终结任务
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • .mysql secret在哪_MySQL如何使用索引