Lessons learned porting 50k loc from Java to Go

https://blog.kowalczyk.info/article/19f2fe97f06a47c3b1f118fd06851fad/lessons-learned-porting-50k-loc-from-java-to-go.html

作者使用将 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

https://cloudblogs.microsoft.com/opensource/2019/05/06/introducing-pg_auto_failover-postgresql-open-source-extension-automated-failover-high-availability/

Citus (已经被微软收购)出的一个 Postgres 自动 failover 方案,通过一个 monitor 来监控主备数据库,在主挂掉的时候,将备切换为主。同时,从 Postgres 10 开始,一个客户端可以连接多个服务端,会自动选择可以写入的服务端。所以,这个是一套完整的 failover 方案。

Is HIgh Quality Software Worth the Cost?

https://martinfowler.com/articles/is-quality-worth-cost.html

作者把软件质量分为外部质量(UI 或者 缺陷,用户可以看到的)和内部质量(架构等用户看不到的)。用户很容易就能看出一个软件是否有很高的外部质量,但是无法看出其内部质量的水平。

内部质量不好,会导致技术债务快速累积,技术债务会这导致增加新功能的速度变慢,并且容易导致缺陷。所以提升内部质量有助于增加新功能。增加新功能的速度越快,质量越好,软件就越便宜。


知识共享许可协议本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。