杂项 - 世界百强品牌

AI 摘要: 每个强者都有自己的成长轨迹,后来者需要不断学习和历练才能超越。本文提到了一些强大的公司和他们的业务复杂性,以及在处理这些复杂性时需要考虑的关键要素和原则。

每一个强者都有其自身的成长轨迹,作为后来人,唯有不断学习和历练,方能成长和超越

  • Nike: just do it(速度、动感)、菲尔奈特、shop dog
  • 耐克:打破常规者,人恒敬之,别管别人怎么说的想法,不要过度关注目标在哪里,不论面临什么,都不要停下
  • Google:alphabet 公司、PageRank、YouTube、Gmail
  • IBM:我们创造了什么,改变了什么,影响了什么;创造美好,改变世界,影响世界;
  • Adidas:impossible is nothing(一切皆有可能)
  • 宝马:选择成为心目中最有朝气、锐气、进取心、有创造力的那一批人

业务复杂度高系统(eg. 结算系统中多业务概念、长业务流程、多状态机、资金安全无差错结算)

  1. 前 - 开始接触和熟悉业务背景、模块、流程,辅以图示直观解读
    • 学习和梳理结算相关业务概念:20+虚拟单、冻结解冻、逾期、返款扣款等、结算关联因子、一清、二清、二清合格、收付通垫付、轧差等等
    • 建立业务系统观: 熟悉业务背景,尝试梳理出 DB 关系图、流程图、Wiki 文档。梳理过程注意做信息索引: 业务核心命令字、协议编号、虚拟单号等记录/打印出来快速 mapping
  2. 中 - 动手实践验证,小批量迭代,快速验证和掌握业务流细节,填充业务细节
    • 搭建研发环境,执行并观察程序执行流程: 能够复现的 BUG 通常都不难解决,所以有一套良好的研发、测试、预发、生产环境,对问题解决研效提升很有帮助(结算之前只有生产,改造后测试 - 读写测试库、预发 - 读生产写测试库、生产 - 读写生产库 三套环境,在二清改造过程中发挥了很重要的作用)。通过执行流程,补充和修正自己对业务的理解、修缮自己架构图、业务流程图、DB 关系图。
    • 制定可行的技术方案: 结合需求给出对应技术解决方案,和小组成员充分沟通,确定产品或技术方案可行性,遵循架构设计原则(简单、合适、演化原则)
    • 小批量提交: 每次开发一个小的迭代(函数、注释、小重构),进行一个原子提交,同时提交之前自己做代码 CR(亲测有效),再让团队成员 CR
    • 快速构建和功能校对: 有了一个新的功能迭代(原子性的),快速校验(UT、集成测试),附带顺手的脚手架、快速 CICD 工具、可运行的测试环境让 Debug 事半功倍
    • 自动化运维: CICD 自动化(自动化运维平台)、Git Hooks、开源自动化脚本工具等
  3. 后 - 质量把控,吃自己的狗粮
    • 明确系统改进后质检方案: 如何确认你的改动对现有系统不会带来不良影响(压测、风控服务、脚本检测、SQL 筛查、人工数据筛查、新老服务数据对比)
    • 系统监控与告警: 请求流量 QPS、新增/变更数据,通过图表呈现,可视化运维(Grafana、Kabana 等)
  • 高并发:缓存机制(本地、多级缓存、Redis 缓存)、分治思想(无状态、水平扩缩容、分片、散列、负载均衡)、串行改并行(协程、协程池、协程间通信)、同步改异步(CQRS、MQ 生产者+消费者模型)、资源竟态问题(并发读写锁、串行化)

  • 高可用:冗余实现(无状态、幂等)、隔离(DDD 领域划分、业务服务划分)、Design For Failure 设计(重试、熔断、限流、降级)

  • 可维护(扩展性):微服务拆分(康威定律、2pizza、单一职责)、DDD、遵循架构设计原则(简单、合适、演化)、代码分层、设计模式(SOLID、KISS、YAGIN)、命名与注释(可读性关注)

  • 数据一致性:CAP、分布式事务处理(分布式锁、消息队列串行化处理)、BASIC 最终一致(事务补偿)

  • 安全性:RBAC、认证/授权/鉴权、数据传输(TLS)、加密存储(对称、非对称)

  • Owner 成事和追求卓越的心态(做完和做优秀):定义完事定义 DoD(Define Of Done - 定义完成),截止时间、交付内容、交付质量,对自己写的代码负责,吃自己的狗粮;思考有哪些可创新、流程可改进等,不断把事情做出彩,同时也让自己不断成长(eg. 账号观测性、Clickhouse、DDD、研发规范、多环境结算)

  • 系统性思维:系统性思维是一种综合性思考方式,它强调将问题视为一个整体系统,并理解所有因素和组成部分之间的相互作用和影响。通过系统性思维,人们可以更好地理解和应对复杂的问题,找到更加深刻和全面的解决方案。

  • 分治思想: 分治思想是一种将问题分解成更小、更易于处理的子问题的方法,然后将子问题逐个解决,最终合并成原始问题的解决方案的思想。(账号系统演进、下行切 TIMPush、结算系统演进都用到类似思想)

  • 高效沟通:充分发挥主观能动新,明确沟通目标、准确表达、聆听对方、互动、反馈和确认、沟通工具

  • 敬畏之心:在操作现网数据、发布更新现网服务时候,时刻有敬畏之心,对用户数据和服务负责(数据校对、质量把控、巡检、多人 CR)。在课堂负责核心系统期间(账号系统、直播间信令系统、结算系统),对超过 30+核心服务进行了迭代更新、重构和维护,持续优化系统的性能和稳定性,同时保持着零事故的记录

  • 精益思维:识别生产中的浪费和瓶颈,并采取措施消除它们,以实现生产效率的提高(研发流程也可以运行精益思维,甄别痛点、难点、低效流程等,制定合适的解决方案处理问题)

  • 成本思维:权衡决策做 TradeOff

    • 业务或技术的痛点/难点分析,业界方案 SWOT 对比分析
    • ROI 评估(收益、成本 - 时间/人力/资源)
    • 小步迭代 vs 一步到位,遵循架构设计原则(简单、合适、演化),架构设计取舍(可用性 vs 成本、高性能 vs 一致性、效率 vs 质量/安全性、维护成本 vs 研发重构)
  • 第一性原理:核心思想是将一个问题或现象分解成最简单的元素或组成部分,再独立地加以研究和分析,并通过逻辑推理和实证验证来得出结论。在解决问题时候,强调通过分析问题最基本的元素和属性,来推导出更加深入和准确的结论