做者 | 唐志龙(鲲龙) 阿里巴巴高级开发工程师mysql
导读:本文总结了熟悉系统主要分三部分:业务学习、技术学习、实战。每部分会梳理一些在学习过程当中须要解答的问题,这些问题随着经验的积累须要逐步补充完善。sql
开发人员常常会面临下面一些场景:数据库
这样的场景多了,就须要去梳理常见问题以及应对方法,方便后续遇到相似场景能够快速应对。本文总结熟悉系统主要分三部分:业务学习、技术学习、实战。每部分会梳理一些在学习过程当中须要解答的问题,这些问题随着经验的积累须要逐步补充完善。apache
业务学习就是从业务角度去学习系统,咱们须要了解系统的客户是谁、使用人是谁、带来了什么价值,系统提供了哪些功能等。不清楚业务,就等于不知道系统在干什么。技术是为业务落地而服务,清楚了业务才知道怎样用技术更好地服务业务,因此业务学习是熟悉一个系统的首要任务。这块主要的学习方式有跟产品、运营、开发沟通,学习产品设计文档文档、PRD、本身使用系统,还有一些常见图,如产品功能架构图、业务流程图、功能树,用例图等。安全
常见问题:网络
技术学习主要学习系统的架构、如何实现、系统的运维等。描述一个系统的架构有五视图方法论。架构
五视图分别是:并发
逻辑架构着重考虑功能需求,系统应当向用户提供什么样的服务,关注点主要是行为或职责的划分。经常使用表达图形,静态图有包图、类图、对象图;动态图有序列图、协做图、状态图、活动图。逻辑架构的核心设计任务是模块划分、接口定义、领域模型细化。mvc
常见问题:oracle
开发架构关主要关注系统源代码、第三方 SDK、使用的框架、中间件、工具包。
常见问题:
运行架构的着重考虑运行期质量属性,关注点是系统的并发、同步、通讯等问题,这势必涉及到进程、线程、对象等运行时概念,以及相关的并发、同步、通讯等。
常见问题:
物理架构的设计着重考虑安装和部署需求,关注点是目标程序及其依赖的运行库和系统软件最终如何安装或部署到物理机器,以及如何部署机器和网络来配合软件系统的可靠性、可伸缩性、持续可用性、性能和安全性等要求。
常见问题:
数据架构的设计着重考虑数据需求,关注点是持久化数据的存储方案,不只包括实体及实体关系数据存储格式,还可能包括数据传递、数据复制、数据同步等策略。
常见问题:
系统运维重点关注何时会出问题,出了问题怎么解决。
常见问题:
熟悉了系统的业务和技术后,就要实战了,经过实战进一步加深对系统的熟悉程度。实践能够经过作需求、修 bug、重构等方式,亲自动手编码、调试、测试、上线。
已有系统一般经历了从 0 到 N 的建设过程,熟悉系统实际上是一个逆向推导过程,也是一个学习架构、阅读源码的过程。在学习的过程当中最好能带上思考,好比为何要这么设计?为何要用这个中间件?是否有更好的编码方式?哪些地方能够优化等,以此达到一个深刻熟悉的过程。
附:总结图
“阿里巴巴云原生关注微服务、Serverless、容器、Service Mesh 等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,作最懂云原生开发者的技术圈。”