• 博客(17)
  • 收藏
  • 关注

原创 配置即代码:先有鸡还是先有蛋

我们来编个故事咕咕哒公司是一家新型数字化养鸡场企业。养鸡场使用基础设施即代码的理念。操控流水线完全自动化构建和部署新的养鸡场及更新旧养鸡场。这一举措致使公司可以统一管理旗下养鸡场,生产的鸡蛋质量统一,部署过程完全自动化,无人化,极大的避免了人为错误。目前公司业务进展顺利,开始全面开始拓展市场。事件因为不同地域的气候特征以及饲料供应链差异,公司发现使用同一种品种已无法满足适应市场拓展的需求。于是公司决定使用在不同地区饲养适应该地区的特殊品种。这些地域性的配置一开始是作为参数被各地区在基础设施构建后,以手

2020-12-30 09:46:59 745 7

原创 微服务架构下你的数据一致了吗?

数据一致性问题首先是个业务问题,其次才是个技术问题。在微服务架构下,我们期望每个服务职责单一,这种职责单一体现的是业务价值,如果微服务的拆分过小而导致业务难以实现,那这种拆分是不合理的,业务专家们非常有必要了解系统,从业务侧给出服务拆分的建议。微服务架构的流行源于它能够带来更快的变化响应能力,比如独立部署,每个服务的能力职责是独立的,可以按需独立发布;再比如每个服务可以由不同的开发团队负责,每个服务的技术栈也可以不同,可以选择更快捷合理的方式实现不同的服务。然而,微服务架构作为分布式架构,躲不开的一.

2020-12-28 14:00:56 344

原创 你懂SOLID原则吗?

虽然SOLID原则不能时刻有效指导编码落地,理解这些原则背后的设计理念,让你迈出了第一步,接下来,你需要做的是在前进的路上,不断地进行编码实践、思考总结,将其内化。做了这么多年的面向对象编程还是写出违背SOLID原则的代码,一看都懂、一做就被怼,敏感度不够,如何是好?难道SOLID原则本身就有错?难道我不应该涉水OOD?……请先屏住呼吸,我们来看看SOLID叫什么:Single Responsibility Principle,单一职责原则Open Close Principle,开.

2020-12-24 15:19:24 447 4

原创 再读《重构》

新版本以JavaScript语言作为示例,重新思考并改进了第一版本中的众多重构手法,结合作者多年来一些新的观点和思考,带给了我们一套更为丰富完善的重构体系。重构作为敏捷实践的精髓之一,在我们这个以敏捷为立身之本的公司里应当属于大家信手拈来的基本技能。虽说其基本思想长期不过时,但是第一版《重构》的发布毕竟已经是20年前的事情了,这期间软件开发行业兴起了无数新的编程思想、语言、工具、框架等,现在回过头去看第一版,会发现不仅纸质书籍难以买到,其中的一些知识上也有点脱节。新版本以JavaScript语言作为示.

2020-12-18 17:17:19 275 2

原创 软件交付效能度量——从吞吐量和稳定性开始

除了感性的工作体验外,我们还需要指标来度量改进措施是否对提升软件交付效能有帮助。过多的指标会对团队造成不必要的管理成本,也容易让团队失去关注焦点。从吞吐量和稳定性两个维度考量的四个关键指标是简单但有效的指标,建议优先度量。为了提升软件交付效能,你的团队或组织可能已经开始采取行动,引入敏捷方法、DevOps实践甚至还有架构重构。但你如何知道这些改进措施起了作用呢,或者它们压根就水土不服呢?简单来说,除了感性的工作体验外,你需要一些指标来度量交付效能。唯快不破提升交付效能的最重要的目标之一就是能"快.

2020-12-18 15:51:46 988 2

原创 遇事不决量子力学?二分法四象限了解一下

使用二维四象限分析问题,可以让我们的思维更完整和辩证。二维四象限的“对立统一”,就像转角看到爱,增加了角度才能看到事物的另一种形态,用多个维度去看待事物才能更接近真相。有一天你正在闷头工作,老板这时路过你的工位。他敲敲你的桌子说:“最近你这边的业务状况怎么样?我想了一下未来几年的产品发展,咱还是得做To-C线上培训业务,你看人谁谁谁做的很棒,你觉得呢?”这时,你要怎么回答?一种回答是:“应该做,我没问题。现在线上培训势在必行,咱也积累了一堆的经验,早该做了。还有,咱家产品的优势在b端已.

2020-12-18 14:30:29 743

原创 是时候激活你的批判性思维了

学习批判性思维的目的不在于批判对方,而在于对双方思考过程的审视。通过改变思维方式、问对问题、与良师益友的促膝交谈、以及培养价值观倾向,可以促进有效的沟通和理智的决策,让你的思考越来越有洞见。小明和大美你的好朋友小明正在带领一个团队做一个手机项目,团队里最近有个成员大美经常迟到早退,也不跟团队打招呼,有时候开会都找不到人。小明找到他,他说,“你看我最近搬到燕郊了,离公司也比较远,早上人很多。每天挤地铁也上不去,晚上不早走就更走不了啊,我也很难,有些工作我都带回家处理了,也没耽误多少,领导换位思考一下.

2020-12-18 11:53:17 336

原创 你的测试写全了吗?

QA设计的测试用例大部分都是面向业务的端到端测试,怎么能保证从DB来的数据通过层层service能顺利的到达前端并被正确的展示出来呢?我们可以尝试以UI和DB作为data flow的两端串起所有的测试。场景想象一个典型的场景,一次sign off接近尾声:QA:这个些case都有测试吗?DEV:打开各种IDE,UT cover了case A,JT cover了case B,API test cover了case CSign off结束了,但是代码里的测试真的覆盖了QA预期的全部用例吗?假.

2020-12-18 10:21:49 185

原创 再谈领域驱动设计

本文从需求分析到API设计,试图描述领域驱动设计的过程及思想。同时也能看的出领域驱动设计并不是孤立存在的,它为解决开发团队和业务人员之间沟通而生,进而驱动微服务的划分以及API的设计。作为一个领域驱动设计的实践者,我切实感受到了领域驱动为软件开发带来的好处,同时在实践领域驱动的过程中也感受到了困难,这种困难体现在工程实践的方方面面,例如什么是领域驱动的最佳设计?如何把书本上的设计灵活的应用在自己的项目上?如何跟团队成员就设计达成一致?本文尝试从领域驱动设计的目的出发,试图通过简单的描述来说明领域驱动.

2020-12-17 18:11:01 224

原创 缺陷管理,一门关于质量内建的学问

既然无法完全阻止缺陷的出现,那如何确保已发生的缺陷得到有效的处理,如何利用已有缺陷来指导质量内建过程,是我们需要考虑的,也就是缺陷管理的内容。敏捷测试原则中有一条是:预防缺陷,而不是关注缺陷的数量。在敏捷开发中,虽然我们采取了各种措施预防缺陷的发生,例如精准的自动化测试、代码检视、故事卡验收等等,但是并不能保证没有缺陷发生,一个零缺陷的产品也不现实。既然无法完全阻止缺陷的出现,那如何确保已发生的缺陷得到有效的处理,如何利用已有缺陷来指导质量内建过程,是我们需要考虑的,也就是缺陷管理的内容。本文以某实际.

2020-12-17 17:19:43 264

原创 几种性能测试工具的总结

我们经常会谈论性能、并发等问题,但是衡量性能不是说写段代码循环几百次这么简单。最近从项目上的同事了解到了代码化的测试性能测试工具 k6,以及结合之前用过的Java 微基准测试 (JMH)、AB (Apache Benchmark) 测试、Jmeter 做一下总结。谈性能,实际上结合实际的业务背景、网络条件、测试数据的选择等因素影响非常大,单纯的谈 QPS 等数据意义不大。这里介绍的几个工具刚好能满足平时开发工作中不同场景下衡量性能的需求,因此整理出来。Java 微基准测试 (JMH) 可以用于衡.

2020-12-17 14:25:13 807

原创 Bug Report该怎么做?

Bug Report一般有两种说法:一是“微观Bug Report”,是指深入分析单个bug产生的影响、产生的根因、后续如何避免等;二是“宏观Bug Report”,是指在一个项目开发周期中,对bug原因、修复周期、bug趋势等维度进行总结分析。说起Bug Report,QA同学都不陌生。本文我们主要聊一聊Bug Report该怎么做。Bug Report一般有两种说法:一是“微观Bug Report”,是指深入分析单个bug产生的影响、产生的根因、后续如何避免等;二是“宏观Bug Report”,.

2020-12-16 16:41:51 877

原创 信任的传递——为什么我们需要第三方授权?

在证书验证、基于JWT(Json Web Token)的身份认证、IDP(身份提供商)、SP(服务提供商)等技术中,都有一个可信的第三方,可明明是用户对资源或者服务的访问,为啥还要个第三方?这篇文章整理了一些相关技术的案例,并尝试分析其这样设计的原因。经典案例01 证书 —— 整个互联网中的信任传递目的: 解决两个节点之间的安全通信,常用的是用户访问某个具体的网站背景:基于现有的网络协议(如http),在其基础上对信道进行加密,保证安全。这就需要两个节点之间至少持有一个对方的公钥( 用这个秘.

2020-12-16 12:04:38 1119 4

原创 敏捷测试要以业务价值驱动

敏捷交付价值,敏捷测试要以业务价值驱动,要以优化业务价值为目标。业务价值可以简单理解为:帮助企业盈利,满足企业业务发展要求,能够带来业务价值的产品需要满足用户需求、让用户使用方便。我们知道,敏捷交付价值,敏捷测试要以业务价值驱动,要以优化业务价值为目标。“TA主要关注系统的操作上,对业务价值关注太少。”“要多关注业务价值,多从业务价值的角度去思考。”这是我们最常见的给敏捷QA的反馈和建议。可是,业务价值到底是什么?业务价值可以简单理解为:帮助企业盈利满足企业业务发展要求能够带.

2020-12-16 10:39:39 274

原创 机器学习平台带给QA的挑战

机器学习平台是一款集数据集、特征工程、模型训练、评估、预测、发布于一体的全流程开发和部署的工作平台。其数据量大、数据多样性、支持算法种类多,加上算法模型结果不确定、集成复杂等等特点;这会给QA的工作带来怎样挑战、以及如何克服,本文一一揭晓。在谈测试机器学习平台带给QA的挑战之前,先了解一下机器学习平台是什么?机器学习平台是一款集数据集、特征工程、模型训练、评估、预测、发布于一体的全流程开发和部署的工作平台,为数据科学家提供端到端的一站式的服务,帮助他们脱离繁琐的工程化开发,从而帮助他们提高工作效率。.

2020-12-15 22:13:49 187

原创 使用 DDD 指导微服务拆分的逻辑

对于服务拆分的逻辑来说,是先设计高内聚低耦合的领域模型,再实现相应的分布式系统。服务的划分有一些基本的方法和原则,通过这些方法能让微服务划分更有操作性。最终在微服务落地实施时也能按图索骥,无论是对遗留系统改造还是全新系统的架构都能游刃有余。开发者在刚开始尝试实现自己的微服务架构时,往往会产生一系列问题 :微服务到底应该怎么划分?一个典型的微服务到底应该有多微?如果做了微服务设计,最后真的会有好处吗?回答上面的问题需要首先了解微服务设计的逻辑,科学的架构设计应该通过一些输入并逐步.

2020-12-15 18:06:08 983

原创 我的笔记系统

一个好的笔记系统,应该能把你所学习到的任何资料串联起来,形成一个知识系统,在你需要他们的时候,可以很容易找到,进而形成自己新的知识。我在《用OneNote管理你的知识》这篇文章中介绍了如何用OneNote管理各种资料,虽然OneNote已经做的非常好了,依然存在以下问题无法达到我的要求:排版不支持语法高亮。作为一个经常写代码的人,这点不能忍。没有Tag系统。无法很灵活的给页面插入各种tag,导致资料无法有效互联,形成一个个知识孤岛,最终变成一个资料备份工具。数据格式专有。只能用OneNote才.

2020-12-15 14:26:31 158

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除