SRE&Devops 每周分享 Issue #2

Python in RHEL 8

Red Hat 上周发布了 RHEL8,这是官网发布的一篇博客,讲了在 RHEL8 上面使用 Python 的一些注意事项,非常值得一读。

10 年前,Python 社区决定摆脱技术债,发布一个不向后兼容的版本 Python3,但是他们显然低估了这门语言的流行程度和带来的兼容性问题。

在 RHEL8 上面,Python3.6 是默认版本,但是也没有在系统默认安装,需要 yum install python3 。Python2 也是可以通过 yum 安装的: yum install python2 。

但是不带版本的命令 python 会导致 command not found 。因为现在有两拨人,一波认为默认 Python 应该是 Python2,用 Python3 的话应该显式键入 Python3。但是另一拨人应该向前看,默认 Python 应该换成 Python3 了。话说笔者在这周就遇到一个因为 Python 指向 Python37 导致 build 失败的 bug。在这方面,RHEL8 保留观点,默认的 Python 不指向任何命令,用户必须显示的写明版本(这样脚本也可以在任何版本的 Linux 下工作)。

既然 RHEL8 不自带 Python,那 yum 又是 Python 写的,yum 是怎么运行的呢?这个问题就留给读者自己去阅读此文吧。除此之外,这篇文中还写了如何正确使用 pip,如何正确使用 virtualenv,可以说都是一些“最佳实践”,非常值得一读。

Overload Control for Scaling WeChat Microservices

这是 the morning paper 推荐的一篇 Paper,非常值得一读。介绍了微信微服务的流量过载控制系统 DAGOR。此系统已经微信生产环境中服役 5 年,可谓身经百战。过载控制系统可以在当系统过载的时候有效的保护后端的系统,微服务的开发者很难正确估计真正生产流量,所以将过载控制系统从服务逻辑中解耦出来就非常重要。这篇 Paper 可能在这方面给你一些启发。

Analyzing the GitHub outage

非官方的,一篇有关 Github 10月故障的分析。

Some notes on running new software in production

当你想在生产环境使用新的软件时(我觉得新 lib 也差不多),应该花多少时间去了解你要用的这个东西?应该要了解到什么程度?此文是一篇不错的参考。(ps:Jvns 的博客有口皆碑)

工作、生活、side-project 和学习的平衡

是不是感觉很难做着一份工作的同时还保持学习新的技术?没时间去完成自己的 idea?甚至完全没有自己的生活了?

这篇帖子给出了很多有用的建议:

  1. 尽量减少通勤时间
  2. 保证锻炼和休息的时间
  3. 集中精力
  4. 每天进步一点点
  5. 理智的选择社交生活
  6. 接收事情要花很长时间,不要总是想 ALL IN、把其他事情放到一边。慢慢来,即使某件事要花上十年。不要期望某个事情会从一个时间马上就发生改变,接受事情是慢慢做成的。

Travis CI <3 Honeycomb

 本文介绍 Honeycomb 给 Travis 带来的巨大价值。Travis 一周会运行超过 300 万次 build,在这么大的流量中,如果没有足够的数据的话,调试某一次 build 问题,或者接口问题是很困难的。Travis 在没有 Honeycomb 之前是使用几个 Metric(四条黄金监控)来监控线上的服务状态的。但是这样的问题是,没办法知道某一次 outage 影响了多少用户,耗时高的流量是从哪里来的。也就是粒度不够。第二个资源是日志,日志是原始的信息,动辄好几屏,如果没有好的工具,很难使用日志。

Honeycomb 就是这样的工具,以前无法使用的庞大数据,用 Honeycomb,只需要点几下鼠标就可以了。文章举了一个例子,某一个用户(很可能是 bot)持续访问一个非常慢的 API,拖慢了整个接口耗时。有了 Honeycomb,Travis 很快定位出了这个用户,并确定这个是没有对其他用户造成影响的。要是没有 Honeycomb,可能要排查日志、定位、评估很长时间。

在生产环境中部署 Django Channel

本文介绍了在生产环境中部署 ASGI 应用和 WSGI 应用的方法(分别分开部署的)。包括 Nginx、gunicorn、daphne 的部署等。还有 websocket 的压测方法。放在书签里以后可能会有用:)

Introducing PyEnvDiff-lib and a Hub & Spoke Python Environment Diff Tool

本周正好遇到一个 flake8 的结果本地和 CI 不一致的情况,搞了半天发现是本地有一个全局的 config (啥时候写的我自己都忘了)。所以类似的工具可能可以解决这种问题。

The ultimate DevOps hiring guide

《Devops 雇佣指南》给雇主和寻找工作的 devops 的建议。

Highly Available Microservices with Health Checks and Circuit Breakers

介绍了几种负责均衡的方案,和健康检查、熔断的方法。很好的一篇入门文章,后面介绍了 Kong 的解决方案和使用方法。个人很看好这个项目!



Leave a comment

您的电子邮箱地址不会被公开。 必填项已用*标注