点对点视频网站开发,杭州网站推广服务,郴州建设网站公司,哪个网站可以做编程题原文地址:https://mp.weixin.qq.com/s/J8eK-qRMkmHEQZ_dVts9aQ?poc_tokenHMA-_mWjfcDmGVW6hXX1xEDDvuJPE3pL9-8uSlyY 导读#xff1a;本文总结了熟悉系统主要分三部分#xff1a;业务学习、技术学习、实战。每部分会梳理一些在学习过程中需要解答的问题#xff0c;这些问题…原文地址:https://mp.weixin.qq.com/s/J8eK-qRMkmHEQZ_dVts9aQ?poc_tokenHMA-_mWjfcDmGVW6hXX1xEDDvuJPE3pL9-8uSlyY 导读本文总结了熟悉系统主要分三部分业务学习、技术学习、实战。每部分会梳理一些在学习过程中需要解答的问题这些问题随着经验的积累需要逐步补充完善。 前言
开发人员经常会面临下面一些场景
新人入职需要学习已有系统作为 landing 的一部分如何学习被拉过去参与一个陌生系统的迭代开发或者系统维护bugfix如何快速上手同事离职或转岗需要把系统交接给你怎么去接 内心 os这是一口锅吗 这样的场景多了就需要去梳理常见问题以及应对方法方便后续遇到类似场景可以快速应对。
业务学习
业务学习就是从业务角度去学习系统我们需要了解系统的客户是谁、使用人是谁、带来了什么价值系统提供了哪些功能等。
不清楚业务就等于不知道系统在干什么。技术是为业务落地而服务清楚了业务才知道怎样用技术更好地服务业务所以业务学习是熟悉一个系统的首要任务。这块主要的学习方式有跟产品、运营、开发沟通学习产品设计文档文档、PRD、自己使用系统还有一些常见图如产品功能架构图、业务流程图、功能树用例图等。
常见问题
系统所在行业的情况是怎样系统的目标用户是谁比如是给公司高层做决策用给运营或客服用还是互联网用户用平均有多少人在使用高峰期有多少人在用系统有什么业务价值有哪些指标可以衡量系统业务价值系统有哪些功能模块系统有哪些领域概念梳理下系统的领域模型系统的关键业务流程有哪些关键业务流程是怎样系统的非功能性需求有哪些如性能、质量、扩展性、安全性等系统未来的发展规划是怎样
技术学习
技术学习主要学习系统的架构、如何实现、系统的运维等。描述一个系统的架构有五视图方法论。
五视图分别是
逻辑架构开发架构运行架构物理架构数据架构
1. 逻辑架构
逻辑架构着重考虑功能需求系统应当向用户提供什么样的服务关注点主要是行为或职责的划分。
常用表达图形静态图有包图、类图、对象图动态图有序列图、协作图、状态图、活动图。逻辑架构的核心设计任务是模块划分、接口定义、领域模型细化。
常见问题
有哪些子系统或模块系统之间是什么样的关系对外上下游接口有哪些对接人是谁关键业务流程怎么实现的用类图、序列图等方式表达出来。
2. 开发架构
开发架构关主要关注系统源代码、第三方 SDK、使用的框架、中间件、工具包。
常见问题
代码在哪包怎么划分的怎么分层如 mvc、controller-service-dao用了什么框架如 ssh、dubbo用了哪些工具包如 apache commons、guava用了哪些中间件如 metaq、tair、schedulerX、Diamond依赖哪些平台如权限平台、流程引擎等。
3. 运行架构
运行架构的着重考虑运行期质量属性关注点是系统的并发、同步、通信等问题这势必涉及到进程、线程、对象等运行时概念以及相关的并发、同步、通信等。
常见问题
系统能支撑多少 qps峰值 qps 多少与上下游系统怎么交互的rpchttp同步还是异步
4. 物理架构
物理架构的设计着重考虑安装和部署需求关注点是目标程序及其依赖的运行库和系统软件最终如何安装或部署到物理机器以及如何部署机器和网络来配合软件系统的可靠性、可伸缩性、持续可用性、性能和安全性等要求。
常见问题
系统如何发布部署有哪些部署环境系统有多少台机器系统部署怎么部署的关注接入层部署方式如集群部署、分布式部署等有没有容器化有没有多机房部署
5. 数据架构
数据架构的设计着重考虑数据需求关注点是持久化数据的存储方案不仅包括实体及实体关系数据存储格式还可能包括数据传递、数据复制、数据同步等策略。
常见问题
数据存储在哪用了什么数据库如 oracle、mysql梳理 E-R 图数据量有多少是否有分库分表用了哪些 nosql 库有哪些数据同步任务大数据框架的使用情况如何
6. 系统运维
系统运维重点关注什么时候会出问题出了问题怎么解决。
常见问题
什么时间容易出问题比如电商 双11对系统的压力很大这时候很容易出问题对关键功能是否有监控需要看系统有配置了哪些报警项监控了哪些方面出了问题怎么解决日志在哪是否有全链路跟踪是否有一些紧急操作比如开关配置、降级、限流配置系统有哪些坑找开发同学回顾历史问题以免踩坑。通过同事总结的 case或者与负责的产品、运营、技术与了解。系统总会有一些坑需要把这些坑填上。历史代码经过多次迭代总会导致复杂度高分支、嵌套、循环很多存在设计漏洞性能隐患等很难维护这些就需要我们去重构了。记住有一句话填的坑越大能力越大运营、客服反馈的常见问题有哪些
实践
熟悉了系统的业务和技术后就要实战了通过实战进一步加深对系统的熟悉程度。实践可以通过做需求、修 bug、重构等方式亲自动手编码、调试、测试、上线。
总结
已有系统通常经历了从 0 到 N 的建设过程熟悉系统其实是一个逆向推导过程也是一个学习架构、阅读源码的过程。
在学习的过程中最好能带上思考比如为什么要这么设计为什么要用这个中间件是否有更好的编码方式哪些地方可以优化等以此达到一个深入熟悉的过程。