想到什么写什么周报 第46期 - 2019-06-16
Lessons learned porting 50k loc from Java to Go
作者使用将 RavenDB 的 Java Client 移植了一个 Go 版本,文章列举了一些移植策略,以及如何使用 Go 实现一些 Java 的特性,比如异常和泛型。
Stack History: A Timeline of Uber’s Tech Stack Evolution
https://stackshare.io/stack-history-timeline-uber-tech-stack-evolution
Uber 的架构进化史。
How to Use sorted() and sort() in Python
https://realpython.com/python-sort/
一篇很详细的介绍 Python 的 sorted() 和 sort() 的用法的文章。
Goodbye Microservices: From 100s of problem children to 1 superstar
https://segment.com/blog/goodbye-microservices/
先从一个单体服务变成 100 多个微服务,好处是做到了服务隔离。但是随着服务数量不断的上升,维护成本开始增加,运营效率下降。最后又改回了单体的服务,采用了一些技术来保证单体服务的可靠性,虽然损失了一些微服务的优点,但是获得了巨大的运营效益。
这个算是一个架构设计的失败案例么?
Introducing pg_auto_failover: Open source extension for automated failover and high-availability in PostgreSQL
Citus (已经被微软收购)出的一个 Postgres 自动 failover 方案,通过一个 monitor 来监控主备数据库,在主挂掉的时候,将备切换为主。同时,从 Postgres 10 开始,一个客户端可以连接多个服务端,会自动选择可以写入的服务端。所以,这个是一套完整的 failover 方案。
Is HIgh Quality Software Worth the Cost?
https://martinfowler.com/articles/is-quality-worth-cost.html
作者把软件质量分为外部质量(UI 或者 缺陷,用户可以看到的)和内部质量(架构等用户看不到的)。用户很容易就能看出一个软件是否有很高的外部质量,但是无法看出其内部质量的水平。
内部质量不好,会导致技术债务快速累积,技术债务会这导致增加新功能的速度变慢,并且容易导致缺陷。所以提升内部质量有助于增加新功能。增加新功能的速度越快,质量越好,软件就越便宜。