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

百度首席架構(gòu)師眼中的架構(gòu)

開(kāi)發(fā) 架構(gòu)
架構(gòu) (architecture) 這個(gè)概念確實(shí)不好定義。一千個(gè)人心中有一千個(gè)哈姆雷特,一千個(gè)工程師眼里也能有一千種架構(gòu)。以建筑為例,設(shè)計(jì)師想方案,建筑師出圖紙,工人施工同時(shí)項(xiàng)目管理貫穿始終,那圖紙就是架構(gòu)。如果說(shuō)到烤鴨,骨頭和肉是代碼,鴨架子就是架構(gòu),而過(guò)程管理將其變成烤鴨。

編輯注:本文作者 @林仕鼎 為百度首席架構(gòu)師。

原文地址:http://hi.baidu.com/linsd99/blog/item/9de5a90ad17770d03ac7632c.html

今天@Laruence 挖了個(gè)坑,我試著來(lái)灌點(diǎn)水。純粹個(gè)人觀點(diǎn),不準(zhǔn)確也不全面。

架構(gòu) (architecture) 這個(gè)概念確實(shí)不好定義。首先,它很虛,不像代碼可以用源文件“自證”。其次,它很泛,好像跟什么都相關(guān),開(kāi)發(fā)、測(cè)試、部署甚至運(yùn)營(yíng)等各階段都有其影子。然后,它好像還在變,在計(jì)算機(jī)發(fā)展的各個(gè)階段(Mainframe/PC/Cloud)都感覺(jué)不太一樣。而且,在不同的領(lǐng)域也都有不同的反映。

所以,一千個(gè)人心中有一千個(gè)哈姆雷特,一千個(gè)工程師眼里也能有一千種架構(gòu)。在2012年2月1日晚11點(diǎn)左右(向Pkubuntu致敬),我的看法可以用兩個(gè)例子說(shuō)明。以建筑為例,設(shè)計(jì)師想方案,建筑師出圖紙,工人施工同時(shí)項(xiàng)目管理貫穿始終,那圖紙就是架構(gòu)。如果說(shuō)到烤鴨,骨頭和肉是代碼,鴨架子就是架構(gòu),而過(guò)程管理將其變成烤鴨。

如果要更正式點(diǎn)定義,架構(gòu)就是model和pattern,從而把code串成system。而其中最重要的就是design principles (設(shè)計(jì)原則),即為什么這個(gè)問(wèn)題要用這個(gè)而非那個(gè)。更文藝點(diǎn),再結(jié)合點(diǎn)美學(xué),也可以叫作design philosophy (設(shè)計(jì)哲學(xué)或理念)。

然后我們來(lái)看什么是model和pattern,這兩個(gè)具體的定義我還沒(méi)想出來(lái)。先說(shuō)一下比較,model偏宏觀,而pattern偏微觀;model重抽象描述,而pattern重具體實(shí)現(xiàn)。比如,你的系統(tǒng)有一個(gè)服務(wù)端和一個(gè)客戶端,那么client/server就是model,而client與server之間的交互方式則是pattern,比如RPC/message、同步/異步,比如用滑動(dòng)窗口來(lái)組織請(qǐng)求與應(yīng)答等等。當(dāng)然,這和系統(tǒng)的尺度有關(guān)。如果你zoom in到服務(wù)端,此時(shí)的model可能就是模塊的組織關(guān)系,而pattern則是調(diào)用方式,比如用function call還是event等。

具體到領(lǐng)域上,我覺(jué)得主要有三類架構(gòu)問(wèn)題(不包括硬件):

1. 軟件架構(gòu),其典型用例是企業(yè)級(jí)軟件,通過(guò)合理的功能抽象,提取出公共組件和通用流程,進(jìn)行最大化的功能復(fù)用 (reuse)。我稱其為軟件的可維護(hù)性問(wèn)題。

2. 系統(tǒng)架構(gòu),其巔峰是OS,重點(diǎn)是解決資源的分配與復(fù)用 (multiplexing)。

3. 大規(guī)模分布式架構(gòu),主要應(yīng)用在Cloud中,重點(diǎn)是大規(guī)模系統(tǒng)的資源整合、快速交付和運(yùn)維問(wèn)題。

1有《Design Patterns》一書(shū),2有很多OS、并行程序設(shè)計(jì)的書(shū)可供參考 (或者應(yīng)該寫(xiě)本《Parallel Patterns》?),3目前我還不知道有什么書(shū)可參考。

那為什么架構(gòu)會(huì)很泛又多變呢?這就牽扯到開(kāi)發(fā)過(guò)程了。我們?cè)僖胍粋€(gè)方法論 (methodology) 的概念。傳統(tǒng)軟件工程那一套不必說(shuō)了,互聯(lián)網(wǎng)服務(wù)常用迭代式的開(kāi)發(fā)方法 (現(xiàn)在又叫敏捷),這就是方法論。我個(gè)人的做法通常有三種:divide and conquer,modeling and iterate,back-of-envelop-calculation and simulation,按問(wèn)題的規(guī)模、難易程度、熟悉程度、項(xiàng)目的組織方式等等選擇不同做法。這就又提到架構(gòu)師這個(gè)角色了,找時(shí)間再談。

總而言之,相對(duì)于代碼和功能這些更實(shí)際的東西,以上所說(shuō)的都是偏虛偏抽象的事情,我稱其為開(kāi)發(fā)工藝問(wèn)題,包括架構(gòu)和方法論兩個(gè)層面。不同時(shí)代的系統(tǒng),其組成不同,對(duì)開(kāi)發(fā)工藝的要求也不同。在Cloud時(shí)代,可歸結(jié)為三點(diǎn):軟件架構(gòu)和開(kāi)發(fā)過(guò)程支持快速迭代,系統(tǒng)架構(gòu)與分布式架構(gòu)支持大規(guī)模用戶和數(shù)據(jù)分析,然后由數(shù)據(jù)分析驅(qū)動(dòng)迭代。

 

責(zé)任編輯:yangsai 來(lái)源: 百度空間
相關(guān)推薦

2012-05-09 08:59:59

百度云架構(gòu)師林仕鼎

2020-01-16 15:35:00

高并發(fā)架構(gòu)服務(wù)器

2020-09-06 20:20:26

百度黃埔學(xué)院

2011-10-23 11:21:22

DevOpsQcon喬梁

2012-11-12 10:04:53

MySQL開(kāi)發(fā)模式

2009-12-18 10:22:50

Ray Ozzie架構(gòu)師

2012-12-13 09:40:04

架構(gòu)師

2020-01-13 19:53:09

AI

2011-03-11 15:38:08

Java

2010-04-20 09:18:00

架構(gòu)師

2012-11-01 15:09:44

殷塞信息首席架構(gòu)師

2013-08-29 09:20:32

百度Clouda輕應(yīng)用

2016-04-15 13:45:48

2017-06-01 09:34:53

公有云數(shù)據(jù)遷移

2010-03-02 09:44:32

首席架構(gòu)師趙亮

2014-10-28 09:56:56

Hadoop

2010-10-19 10:39:45

鮑爾默軟件架構(gòu)師

2016-08-29 11:33:23

京東云云計(jì)算云安全

2019-07-29 11:25:23

架構(gòu)師架構(gòu)方案架構(gòu)

2016-04-11 17:34:35

首席架構(gòu)師經(jīng)歷
點(diǎn)贊
收藏

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