架構設計之初體驗,送給準備進階架構的朋友(個人總結)
這篇文章呢是我在阿里學習了架構設計之後總結的一篇文章,本人是高階開發,目前正在進階架構師
1 基本概念和目的
架構設計的目的是為了解決系統複雜度帶來的問題,並不是要面面俱到,不需要每個架構都具備高效能、高可用、高擴充套件等特點,而是要識別出實際業務實際情況的複雜點,然後有有針對性地解決問題,即:有的放矢,而不是貪大求全。 在實際情況中,不一定每個系統都要做架構設計,需要結合實際情況。有時候最簡單的設計開發效率反而是最高的,架構設計畢竟要投入時間和人力,這部分投入如果用來儘早編碼,專案也許會更快。
2 架構設計複雜度來源
高效能架構專題
架構師築基專題
開源框架解析
B2C商城實戰專案
團隊協作專題
微服務架構專題
3 架構設計三原則
合適原則
GFS為何在Google誕生,而不是在Microsoft誕生,其中Google有那麼龐大的資料是一個主要因素,而不是因為Google的工程師比Microsoft的工程師更加聰明。
真正優秀的架構都是企業在當前人力、條件、業務等各方面約束條件下設計出來的,能夠合理地將資源整合一起併發揮出最大功效,並且能迅速落地。這也是很多BAT出來的架構師到了小公司或者創業團隊反而做不出成績的原因,因為沒有大公司的平臺、資源、積累,只是生搬硬套大公司的做法,失敗的效率非常高。
簡單原則
無論是結構的複雜性還是邏輯的複雜性,都會存在各種問題,所以架構設計時如果簡單方案和複雜的方案都可以滿足需求,最好選擇簡單的方案。《UNIX程式設計藝術》總結的KISS(Keep It Simple,Stupid!)原則一樣適用於架構設計。
演化原則
對於軟體系統來說,變化才是主題。軟體架構需要根據業務的發展而不斷變化。 如果沒有把握“軟體架構需要根據業務發展不斷變化”這個本質,在做架構設計的時候就很容易陷入一個誤區:試圖一步到位設計一個軟體架構,期望不管業務如何變化,架構都穩如磐石。
為了實現這樣的目標,要麼照搬業界大公司公開發表的方案;要麼投入龐大的資源和時間來做各種各樣的預測、分析、設計。無論哪種做法,後果都很明顯:投入巨大,落地遙遙無期。更讓人沮喪的是,就算跌跌撞撞拼死拼活終於落地,卻發現很多預測和分析都是不靠譜的。
實踐中,架構師要提醒自己不要貪大求全,遵循演化優於一步到位的原則,因為業務的發展和變化總是很快的,**無論多牛的團隊,都不可能完美預測所有的業務發展和變化路徑。**實踐中可以參考如下建議:
- 首先,設計出來的架構要滿足當時的業務需要。
- 其次,架構要不斷地在實際應用過程中迭代,保留優秀的設計,修復有缺陷的設計,改正錯誤的設計,去掉無用的設計,使得架構逐漸完善。
- 第三,當業務發生變化時,架構要擴充套件、重構,甚至重寫;程式碼也許會重寫,但有價值的經驗、教訓、邏輯、設計等卻可以在新架構中延續。
- 在這裡歡迎加入我的私人群:836442475【點選進入】;可以免費獲取到架構學習資料,希望能夠幫到現在想要進階架構,遇到職業瓶頸的朋友。
4 架構設計的流程
相信很多朋友看完之後也想現在就學習一下程式設計師進階架構方面的知識,還有很多朋友在3-5年之間,但是呢,遇到了職業瓶頸,想進階一個臺階,在網上找了大量的視訊,看了很多書籍都沒有太大的效果,公司專案上面遇到的專案問題也沒有地方問,所以呢,這裡有老師們錄製的一些關於Java進階的一些視訊,並不是一兩個方面。肯定能夠幫到行業的一些朋友,少花些時間在部落格和百度上面找資料,把時間利用好。
看不清大綱的歡迎加入我的私人群:836442475【點選進入】
針對於上面的面試題我總結出了網際網路公司java程式設計師面試涉及到的絕大部分面試題及答案做成了文件和架構視訊資料免費分享給大家(包括Dubbo、Redis、Netty、zookeeper、Spring cloud、分散式、高併發等架構技術資料),希望能幫助到您面試前的複習且找到一個好的工作,也節省大家在網上搜索資料的時間來學習,也可以關注我一下以後會有