本文根据11月15日百胜智库技术专题研讨会易宝支付首席技术官CTO陈斌分享整理。
陈斌:易宝支付首席技术官CTO,译著《架构即未来》《架构真经》《数据即未来》
如果生命是一本书,翻开属于自己的那本,你希望看到怎样的故事?
在畅销书《这辈子,你该做什么?》中,作者布朗森访谈了900多个来自各行各业的人,记录了56个动人故事,书中的每个主角都有各自精彩的人生,同许多人一样,他们心里也有自己的恐惧,但他们能够直面恐惧,并克服它们,从而找到人生的方向,在生命画下休止符前有所成就,因此没有虚度一生。
那么,对于技术人员而言,如何走出自己的精彩人生?
先说下我的技术人生吧。1989年,硕士毕业后,我经历了不少岗位,政府公务员、新航系统分析员、日立美国系统集成总监、Abacus首席架构师、eBay/PayPal移动技术高级架构师,现在是易宝支付CTO。多年的经历,让我有一个很深的感触,那就是:聚焦才能成功。
作家格拉德威尔在《异类》一书中指出:“人们眼中的天才之所以卓越非凡,并非天资超人一等,而是付出了持续不断的努力。1万小时的锤炼是任何人从平凡变成世界级大师的必要条件。”将1万小时进行换算,计算得出:一个人成为行业领域专家的时间是5年多,这是完全聚焦于学习领域的情况。随着人生阶段的推移,聚焦程度会有所下降。22-25岁,毕业与择业阶段,聚焦程度100%,5年半的时间能够让你成为行业专家;28-31岁,成家与立业阶段,聚焦程度75%,成为行业专家你需要7年半的时间;35-38岁,成长阶段,聚焦程度50%,成为行业专家的时间延长至11年;46-49岁,聚焦程度25%,时间再度被延长至18年。对于每一个人而言,成为领域专家的机会并不多,不断地转换行业、随波逐流显然是不利于你个人的职业发展之路的。你需要做的就是遵从你的内心,看准目标,聚焦于某个行业,并一直走下去。
技术人员聚焦技术领域是最短最佳捷径,千万不要轻易放弃,比如转行去做管理。管理是个万金油,没有太高的门槛。技术转管理易,但要真正做好管理,需要具备资本、业务、法律、人力资源、财务等多方面的知识,要求非常之高。对很多技术人员来说,工作6-7年后或者说35-40岁时会出现瓶颈,不少技术人员会出现动摇,如何坚持,这是对于技术人员定力的考验。
好的架构师智商、情商、悟商缺一不可,还需要技术的广度与深度、对于业务的理解、丰富的经验等多重素质。如何成为这样的架构师?这就需要你坚持行业,聚焦领域。
有一个关于航天的趣闻,可能很多人都听说过:传说中,NASA(美国宇航局)的科学家在1960年代太空竞赛高峰时期,知道钢笔无法在无重力的状况下书写,于是花费好几年的时间与数百万美元纳税人的钱,研发出一支无需重力拉引墨水的原子笔——知道这事的苏联人笑了笑,给美国宇航局寄了封信,上面写到:“何不试试铅笔?”
架构设计要回归本源,也就是说架构师更应该考虑的不是技术,而是真实需求。在实际的设计中,客户考虑更多的不是你的技术性,而是你的技术能否解决他的问题。比如设计⼀款家⽤空调,要求在室外可以达到绝对温度0 度,在室内可以达到华⽒300 度,这种设计是在浪费资源,毫⽆⽤途。与此相对的是,设计和制造⼀款空调机,能够在室外温度华⽒零下20 度时,把室内加热到可以舒适⽣活的环境温度。毫无疑问,后者更适配于实际需求,且成本更低。
在实际的工作中,为了避免架构不匹配实际需求结果的产生,我们可以采用DID方法进行操作。在设计的时候,可以按照20倍-无限的范围去思考;在实施的时候,可以按照3-20倍去考量;在部署的时候,则需要在实际需求的1.5-3倍进行。这其中的关键是,简化范围、设计和实施,抓住核心,消除复杂性,以达到事半功倍的效果。比如,我们可以在开发产品的时候,可以先做出一个简单的原型——最小化可行产品,然后通过测试并收集用户的反馈,快速迭代,不断修正产品,以此来达到简化范围的目的,最终适应市场的需求。
在日常工作中,我们经常要做出技术架构方面的各种决策。在决策过程中,经常会因为一些问题而陷入无穷无尽的争论,各执己见难以形成共识。要提高决策效率和质量,一个有效的方法就是先确立原则,以下是具有普适价值的15条架构原则。
N+1设计。目前已广泛地应用在从数据中心设计到应用服务的部署中。就是说,在发生故障时,系统至少要有一个冗余的实例,必须确保一个为自己,一个为客户、一个为失败。
回滚设计。如果很久才能修复服务,那么就要在一定的时间范围内完成回滚。灾难性的事故,例如损坏客户数据,往往在部署后好几天才出现。系统最好按照预先的设计,通过发布或回滚解决问题。
禁用设计。当设计系统,特别是与其他系统或服务通讯的高风险系统时,要确保这些系统能够通过开关来禁用。这将为修复服务提供额外的时间,同时确保系统不因为错误引起诡异需求而宕机。
监控设计。通过监控发现系统的可用性问题,使系统自我诊断、自我修复成为可能,确定系统可预留空间的使用情况,掌握系统之间的交互关系,发现瓶颈。
多活数据中心设计。数据是否全部集中在一个数据中心?读写是否分离?是否所有的客户信息都共享同一个数据结构?多活数据中心设计能够应对客户的高要求,具有高可用性的特点。
采用成熟的技术。新技术可以降低成本、减少产品上市时间、提高性能。不幸的是,新技术也往往有较高的故障率。如果把新技术应用在架构的关键部分,可能会对可用性产生显著的影响。
故障隔离。理想情况是负载均衡、网络前端、应用服务器、数据库,绝不共享任何服务、硬件和软件。
水平扩展。平台的水平扩展是指随着业务的发展,当需要扩大平台的服务能力时,不必重构软件系统,通过增加新的设备来满足业务增长的需要。
非核心则购买。系统研发要投入资源,系统维护更要长期投入。这影响核心产品到市场的速度。如果可以形成差异化的竞争优势,那么自己做,否则外购。
使用商品化硬件。如果架构设计得好,就可以通过购买最便宜的服务器轻松地实现水平扩展,前提是所有商品化硬件的总成本要低过高端硬件的总成本。
小构建、小发布、快试错。小构建的成本较低,可以确保投资可以产生价值;发布的失败率与变更数量相关,小发布失败率较低;可依市场反馈,快速迭代,加快TTM,优化用户体验。
异步设计。同步系统中个别子系统出现故障会对整个系统带来影响;同步系统中性能最慢的子系统成为整个系统性能的瓶颈;同步系统中扩展性最差的子系统是整个系统扩展的瓶颈。
无状态设计。状态是系统的吞吐量、易用性、可用性、性能和可扩展性的大敌,要尽最大可能避免。
前瞻性设计。产品设计要有前瞻性,要考虑到下一代规划系统的架构、设计、能力、性能和扩展性。
自动化。所有系统都该在设计阶段考虑自动化部署、构建、测试、监控。自动化原则既是节省资源的方法,也是提高系统可靠性的一个好方法。
在技术人员的发展之路中,需要考虑和周围环境交互作用的问题。因为,人员和过程的良好交互能够带来好的技术良性循环,反之,人员和过程的不良交互会带来不良的技术恶性循环。那么,在实际的工作中,如何对人员、组织、过程进行配合,以达到良性循环的结果呢?
首先是人员。作为管理者,需要将合适的人员置于合适的岗位中。采用转换型或交易型的方式进行引导,并对人员进行区别考评,以发挥人员的最大潜力。
其次是组织。要建立面向业务目标的组织,进行职能的划分;在团队规模上,每个团队人数不可以超过9人,实现两级扁平化管理;不开会或少开会,确保信息可以在有限范围有效沟通。
最后是过程。聚焦问题,优化系统使其具有容错的能力,加强监控,放止错误变成失败;适当使用ITIL体系;从人、方法、工具等角度不断优化过程。
合适的人员、合适的组织、合适的过程,将迎来合适的行为,产生合适的决策。这是一个良性的循环,会让事情不断地向好的方向发展。
总的来说,聚焦技术领域是技术人员的走出精彩人生的最短最佳捷径。飘忽不定朝三暮四的探索往往一事无成,技术人员需要关注业务价值提高素养不断突破局限。最后想说,技术之路并不寂寞,希望大家都能走出精彩的人生。

