浅谈 Code Review 之事前准备

image from pixabay

随着业务规模扩大、团队组成变复杂,如何降低项目实施风险,降低软件复杂度变得尤为关键。 我从 Martin Flower、Joel Spolsky(软件随想录 作者) 等巨匠智慧中寻找解决复杂工程之道,其中 Code Review 是行之有效手段。 我认同 Code Review 价值也是忠实执行者。

加入蚂蚁以后,我在所接触项目中都大力推广 Code Review。 感谢团队信任和支持,目前 CR 协作进展顺利, 项目 CR 从最早不主动,到现在形成基于模块 Owner 制度 CR 和 Peer Review。 我也曾经在 3 个月内处理完成 700 多个 Pull Request,并在 PR 讨论中中都留下一些有价值讨论。 这里我将自己对 Code Review 一些理解记录下来。

这一篇先讲讲进入 Code Review 之前需要做准备工作。

more ...

再见 2019

bali 2019 年 9 月摄于巴厘岛

和老友聚餐时候完了一个游戏,大家各自找了一个词形容自己的 2019。我用的词是「累」和「平凡」。

more ...


从 2018 到 2019

yuan-ming-yuan

图片摄于北京圆明园

怎么描述 2018?我找了三个关键词。

2018 忙、拥抱变化、新生

我的 2018 年从北京拉开帷幕,1 月份时候团队几个小伙伴一起去给北京研发中心同学做了一次技术分享。 TL 余老师带我们三个架构师逛了圆明园,北京小伙伴热情招待我们吃了东来顺火锅。 在天津时候还第一次从海河冰面渡河。只是没想到,这次旅行成了我在沪江最后一次团建,

当时我已经有一些想法离开沪江,一些问题逐步暴露出来: 沪江工作舒适、做事情自由,但技术上缺乏量级挑战,制度上内部流程僵化,部门利益关系错综复杂。 我深信业务、技术是互相引领促进,在这种环境下无法全力施展拳脚。

more ...

DevOps 和 SRE

最近有一位朋友和我聊职业发展方向问题,聊了不少 DevOps 和 SRE 话题。 我几年前刚接触这两个概念时也常常将之混淆,可惜当时没有人来解答我困惑。 现在这虽然已经极为流行,但是我发现我这位朋友对这两个职位还存在一些误区。 于是我给了一些见解并整理成文章以饕大众。

最常见的误区:

  • DevOps 新概念,好高级哦
  • SRE 是高级版 DevOps
  • 运维可以轻松转身 DevOps 工程师

让我一一给你讲解吧。

sre-and-devops.png image via YouTube

more ...

破解三才五格姓名测试

201807/bagua.png image from Wikipedia 八卦

随着孩子预产期临近,我还有一个重要的任务没有完成:给孩子起一个名字。 这本来是个随性的任务,但是由于上一辈笃信某个算命先生的姓名测试算法,让这个任务难度倍增。 我根据一些古文取了不少名字,但是最后都败在姓名测试上面:得分不高。得分不高老一辈就要有说辞, 我自己就是一个活生生案例,曾用名得分不高,中考被逼换了名字,改头换面重新做人。

我根据韵律取的名字几乎都败在算分数上面,我得琢磨一下其中奥秘,提高取名效率,避免再出现差错。 不少网站都提供姓名测试算命,我且先看看上面的得分,研究一下规律:

每家网站都写得天花乱坠:易经、五格剖象法、五行起名、五格起名、三格数理。 这些都不用 Care,因为它们都是来自同一个算法:「三才五格」。

more ...

从 SQL Server 到 MySQL(三):愚公移山 - 开源力量

该系列三篇文章已经全部完成:

201806/refactor.png

我们用了两章文章 从 SQL Server 到 MySQL(一):异构数据库迁移 / 从 SQL Server 到 MySQL(二):在线迁移,空中换发动机 介绍我们遇到问题和解决方案。 不管是离线全量迁移还是在线无缝迁移, 核心 ETL 工具就是 yugong。

Yugong 是一个成熟工具, 在阿里巴巴去 IOE 行动中起了重要作用, 它与 Otter / Canal 都是阿里中间件团队出品。 它们三者各有分工: Yugong 设计目标是异构数据库迁移; Canal 设计用来解决 MySQL binlog 订阅和消费问题; Otter 则是在 Canal 之上,以准实时标准解决数据库同步问题。 Otter 配备了相对 yugong 更健壮管理工具、分布式协调工具, 从而长期稳定运行。Yugong 设计目标则是一次性迁移工作,偏 Job 类型。 当然 yugong 本身质量不错,长期运行也没问题。 我们有个产线小伙伴使用我们魔改后 yugong, 用来将数据从管理平台同步数据到用户前台,已经稳定跑了半年多了。

more ...

从 SQL Server 到 MySQL(二):在线迁移,空中换发动机

该系列三篇文章已经全部完成:

flying-tanker

(image via https://pixabay.com/en/military-stealth-bomber-refueling-602729/ )

在上篇文章 从 SQL Server 到 MySQL (一):异构数据库迁移 - Log4D 中,我们给大家介绍了从 SQL Server 到 MySQL 异构数据库迁移的基本问题和全量解决方案。 全量方案可以满足一部分场景的需求,但是这个方案仍然是有缺陷的: 迁移过程中需要停机,停机的时长和数据量相关。 对于核心业务来说,停机就意味着损失。 比如用户中心的服务,以它的数据量来使用全量方案,会导致迁移过程中停机若干个小时。 而一旦用户中心停止服务,几乎所有依赖于这个中央服务的系统都会停摆。

能不能做到无缝的在线迁移呢?系统不需要或者只需要极短暂的停机? 作为有追求的技术人,我们一定要想办法解决上面的问题。

more ...


从 SQL Server 到 MySQL(一):异构数据库迁移

该系列三篇文章已经全部完成:

201803/migration-bird.png

背景

沪江成立于 2001 年,作为较早期的教育学习网站, 当时技术选型范围并不大: Java 的版本是 1.2,C# 尚未诞生,MySQL 还没有被 Sun 收购, 版本号是 3.23。 工程师们选择了当时最合适的微软体系,并在日后的岁月里, 逐步从 ASP 过度到 .net,数据库也跟随 SQL Server 进行版本升级。

十几年过去了,技术社区已经发生了天翻地覆的变化。 沪江的技术栈还基本在 .net 体系上,这给业务持续发展带来了一些限制。 人才招聘、社区生态、架构优化、成本风险方面都面临挑战。 集团经过慎重考虑,发起了大规模的去 Windows 化项目。 这其中包含两个重点子项目:开发语言从 C# 迁移到 Java, 数据库从 SQL Server 迁移到 MySQL。

本系列文章就是向大家介绍, 从 SQL Server 迁移到 MySQL 所面临的问题和我们的解决方案。

more ...