自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

靈魂 36 問,讓你快速熟悉一個(gè)系統(tǒng)

系統(tǒng)
面對(duì)一個(gè)完全陌生的系統(tǒng),如何快速的熟悉并上手?本文將從三個(gè)方面進(jìn)行總結(jié),提供一個(gè)系統(tǒng)的方法,同時(shí)也可以用來 review 已有的系統(tǒng),查漏補(bǔ)缺。

 面對(duì)一個(gè)完全陌生的系統(tǒng),如何快速的熟悉并上手?本文將從三個(gè)方面進(jìn)行總結(jié),提供一個(gè)系統(tǒng)的方法,同時(shí)也可以用來 review 已有的系統(tǒng),查漏補(bǔ)缺。

[[320916]]

前言

開發(fā)人員經(jīng)常會(huì)面臨下面一些場景:

  • 新人入職,需要學(xué)習(xí)已有系統(tǒng),作為 landing 的一部分,如何學(xué)習(xí)?
  • 被拉過去參與一個(gè)陌生系統(tǒng)的迭代開發(fā)或者系統(tǒng)維護(hù)(bugfix),如何快速上手?
  • 同事離職或轉(zhuǎn)崗,需要把系統(tǒng)交接給你,怎么去接?內(nèi)心 os:這是一口鍋嗎?

[[320917]]

 

這樣的場景多了,就需要去梳理常見問題以及應(yīng)對(duì)方法,方便后續(xù)遇到類似場景可以快速應(yīng)對(duì)。本文總結(jié)熟悉系統(tǒng)主要分三部分:業(yè)務(wù)學(xué)習(xí)、技術(shù)學(xué)習(xí)、實(shí)戰(zhàn)。每部分會(huì)梳理一些在學(xué)習(xí)過程中需要解答的問題,這些問題隨著經(jīng)驗(yàn)的積累需要逐步補(bǔ)充完善。

業(yè)務(wù)學(xué)習(xí)

業(yè)務(wù)學(xué)習(xí)就是從業(yè)務(wù)角度去學(xué)習(xí)系統(tǒng),我們需要了解系統(tǒng)的客戶是誰、使用人是誰、帶來了什么價(jià)值,系統(tǒng)提供了哪些功能等。不清楚業(yè)務(wù),就等于不知道系統(tǒng)在干什么。技術(shù)是為業(yè)務(wù)落地而服務(wù),清楚了業(yè)務(wù)才知道怎樣用技術(shù)更好地服務(wù)業(yè)務(wù),所以業(yè)務(wù)學(xué)習(xí)是熟悉一個(gè)系統(tǒng)的首要任務(wù)。這塊主要的學(xué)習(xí)方式有跟產(chǎn)品、運(yùn)營、開發(fā)溝通,學(xué)習(xí)產(chǎn)品設(shè)計(jì)文檔文檔、PRD、自己使用系統(tǒng),還有一些常見圖,如產(chǎn)品功能架構(gòu)圖、業(yè)務(wù)流程圖、功能樹,用例圖等。

常見問題:

  • 系統(tǒng)所在行業(yè)的情況是怎樣?
  • 系統(tǒng)的目標(biāo)用戶是誰?比如是給公司高層做決策用?給運(yùn)營或客服用?還是互聯(lián)網(wǎng)用戶用?
  • 平均有多少人在使用?高峰期多有少人在用?
  • 系統(tǒng)有什么業(yè)務(wù)價(jià)值?有哪些指標(biāo)可以衡量系統(tǒng)業(yè)務(wù)價(jià)值?
  • 系統(tǒng)有哪些功能模塊?
  • 系統(tǒng)有哪些領(lǐng)域概念?梳理下系統(tǒng)的領(lǐng)域模型。
  • 系統(tǒng)的關(guān)鍵業(yè)務(wù)流程有哪些?關(guān)鍵業(yè)務(wù)流程是怎樣?
  • 系統(tǒng)的非功能性需求有哪些?如性能、質(zhì)量、擴(kuò)展性、安全性等。
  • 系統(tǒng)未來的發(fā)展規(guī)劃是怎樣?

技術(shù)學(xué)習(xí)

技術(shù)學(xué)習(xí)主要學(xué)習(xí)系統(tǒng)的架構(gòu)、如何實(shí)現(xiàn)、系統(tǒng)的運(yùn)維等。描述一個(gè)系統(tǒng)的架構(gòu)有五視圖方法論,五視圖分別是:邏輯架構(gòu)、開發(fā)架構(gòu)、運(yùn)行架構(gòu)、物理架構(gòu)、數(shù)據(jù)架構(gòu)。

邏輯架構(gòu)

邏輯架構(gòu)著重考慮功能需求,系統(tǒng)應(yīng)當(dāng)向用戶提供什么樣的服務(wù),關(guān)注點(diǎn)主要是行為或職責(zé)的劃分。常用表達(dá)圖形,靜態(tài)圖有包圖、類圖、對(duì)象圖,動(dòng)態(tài)圖有序列圖、協(xié)作圖、狀態(tài)圖、活動(dòng)圖。邏輯架構(gòu)的核心設(shè)計(jì)任務(wù)是模塊劃分、接口定義、領(lǐng)域模型細(xì)化。

常見問題:

  • 有哪些子系統(tǒng)或模塊?系統(tǒng)之間是什么樣的關(guān)系?
  • 對(duì)外上下游接口有哪些?對(duì)接人是誰?
  • 關(guān)鍵業(yè)務(wù)流程怎么實(shí)現(xiàn)的?用類圖、序列圖等方式表達(dá)出來。

開發(fā)架構(gòu)

開發(fā)架構(gòu)關(guān)主要關(guān)注系統(tǒng)源代碼、第三方SDK、使用的框架、中間件、工具包。

常見問題:

  • 代碼在哪?
  • 包怎么劃分的?怎么分層?如 mvc、controller-service-dao。
  • 用了什么框架?如 ssh、dubbo。
  • 用了哪些工具包?如 apache commons、guava。
  • 用了哪些中間件?如 metaq、tair、schedulerX、Diamond。
  • 依賴哪些平臺(tái)?如權(quán)限平臺(tái)、流程引擎等。

運(yùn)行架構(gòu)

運(yùn)行架構(gòu)的著重考慮運(yùn)行期質(zhì)量屬性,關(guān)注點(diǎn)是系統(tǒng)的并發(fā)、同步、通信等問題,這勢必涉及到進(jìn)程、線程、對(duì)象等運(yùn)行時(shí)概念,以及相關(guān)的并發(fā)、同步、通信等。

常見問題:

  • 系統(tǒng)能支撐多少 qps ?峰值 qps 多少?
  • 與上下游系統(tǒng)怎么交互的?rpc?http?同步還是異步?

物理架構(gòu)

物理架構(gòu)的設(shè)計(jì)著重考慮安裝和部署需求,關(guān)注點(diǎn)是目標(biāo)程序及其依賴的運(yùn)行庫和系統(tǒng)軟件最終如何安裝或部署到物理機(jī)器,以及如何部署機(jī)器和網(wǎng)絡(luò)來配合軟件系統(tǒng)的可靠性、可伸縮性、持續(xù)可用性、性能和安全性等要求。

常見問題:

  • 系統(tǒng)如何發(fā)布部署?有哪些部署環(huán)境?
  • 系統(tǒng)有多少臺(tái)機(jī)器?
  • 系統(tǒng)部署怎么部署的?關(guān)注接入層,部署方式,如集群部署、分布式部署等。
  • 有沒有容器化?
  • 有沒有多機(jī)房部署?

數(shù)據(jù)架構(gòu)

數(shù)據(jù)架構(gòu)的設(shè)計(jì)著重考慮數(shù)據(jù)需求,關(guān)注點(diǎn)是持久化數(shù)據(jù)的存儲(chǔ)方案,不僅包括實(shí)體及實(shí)體關(guān)系數(shù)據(jù)存儲(chǔ)格式,還可能包括數(shù)據(jù)傳遞、數(shù)據(jù)復(fù)制、數(shù)據(jù)同步等策略。

常見問題:

  • 數(shù)據(jù)存儲(chǔ)在哪?用了什么數(shù)據(jù)庫,如 oracle、mysql。
  • 梳理 E-R 圖。
  • 數(shù)據(jù)量有多少?是否有分庫分表?
  • 用了哪些 nosql 庫?
  • 有哪些數(shù)據(jù)同步任務(wù)?
  • 大數(shù)據(jù)框架的使用情況如何?

系統(tǒng)運(yùn)維

系統(tǒng)運(yùn)維重點(diǎn)關(guān)注什么時(shí)候會(huì)出問題,出了問題怎么解決。

常見問題:

  • 什么時(shí)間容易出問題?比如電商雙十一,對(duì)系統(tǒng)的壓力很大,這時(shí)候很容易出問題。
  • 對(duì)關(guān)鍵功能是否有監(jiān)控?需要看系統(tǒng)有配置了哪些報(bào)警項(xiàng),監(jiān)控了哪些方面。
  • 出了問題怎么解決?日志在哪?是否有全鏈路跟蹤?是否有一些緊急操作,比如開關(guān)配置、降級(jí)、限流配置。
  • 系統(tǒng)有哪些坑?找開發(fā)同學(xué)回顧歷史問題,以免踩坑。通過同事總結(jié)的 case,或者與負(fù)責(zé)的產(chǎn)品、運(yùn)營、技術(shù)與了解。系統(tǒng)總會(huì)有一些坑,需要把這些坑填上。歷史代碼經(jīng)過多次迭代總會(huì)導(dǎo)致復(fù)雜度高(分支、嵌套、循環(huán)很多),存在設(shè)計(jì)漏洞,性能隱患等,很難維護(hù),這些就需要我們?nèi)ブ貥?gòu)了。記住有一句話:填的坑越大,能力越大。
  • 運(yùn)營、客服反饋的常見問題有哪些?

實(shí)踐

熟悉了系統(tǒng)的業(yè)務(wù)和技術(shù)后,就要實(shí)戰(zhàn)了,通過實(shí)戰(zhàn)進(jìn)一步加深對(duì)系統(tǒng)的熟悉程度。實(shí)踐可以通過做需求、修 bug、重構(gòu)等方式,親自動(dòng)手編碼、調(diào)試、測試、上線。

總結(jié)

已有系統(tǒng)通常經(jīng)歷了從 0 到 N 的建設(shè)過程,熟悉系統(tǒng)其實(shí)是一個(gè)逆向推導(dǎo)過程,也是一個(gè)學(xué)習(xí)架構(gòu)、閱讀源碼的過程。在學(xué)習(xí)的過程中最好能帶上思考,比如為什么要這么設(shè)計(jì),為什么要用這個(gè)中間件?是否有更好的編碼方式?哪些地方可以優(yōu)化等,以此達(dá)到一個(gè)深入熟悉的過程。

責(zé)任編輯:武曉燕 來源: 阿里技術(shù)
相關(guān)推薦

2020-09-23 10:59:00

開發(fā)技能代碼

2019-12-20 09:31:23

TCPHTTP瀏覽器

2022-05-17 20:37:41

MyPick泛型對(duì)象類型

2019-06-27 10:15:46

架構(gòu)代碼項(xiàng)目

2023-11-23 16:46:55

LinuxAWK運(yùn)維

2015-07-29 10:00:16

開源項(xiàng)目

2017-12-07 15:05:50

全球互聯(lián)網(wǎng)創(chuàng)新峰會(huì)

2024-08-28 08:38:51

2024-02-26 07:51:08

業(yè)務(wù)系統(tǒng)迭代

2024-01-22 11:06:47

系統(tǒng)后端開發(fā)

2020-01-23 15:44:58

運(yùn)維架構(gòu)技術(shù)

2020-03-24 10:20:24

TCP協(xié)議網(wǎng)路

2015-07-28 15:35:48

學(xué)習(xí)語言

2018-04-24 10:05:13

Docker工具交付

2024-06-19 09:47:21

2019-04-13 14:33:29

2017-12-04 01:08:15

戴爾

2024-02-26 18:11:08

Docker容器鏡像

2025-04-24 10:20:00

2024-03-15 08:18:25

volatileAtomic關(guān)鍵字
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)