主题 04:如何设计一个复杂的系统(上)

1. 引言

系统设计又称系统架构,软件领域负责系统设计的工程师通常被称为架构师。在阿里,架构师多以角色存在于具体的项目中,而非专门设置的职位,对于复杂的系统,通常由 P8 或 P9 级别的资深工程师负责设计。

在实践中,根据复杂度的不同,有些小系统只需画个流程图即可梳理清楚;但是,复杂系统的设计则困难得多,以 12306 为例,2020 年春运期间高峰日点击量达 1495 亿/天,170 万/秒,单从这两个数据看,其设计、实现就不容易。在 12306 系统设计方案评审的时候,官方曾邀请了数名阿里的资深工程师参与,本主题的撰稿人之一便是当年的亲历者,在通过官方提供的资料详细地了解了铁路交通票务相关的信息后,他才意识到自己严重低估了铁路票务的复杂度。在此,读者不妨设想一下,如果你是 12306 项目的设计师,你准备如何设计这个系统呢?你的设计套路(方法)是怎样的?

在笔者看来,不论采用何种设计方案,首先需要明确一个问题——你了解铁路票务吗?如果根本不了解铁路票务,那么,又怎么可能设计出满足铁路票务业务需求的系统呢?在实践中,设计一个复杂的系统,并不单纯是技术层面的问题,首要任务是深入了解其业务,鉴于此,作为系统设计主题的上篇,本文将重点介绍工程师如何践行技术与业务同行。

2. 了解业务十分重要

工程师大多在技术领域是很有追求的,但却普遍轻视业务,甚至嗤之以鼻。这种现象多与工程师的职场经历相关:大多数工程师是和产品经理沟通需求,而不是直接与真正的业务方沟通,导致很多工程师不了解业务全貌;同

你可能感兴趣的:(工程师实战方法论核心,12,讲)