Daily Reading

每天一篇英文技术文章。希望通过这个阅读计划可以提升大家与英文阅读能力与技术视野。

规则

  • 要参加 Daily Reading 计划的同学可以添加微信「e7hanz」加入微信群。
  • 群里每天发一篇技术文章,文章链接也会提交到 Github Repo 上。
  • 群里的同学每周至少提交一篇笔记,否则需要在下一周的周一离开这个群,离开的同学也欢迎随时回来。
  • 笔记不限于当周的文章,仓库里的任意一篇文章都可以。

提交笔记

  • 在相应的目录下创建个人名字命名的文件即可,例如「xiaoming.md」。

Index

Distributed System

Architecture

  • 2020/10/30 - Building Services at Airbnb, Part 4: Airbnb 的微服务测试实践。
  • 2020/11/07 - Building Airbnb's Internationalization Platform: 讨论了 Airbnb 的国际化平台架构,这是一篇业务架构综述文章,对 i18n 领域的常见问题进行了介绍,以及讲解了 Airbnb 的实现方案。
  • 2020/11/08 - Architecting for Reliable Scalability: 文章讨论了在对架构进行扩展时的一些常见实践,例如模块化、水平扩展、内容缓存等等。内容中有大量的 Reference,是一篇很好的领域综述性文章。
  • 2020/11/11 - Taming Service-Oriented Architecture Using A Data-Oriented Service Mesh: Airbnb 的 Mesh 实践。不同于现在到处都在说的数据面、控制面等概念,Airbnb 一开始就以数据为中心来构建整个服务治理系统。
  • 2020/11/12 - Solid Relevance: 距离 SOLID 原则提出已经过了 30 多年了,这个时间太久以至于不少人认为 SOLID 原则已经不再适用于现代软件工程。但 Uncle Bob 认为并不是这样的,软件工程的根基一直没有变化,SOLID 原则依然适用。在本文中 Bob 重新审视了 SOLID 五条原则在现代软件工程中的适用性。
  • 2020/11/17 - Building Software Systems At Google and Lessons Learned: Jeff Dean 在 2010 年的分享,分享了 Google 从 1999 年到 2010 年间面临的各种不同的挑战,以及架构的演进。
  • 2020/11/24 - On Designing and Deploying Internet-Scale Services: 经典论文,讨论了设计一个后端系统时需要考虑的方方面面,例如面向故障设计、服务健康检查、底层组件零信任、版本管理、消除单点故障等等。架构师必读。
  • 2020/12/04 - How to Move Beyond a Monolithic Data Lake to a Distributed Data Mesh: 文章列举了若干种不同的数据分析架构,着重对比了集中式的数据池(Data Lake)与分布式数据网格(Data Mesh)的差异,分析了之间的演进过程,提出了一些数据平台架构建设的建议。
  • 2020/12/13 - Choose Boring Technology: 我们每天都要面对的问题是市面上可选的新技术越来越多,不管我们是否关心它们,新技术总会主动或被动的进入我们的视野中。如何看待新技术?如何在技术选型的时候平衡新技术带来的创造力和风险?本文的建议是,选择那些「无聊」的技术。
  • 2020/12/19 - How Netflix Scales its API with GraphQL Federation: Netflix 是一个典型的微服务架构,微服务架构中,API 聚合层的复杂度会随着业务规模的扩展呈现出指数级增长。Netflix 通过 GraphQL 来解决这个问题,本系列文章介绍了 Netflix 的实践。
  • 2020/12/28 - Hints for Computer System Design: 如何设计一个优秀的系统?作者从接口、实现等层次上分别讨论如何实现一个功能良好的、高性能的、高度容错的计算机系统。

Network

Storage

  • 2020/12/11 - Modern storage is plenty fast. It is the APIs that are bad.: 现代 NVMe 设备改变了 I/O 操作的行为,让随机读的成本不再昂贵。作者基于 Intel Optane 设备设计了两个新的读文件 API,并且得到了不错的性能提升。本文讨论了如何设计 API 以适应更快的新型读写设备。

Monitoring

Frontend

  • 2020/10/28 - When is no-code useful?: 讨论了低代码平台存在的问题,以及作者认为低代码平台要解决的问题。文章中对于复杂度、软件工程的本质提出了一些看法。
  • 2020/11/19 - How We Build a Design System: 如何构建一套设计系统。不仅仅介绍了设计系统是什么,还介绍了怎么运营这样一套设计系统。
  • 2020/11/21 - Micro Frontends Pattern Comparison: 微前端框架是近几年比较热门的一个领域,本文讨论了几种常见的微前端框架范式。
  • 2020/12/10 - The End of Cross-Platform as We Know It: 跨平台框架是几十年来新技术层出不穷的一个领域,例如最近几年非常热门的 React Native、Flutter 等。作者认为这些跨平台应用有着无法解决的固有缺陷,要么改进,要么死亡。
  • 2020/12/15 - Errors and Error Handling in JavaScript: 介绍了 JavaScript 错误捕捉的基本概念和实践。
  • 2020/12/23 - How to Evaluate NPM Packages: 分享了作者是如何选择开源组件的,其中通过点赞趋势、开发趋势、性能、安全等多个方向去综合评估的思路值得借鉴。
  • 2020/12/25 - How we built the GitHub globe: GitHub globe 是前一阵子 Github 做的一个 Web 可视化报表,展示了全球开源社区的生产活动。这篇文章分享 Github globe 是如何被实现出来的。

Personal & Team Work

Testing

Operation System

  • 2020/12/20 - Understanding Linux CPU Load - when should you be worried?: CPU Load 是一个既基础又容易被误解的知识点,这篇文章举了一个车过桥的例子,生动、简单的说明了 CPU Load 和 CPU 利用率之间的区别,以及对于不同程度的 CPU Load 我们应该关心什么。

Others