构建管道和日志记录现代化最佳实践
由 Mux 赞助的 DEV 全球展示挑战赛:展示你的项目!
今天阅读的文章的简要总结。
构建管道现代化
- 高质量的流水线必须快速高效,这就需要快速反馈。为了实现这一点,可以让你的持续集成工具并行处理所有没有相互依赖关系的任务,并避免同时运行多个检查。
- 让流水线反映在代码中,并调用也能在本地运行的 shell 脚本,以便在推送部署之前更轻松地进行测试,从而实现更快的反馈循环。
- 为了确保您的流水线可靠且可复现,请使用容器来隔离运行每个任务,并在流水线内构建容器,每一步都创建一个新的容器。
- 虽然持久化工作区可以节省时间,但它可能会导致不稳定,因此一个好的折衷方案可能是通过缓存依赖项而不是每次都下载它们来提高速度。
- 保持流水线高度可视化,避免过度抽象。可视化使构建过程易于理解,并能快速追踪构建失败的原因。
- 您的系统必须能够跨多个流水线扩展。避免重复(这会降低流水线速度),而是将任务参数化,以便通过传递变量来配置它们,并构建一个任务库,使您可以在不同流水线之间重用代码,同时降低任务和流水线之间的耦合度。
全文请点击此处阅读,阅读时间约10分钟。
我谈到日志记录时,指的是什么呢?
- 分析日志与记录日志同等重要,甚至更为重要。只记录那些你打算分析的内容。
- 将生产和日志记录(收集、处理和归档)分开,这样日志分析就不会给生产系统带来额外的负担,而且,日志也能得到保护,防止攻击者隐藏其踪迹。
- 将日志传输到具有适当访问权限和归档策略的集中式日志服务器。此外,尽可能保留日志的原始状态以供后续分析,不要在早期阶段对其进行聚合。
- 在进行日志分析之前,请确保您已充分了解系统的基线行为。这样您就能知道需要记录哪些内容、日志需要保留多长时间,并且可以添加灵活的工具来帮助您快速有效地分析任何格式的日志。
- 设置基线和阈值后,启用事件自动报告功能。这样,每当发生重要事件时,您都能及时查看日志。
全文请点击此处阅读,阅读时间约6分钟。
Pinterest 的 API 分析
- 常用的性能分析指标包括 CPU 使用率、内存使用率和函数调用频率。获取这些指标有两种方法:基于事件的性能分析和统计性能分析。
- 基于事件的性能分析会跟踪特定事件的所有发生情况,例如函数调用、返回和抛出的异常。统计性能分析则是通过定期探测调用堆栈来采样数据。虽然它的精度较低,但速度更快,开销也更低。
- Pinterest 的 API 网关服务是用 Python 编写的。因此,为了进行内存分析,我们使用了tracemalloc包来跟踪内存块。
- 为了计算运营成本,Pinterest 需要结合资源利用率数据和请求指标来衡量每个端点的受欢迎程度。这帮助他们识别出成本最高的端点,以及负责这些端点的工程师/团队。这促使相关团队更加重视并主动监控性能。
- 死代码——指那些未使用、无人管理的代码,例如旧的实验、测试和文件,甚至是文件中从未实际调用过的代码行——会使代码库变得杂乱无章。Pinterest 使用标准的 Python 测试覆盖率工具来识别死代码,然后将其清除。
全文请点击此处阅读,阅读时间约7分钟。
订阅我的新闻简报,即可在每个工作日直接在您的收件箱中收到这些笔记。
文章来源:https://dev.to/mohanarpit/best-practices-for-modernizing-build-pipelines-logging-11lf