參加今年的SDCC確實挺高興的,向大師Joe Armstrong 當面求教,與周愛民老師同臺,在我們的架構師進階之路專場有4個七零后的老碼農,瞬間沒有了孤獨感,甚至有一點竊竊之喜。
實在沒想到會有這么多朋友關注這個專題,會場有了些擁擠,呼吸也不那么舒服了。答應朋友們的事,今天就做到,下面是昨天的PPT內容和簡要說明,詳細內容還請關注CSDN 和SDCC的相關發布。
慣例是開始介紹自己,老碼農,都沒什么可吹噓的地方。
看一下工程師和架構師的區別,簡單地,工程師關注的是功能和代碼性能,而架構師關注的是業務和系統的性能等非功能性約束。全棧不是全能,只要覆蓋了所使用的技術棧就是全棧,例如LNMP,Linux+Nginx+MySQL+PHP。全棧架構師關注的是業務所采納的全部技術棧,以及技術棧所涉及的系統性能、安全,高可用等諸多因素。
全棧(full stack developer)好像起源于facebook中對工程師的一種稱謂,全棧架構師估計是老曹的杜撰。全棧的出現大概有4個方面:系統的性能瓶頸定位,團隊間的溝通障礙,業務的救火滅火,以及團隊的資源緊張。尤其的小型創業團隊,戰力的有限會導致全棧的產生。
和習武一樣,我想試圖探討一下全棧的套路,很多能力不是通過當頭棒喝產生的。郭大俠需要降龍十八掌,令狐沖以無招勝有招也需要獨孤九劍。我覺得全棧的技術棧可以主要分為3個切面:技能,性能 和效率。下面逐一簡要闡述:
工其事必利其器,環境在效率中是第一位的。具體可看《老曹眼中的開發學習環境》,不在贅述。
全棧應該掌握4種編程語言:Java,Objc/C/C++, Python,JavaScript。 語言沒有優劣,不同語言有各自的勝場。
每個人都不是一個人在戰斗,團隊敏捷是整體效率的關鍵。可以使用Trello或worktile之類的工具做協同,以Jinkens等工具支持CI或者CD,了解Scrum中什么是backlog,什么是UserStory,如何控制sprint。同時,敏捷不是以質量的喪失為代價的。
再進一步,就是devops了,可以參考《DevOps 全棧必備雙刃劍》。
從下向上看一下 全棧的所需技能,第一個就是操作系統,可參考《老曹眼中的Linux基礎》。
數據是系統的核心,必須要了解文件系統,對象存儲和關系型數據庫,只有NoSQL至少要關注Redis和MongoDB,更多可以可參考《NoSQL與大數據》。
網絡是一個覆蓋更廣的領域,至少要了解七層協議模型,DNS,TCP/IP,HTTP,以及網絡類型對網絡編程的影響,會上只有簡單舉例,以后擇機仔細探討一下。
框架和庫使用鎖采用的語言息息相關的,不同語言又有著不同的框架與庫,簡直是浩如煙海,對框架與庫的選擇主要從面相領域和面向場景入手,有比較才能有選擇。
安全是個與非門,沒事一切都好,有事就是大事。基本上,可以從傳輸,網絡,代碼和數據四個層面掌握有關安全的基礎知識。
至于架構方法,現在最熱的莫過于微服務架構了。服務的劃分與業務密切相關,服務獨立后要考慮服務的發現和服務間的通信,最后是服務治理,可以從這四個方面專研相關的技術。
云服務的出現使得小團隊可以做大事情,關于混合云的解釋可參考老曹的舊文《理解一下混合云》。
從趨勢來看,大數據必將成為工程師團隊的重要戰力,包括專業知識,數學算法,計算環境三個方面。就計算環境而言,涵蓋了Hadoop的生態圈,如果只有一個必備技能,老曹覺得就應該是Spark了,可以參考《架構大數據應用》舊文。
個人以為,性能在諸多非功能性約束中第一重要,直接影響用戶體驗。首先要從業務和代碼層面保障性能,而單元測試是一個必要條件。正像PingCAP CTO 黃東旭所說的,“talk is cheap, show me the tests."
接下來是運行時調優,或者認為是單機性能。從加載和依賴開始,到 JVM調優,再到Linux 內核參數調優。 對于 JVM 調優,給朋友做個廣告,中生代技術群中的 江南白衣 (公眾號:春天的旁邊)有一篇干貨文章,特別向大家推薦。
數據庫是整個系統中的慢性子,關注系統的性能,日志分析比不可少,LEK可能是第一首選。數據訪問必須是高可用的,數據連接池的選擇和使用都是考驗功夫的。
緩存是減少負載,提高系統性的必備技術。可以從客戶端,網絡側,服務端三個環節對緩存進行分類,具體可以參考《老曹眼中的緩存技術》。
負載均衡同樣是一種以空間換時間的技術,具體可參考《老曹眼中的負載均衡》。
傳輸的性能可以依靠消息隊列來提升,ZeroMQ可以用在系統內,而ActiveMQ是Java 程序猿的福音,對于高并發和高容錯而言,RabbitMQ可能是不錯的選擇,Kafka是大量數據的傳輸必備。
啰哩啰嗦,只是想探討一下全棧的套路,也許這本身就是一個偽命題。
這是我非常喜歡的一句話,印在公司的墻上,“以匠心,鑄非凡”,送給每一個熱愛技術的朋友!
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。