全棧工程師,還是網際網路架構師? - 劇多
文章推薦指數: 80 %
1、首先我們看什麼是架構師?架構師應該具備哪些能力?大家都知道很多公司都有架構師這個職位,但是我想告……
首頁>科技>蕭風澀澀吹2019-11-2015:57
全棧工程師,還是網際網路架構師?
1、首先我們看什麼是架構師?架構師應該具備哪些能力?
大家都知道很多公司都有架構師這個職位,但是我想告訴大家的是看一個人是不是架構師不是看職位,而是看他所具備的能力以及正在做的事,所以有架構師頭銜的人不一定具備架構師的能力,而不是架構師的人卻在做著架構師的工作。
2、架構師類似於建築行業的總設計師,通常在一個軟體專案中,架構師需要完成軟體專案中所有技術環節的設計,架構師雖然說不用親自編寫所有程式碼,但是架構師會對專案中所有運用的技術環節了如指掌。
3、因此架構師既可以是一個很簡單的工作,也可以是一個具備超高難度的工作。
而具體的難度係數,取決於具體的專案型別。
就好像蓋一個兩層小樓,和一個跨海大橋,對架構師的要求截然不同。
4、在今天的課程中,陳老師給大家畫了一些不同型別專案的架構圖。
如果想要成為架構師,大家可以看一下要成為架構師針對不同專案型別需要掌握的技術。
5、大家可以看到框裡面並列列出了很多技術,只要位於同一層的技術掌握一個就可以完成完整的軟體流程設計,不要求掌握全部。
6、比如說我們現在目標任務是開發一個自主品牌的mp3播放器,我們的架構師需要懂硬體,比如微控制器,感測器,聲音裝置,再利用匯編或者C語言,來對該電子系統編寫相應的程式,就可以完成這樣的一套mp3程式開發。
7、但軟體的架構師在不斷進化著,在計算機發明的初期,幾乎大部分應用程式都是直接針對硬體來編寫的,但是這樣會導致程式的通用性差,所以才出現了作業系統。
在目前市場上流通的大部分軟體都是工作在作業系統之上的。
8、編寫這樣的應用程式需要我們架構師了解硬體,了解作業系統,並且能夠使用C,C++,VB,等程式語言呼叫作業系統SDK完成軟體功能開發。
由作業系統去跟硬體系統打交道,這樣對於開發人員的要求就降低了很多,同時應用程式的通用性會變得更好。
再看看第三張圖
9、隨著計算機軟體的發展,我們發現很多軟體都是在和資料打交道,使用者資料需要記錄到系統中,同時應該能快速的檢索資料,因此在我們的單機應用中出現了資料庫這麼一類應用程式。
10、在需要儲存資料,搜書資料,以及對資料加工處理統計的時候可以把這些工作交給資料庫去處理。
11、做這類應用軟體的開發工程師,對硬體和作業系統了解即可。
需要他精通資料庫,並且能用任意語言呼叫系統提供的SDK。
在看看第四張圖
12、這個是C/S應用程式架構,這裡的客戶端架構與第三張圖單機應用類似,唯一不同的是在資料的來源的上作出了改變。
原本的單機應用程式資料存在本地,但是一個軟體系統如果有多人使用多個客戶端連線的時候,不可能把資料庫再放到莫一臺客戶機中。
13、解決方案就是讓資料庫通過網路對客戶端提供資料服務。
直接通過客戶端遠端連線直接操作資料庫這種方式也是不可以的,因為資料庫如果直接對外提供資料服務,那麼凡是能連線到該網路的使用者都可以繞過客戶端操作資料庫,這樣資料安全就得不到保障。
14、因此出現了Server,我們通過伺服器端程式來操作資料庫,客戶端程式只能選擇與伺服器端互動,所有的業務操作由伺服器端完成,這種模式就是C/S架構。
15、完成C/S架構的架構師就比做單機應用的架構師難度大很多,不僅要懂得單機應用開發所需要的知識,還需要掌握網路資料庫系統,以及web服務,socket服務等技術。
16、C/S應用程式架構存在一些缺點:需要更新所有已安裝的客戶端版本,而且會出現多個版本並存的情況,後期維護代價極高,而且很不方便。
因為這些原因,就出現了B/S這些架構的軟體。
第五張圖
17、主要區別是B/S架構的應用程式不需要安裝客戶端程式,而是使用大部分的計算機都有安裝的瀏覽器來作為系統前端來與使用者互動,而瀏覽器載入的內容全部來由服務端輸出。
18、這樣B/S的架構師難度相對來說比C/S架構師低很多,並且有諸多的成熟的解決方案,比如:java的javaee架構,微軟的asp.net架構,完全開源的lamp架構,都是很成熟的解決方案。
19、這樣架構的優點在於因為存在大量的成熟的解決方案,只需要一臺可連入網路的伺服器,就可以讓整個系統運轉起來。
開發速度快,運營成本低。
這種解決方案被廣泛接納。
所以做這樣架構的程式設計師數量很多,也因此往往不被當做架構師來看待。
但是做這樣架構的應用程式設計也架構設計中的一種。
我們來看第6張圖20、從2010年以後,智慧手機在國內大量普及,幾年時間誕生了數百萬的App與手機遊戲,往往一個專案既擁有自己的網站,又擁有獨立的APP,而且作為一個整體的系統,iOS,安卓,與網頁的資料應該是一致的。
21、那麼要做到這樣的架構設計的話,我們需要讓我們的ios,安卓客戶端共用我們的服務端,這樣我們的多端才能保持資料高度一致。
22、伺服器端的結構沒有太大的變化,但是軟體設計的方式產生了變化,原本B/S架構中由服務端向瀏覽器輸出相應的html,css,js等靜態內容即可,但如果涉及到移動網際網路應用開發,我們會將我們的應用程式規範化,把前端和後端完全區分開來。
23、伺服器端提供資料互動服務,並編寫相應的介面,移動端進行介面呼叫,並完成介面資料填充以負責使用者互動,即便是移動端瀏覽器,也應採用這種方式來互動。
接下來看第7張圖
24、它和6張圖比較類似,但多出來幾塊。
我們把橫線以上的部分叫服務端,橫線以下的叫前端。
我們在移動網際網路絡時代,經常會涉及到自己的平臺與第三方平臺的互動,我們的應用在接入支付寶,微信,微博等功能後,還會涉及到與第三方平臺的功能互動。
25、通常需要我們通過伺服器發起請求呼叫第三方的API,並且為第三方的平臺保留回撥的介面,因此在製作這樣的應用程式開發的時候,架構師除了要掌握移動網際網路絡的技術外,還需要對第三方提供的功能與規範以及相應介面有充分的了解。
來看第8張圖
26、如果只是從功能實現來說,能夠按照第7張圖完成架構設計的架構師,已經能滿足需求。
但是在實際運營的專案中,除了有功能需求以外,還要有品質需求,比如:網站的負載能力,網路併發連線數,系統的資料吞吐量,專案是否具有擴容能力等。
27、之前所展示給大家的所有架構,都是基於單伺服器架構來設計的,如果只有一臺伺服器,無能我們怎樣花錢來升級他的硬體配置,我們會發現很快將無法進一步擴容。
最好的CPU,最大的記憶體條也是有限度的,因此採用叢集架構,才是解決問題的正確方法。
28、而第8張圖所畫的就是標準的分散式叢集架構,叢集的擴容原則就是一個人幹不完的活多個人一起幹,讓伺服器與伺服器之間,進行分工與協作。
29、而做分散式叢集的架構的架構師,也有著較高的要求,而網際網路上受人敬仰的架構師大多屬於這類。
你也可以認為這才是真正的架構師。
看第9張圖
30、伺服器端同第7張,第8張可以是一致的,具體是選擇哪個伺服器的架構,取決於專案的規模。
專案初期使用者量少,可以選擇單伺服器架構,如果專案後期伺服器負載壓力過大,可以重構為分散式叢集架構。
31、第9張圖的重點在於專案前端,我們來看前端的技術架構圖,這裡所畫的是市面所流行的混合APP的架構。
32、著名的混合APP應用有很多,比如說支付寶手機客戶端,還有Facebook,這些應用都是採用混合APP架構設計的。
33、混合APP應用使用html,和css打造使用者介面,無論是在瀏覽器,微信端,還是在APP中,都是如此。
因此他具備B/S應用程式的優點,可以在伺服器端更新應用內容,並且讓應用在ios,安卓,瀏覽器端保持高度一致性。
34、利用單頁webAPP開發技術,能夠讓網頁程式像原生應用一樣流暢,而webAPP的缺點在於,網頁js程式無法呼叫手機硬體功能,但是混合APP架構可以通過微信sdk,微博sdk,iOSbridges,安卓bridge是等方式來獲取微信APP,微博APP以及手機硬體的功能。
35、因此混合APP架構同時具備了webAPP與原生應用的優勢,成為了市場上主流的移動應用架構設計方法。
跨平臺相容性好,開發成本低,開發速度快。
逐步取代了大量的原生應用。
這也是我們兄弟全棧工程師學習的主要內容。
36、為什麼定這個主題呢?其實我們會發現全盞所涉及的開發領域和架構師基本一致,區別在於能力與深度
37、比如分散式服務部分,如果全盞工程師,可以使用類似Laravel框架這樣的全盞框架解決本地服務,webservice,訊息佇列等問題,
38、但架構師則應該能深入了解其中原理,並做出相應設計
39、全棧工程師只要加深各個領域知識深度,很容易向架構師方向發展
40、因為在以往的大公司大團隊時代,學科越分越細,因此無論大學課程還是培訓機構,此前都是按專業和學科劃分
41、如果學linux,那麼從組網做網路配置,搭建檔案共享或者郵件傳送,web服務等都需要學習和掌握
42、學h5的話,webgl遊戲開發,網頁開發都有學習,其實對於全棧或者架構師發展來說,這樣並不好
43、如果做全棧,那麼我不需要學習如何做網管,所以使用linux應該集中在web服務環境上,類似,學h5,應該著重在移動端觸屏裝置開發為主,所以劃分維度不同,44、如果有了這個認識,就不會被誤導,以為全棧或者架構師就是什麼技術都學,什麼都會。
我麼要的是更專業,學習更深。
45、相信通過今天的分享,大家對如何學習,如何發展,如何成為架構師,能有一個很好的認識。
架構四大專案:
1SpringBoot+高併發訊息處理EDM?專案實戰
2SpringBootELK?分散式資料分析
3Netty?高併發UTS?專案實戰
4SpringCloud?微服務+NoSQL+負載均衡平臺設計
272
工程師
軟體
資料庫
硬體
作業系統
最新評論
發佈評論
∧Linux核心將迎來更多Rust程式碼,谷歌強推∨天府杯2019網路安全大賽落幕瀏覽器接受新一輪零日漏洞挑戰
延伸閱讀
“中臺”是怎麼臭了大街的為了讓你在網易雲聽一首歌,後端工程師都做了什麼?專業探祕|軟體技術專業,軟體定義智慧新時代製作app多少錢?app製作費用一覽表SQL資料庫中的產品資訊怎麼生成二維碼?用什麼軟體?觀看“成人網站”無人知?108億資料被洩露,包括了53萬中國使用者
延伸文章資訊
- 1成為雲端架構師須具備的五大關鍵技能 - Amazon AWS
AWS台灣解決方案架構師主管Nicolas Vautier親身分享雲端架構師必須具備的五大重要 ... 持續部署(CICD)、資料庫、網際網路、安全技術及現代應用程式架構技術等等。
- 2網路架構師工作職缺/工作機會-2022年3月
幸福企業徵人【網路架構師工作】系統架構師、雲端架構師、I3911 系統架構師、資訊系統整合架構師、【中租超利士】中台架構師等熱門工作急徵。1111人力銀行網羅眾多知名 ...
- 3雲端架構師薪水好嗎?應徵前先確認自己有無這6大能力
有的客戶堅持在雲端使用FTP,但其實是call API,那為什麼不用Cloud Storage 就好? 有些客戶要把地端網路設備建在GCP 上管理網路,有沒有可能雲端環境就能 ...
- 4如何成為一個網路架構師? - GetIt01
由於一些人回答的是網站架構師、網路軟體開發工程師的方向,所以必須強調一下是路由與交換類的網路架構師。問題是:題主入行兩年,一直在甲方, ...
- 5網際網路時代架構師的職責與思考 - 每日頭條
於是乎之前的項目經理帶領一幫高級程式設計師、中級/初級程序猿的組織結構顯然已經不太適應時代的需求,產品經理、技術經理、系統架構師、數據架構師、運 ...