首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Prometheus Metrics 设计的最佳实践和应用实例,看这篇够了!

    Prometheus 是一个开源的监控解决方案,部署简单易使用,难点在于如何设计符合特定需求的 Metrics 去全面高效地反映系统实时状态,以助力故障问题的发现与定位。本文即基于最佳实践的 Metrics 设计方法,结合具体的场景实例——TKE 的网络组件 IPAMD 的内部监控,以个人实践经验谈一谈如何设计和实现适合的、能够更好反映系统实时状态的监控指标(Metrics)。该篇内容适于 Prometheus 或相关监控系统的初学者(可无任何基础了解),以及近期有 Prometheus 监控方案搭建和维护需求的系统开发管理者。通过这篇文章,可以加深对 Prometheus Metrics 的理解,并能针对实际的监控场景提出更好的指标(Metrics)设计。

    04

    项目管理中,几种工作量评估方法

    在测试项目管理中或编写测试计划时,经常需要对某个测试工作进行工作量的预算,很多时候都是凭个人的工作经验进行估算的,如能结合一些常规的估算方法,有助于估算的精确度。   以下是网上找到的一些常规的估算测试工作量的方法:   1、 Ad-hoc方法   这种方法下的测试工作量不基于任何确定的期限。工作一直继续直到达到一些由管理或市场人员预先定下的时间表。或者,一直到用完了预算的经费。  这种情况普遍存在于非常不成熟的组织,并且时常有100%的错误差数。   2、开发时间的百分比法Percentage of development time。   这个方法的基本前提是测试工作量依赖于开发时间/开发工作量。首先,开发工作量使用例如LOC或FP方法被估算出来,然后使用一些探索性的方法来限制测试的工作量。  这种方法变化比较大而且通常基于以前的经验。   通常预留项目的总花费时间的35%给测试。? 5-7%给组件和集成测试? 18-20%给系统测试? 10%给接收测试(或回归测试等)   3、类比法(经验值法或历史数据法)   根据以前或相似项目(主要在项目性质,领域,规模上有相似)所积累的经验或历史数据来估算工作量。类比法估计结果的精确度取决于历史项目数据的完整性和准确度,因此,用好类比法的前提条件之一是组织建立起较好的项目后评价与分析机制,对历史项目的数据分析是可信赖的。需要收集以下相关的历史数据:? 在设计和实现阶段花费的时间? 测试工作的规模,例如用户需求的数量,页面数,功能点? 数据样式,例如实体,字段的数量? 屏幕或字段数量? 测试对象的规模,例如KLOC   4、WBS(work breakdown structure)估算法   将项目或产品分解为具体的工作,然后分别对各个工作进行时间估算,最终求和得出项目或产品的测试工作量/时间。   5、Delphi法   Delphi法是最流行的专家评估技术,在没有历史数据的情况下,这种方式可以减轻估算的偏差。Delphi法鼓励参加者就问题相互讨论。这个技术,要求有多种相关经验人的参与,互相说服对方……   Delphi法的步骤是:1、协调人向各专家提供项目规格和估计表格;2、协调人召集小组会各专家讨论与规模相关的因素;3、各专家匿名填写迭代表格;4、协调人整理出一个估计总结,以迭代表的形式返回专家;5、协调人召集小组会,讨论较大的估计差异;6、专家复查估计总结并在迭代表上提交另一个匿名估计;7、重复4-6, 直到达到一个最低和最高估计的一致。   6、PERT估计法   PERT对各个项目活动的完成时间按三种不同情况估计:一个产品的期望规模,一个最低可能估计,一个最高可能估计。用这三个估计用来得到一个产品期望规模和标准偏差的Pert 统计估计。Pert 估计可得到代码行的期望值E, 和标准偏差SD

    01

    6种办法实现精益软件

    最近,我浏览了公司的代码库,发现它有三个版本的仪表板,都是用于分析页面,我很确定客户不需要那样做。这引发了我幼稚脑中的一些事情,我开始在互联网上寻找相关的想法。就在那时,我发现了这篇古老的论文:“为精益软件辩护”。 这篇文章提出的观点很大程度上与我共鸣。 介绍 与10年前的类似功能软件相比,我们今天写的软件很大,运行任何现代软件所需的内存和资源都非常高,增强的用户体验和功能只是增加的大小的一部分,原因还有更多。 所有现代设计模式、代码架构等都是教会我们如何应对这种复杂性,而不可能从根本上消灭它。 两条法则非常准确地反映了软件的状态: 1. 内存越来愈大,软件扩展了才能填充可用内存。 2. 硬件却变得越来越快,但是软件变得慢更多。 简化软件的方法在于用训练有素的方法将其返回本质。 “FAT软件”的原因 导致复杂性的一个主要原因是软件拥有的功能太多,这些不一定都是使用时所必需的功能,我们不断添加新功能和扩展,并且与原始系统的任何不兼容性将被忽略或传递无法识别。 当系统的强大到通过功能数量来衡量时, 数量变得比质量更重要 ,每个新版本都必须添加功能,即使它真的不需要添加任何功能。 1.所有功能,所有时间 软件的单体设计是使软件复杂化的主要原因之一,每个可以想象得到的功能都是系统设计的一部分,随着时间的推移,大多数功能都变得无关紧要,但会继续对系统产生影响。 2.对某些人来说,复杂性就是力量。 当我建议将去除一些不必要的灵活性并使事情标准化以降低复杂性和提高可维护性时,PM当时的反应至今记忆犹新。 不可理解性应引起人们的怀疑,而不是钦佩。 3.没有足够的时间 时间压力是笨重软件的首要原因。我们没有足够的时间从代码中删除已弃用的功能并改进我们认为可接受的解决方案。 六种办法帮助保持软件“精益” 1. 强类型语言 使用强类型语言有助于以更简单的方式设计复杂系统,它允许编译器精确定位错误和接口,并且可以更自信地使用和更改抽象。 2.找到适当的分解 系统应该被分解成模块,模块应该被分解成组件,组件应该有单一的责任,整个系统应该在层次结构中进行分解,同时最小化复杂性并且去除重复代码。 3.可扩展性 可扩展性是保持系统从一开始就简化的先决条件。它还允许定制系统以适应新的更改和删除已弃用的扩展。 4.永远不应该构建复杂的软件 认为复杂系统需要设计师和程序员的纪律是不正确的,完全无法理解的系统,至少在单个个体的重要程度上,应该永远不会建立起来。 5.沟通是关键 随着时间的增长,沟通问题变得占主导地位,复杂的团队结构促成复杂的软件。 6.降低复杂性应该是目标 降低软件的复杂性和规模应该是每个开发步骤的目标,在系统规范中,对于详细的编程设计 - 每个步骤都必须有意地消除系统中任何不必要的复杂性。 结论 本主题确实触及了软件团队的敏感神经,当我和我的团队讨论这个时,他们的回答就是“不同意,这是销售需要的功能。“,”现在没有必要保持软件小。我们拥有更大的机器和更好的工具“等借口。 我明白了。我在某种程度上也不会同意,但不是因为保持软件精益是错误的,而是因为它很难,尽管如此,我希望在设计系统时牢记这些想法应该可以减少软件的复杂性。

    01
    领券