新上手一个业务、或者一个系统,该如何快速学习并投入开发呢?多问自己以下的问题,先去搞懂它们吧:

业务学习

  • 业务所在的行业情况如何?
  • 业务的目标用户是谁?解决用户什么问题?
  • 业务现在有多少人在用?峰值是多少?
  • 业务的价值是什么,如何量化,如何衡量其价值?
  • 业务有哪些功能,功能间是什么关系?
  • 业务有哪些领域概念,梳理一下相关的领域模型?
  • 业务的核心业务流程什么?SWOT分析?
  • 业务的非功能特性如何?如安全性、稳定性、性能、体验、质量、扩展性?
  • 业务未来的发展规划是什么,短期&长期?

    技术学习

    逻辑架构

  • 有哪些子系统和模块,关系什么?

  • 上下游有哪些能力,和谁对接?
  • 关键业务流程是什么样的?如何实现的?

    开发架构

  • 代码如何分层?

  • 使用了什么框架、工具和中间件?
  • 开发维护和运行都依赖哪些平台?

    运行架构

  • 上下游各个节点是如何通信的,rpc&https?

  • 各节点及整体服务承受的压力极限是多少?当前qps多少?
  • 系统有哪些环境,各个环境如何分配机器,都是如何部署的?如集群or分布式orCDN
  • 全年运行有没有哪些时候更容易出问题?
  • 系统都具备哪些监控?能否全链路追踪?有没有紧急能力,如开关、降级、限流等?
  • 系统现有哪些已知问题?

    数据架构

  • 使用什么数据库

  • 主流程数据关系是什么(E-R图)
  • 数据量有多少,是否分库分表?
  • 有哪些同步任务、定时任务?
  • 大数据框架使用情况如何?