課程簡介
課程可以掌握基本的架構(gòu)思維和架構(gòu)原則,以及常用的架構(gòu)模式,能夠根據(jù)特定的場景和問題進行合理的架構(gòu)設(shè)計,在防止過度設(shè)計的同時,還能保持架構(gòu)的可持續(xù)演進;學(xué)員在掌握真正高可用架構(gòu)的思維和實戰(zhàn)方法的同時,更能清晰的知道一個架構(gòu)從高可用到不可用的路徑上都發(fā)生了什么,以及如何防范,如何在實踐中進行架構(gòu)的防腐;為學(xué)員展示當(dāng)前一線大廠好的設(shè)計和不好的設(shè)計的真實案例,并能夠從案例中去映射高可用和不可用的場景,并總結(jié)出實戰(zhàn)經(jīng)驗和教訓(xùn)的規(guī)范指導(dǎo)。
目標(biāo)收益
1、掌握基本的架構(gòu)思維和架構(gòu)設(shè)計原則,同時洞悉高可用架構(gòu)的本質(zhì),并可以掌握設(shè)計高可用架構(gòu)的能力,以及掌握最優(yōu)代碼落地的能力;
2、能夠根據(jù)特定的場景和問題進行合理的架構(gòu)設(shè)計,掌握如何拉近問題和架構(gòu)方案的距離的能力,以及在防止過度設(shè)計的同時,還能保持架構(gòu)可以持續(xù)演進;
3、能清晰的知道一個架構(gòu)從高可用到不可用的路徑上都發(fā)生了什么,以及如何防范,如何防腐,最后還可以洞悉當(dāng)前一線大廠的真實案例。
4、能理解組織和人的因素對架構(gòu)及線上環(huán)境的影響,以及如何在現(xiàn)有的組織架構(gòu)下有效的讓價格設(shè)計發(fā)貨最大的作用;
培訓(xùn)對象
3-5年工作經(jīng)驗以上高級開發(fā)人員和架構(gòu)師;
課程大綱
一、高可用設(shè)計:架構(gòu)設(shè)計后如何一步步落地 1.1、架構(gòu)的智慧 |
架構(gòu)的價值 架構(gòu)的終極目標(biāo)是什么 架構(gòu)的質(zhì)量受哪些因素影響 如何縮短問題和解決方案的距離 如何做到整潔架構(gòu)的向內(nèi)設(shè)計 架構(gòu)設(shè)計時不要忘記業(yè)務(wù)-不要讓架構(gòu)綁架業(yè)務(wù) 架構(gòu)老化與重構(gòu) 到底哪些工作是架構(gòu)師的職責(zé) 研發(fā)團隊在企業(yè)組織中的價值是什么 |
1.2、宏觀:如何實踐微服務(wù) |
服務(wù)拆分的四大時機 服務(wù)拆分的六大規(guī)范 服務(wù)拆分的四大阻礙 不能忽視的越權(quán)訪問 如何利用測試金字塔模型 如何利用消費者驅(qū)動契約測試 如何利用數(shù)據(jù)庫優(yōu)化金字塔模型 如何做服務(wù)治理 |
1.3、微觀:代碼落地保障 |
設(shè)計模式和設(shè)計原則如何選 如何應(yīng)用SOLID原則 如何應(yīng)用KISS原則 不能只做結(jié)構(gòu)化編程 什么情下你沒有在執(zhí)行OO思想 依賴倒置不止于面向抽象 代碼分層的邏輯 如何做接口設(shè)計 如何做緩存設(shè)計 如何寫出一份優(yōu)雅的設(shè)計文檔 如何讓別人舒服的閱讀自己的代碼 如何讓自己舒服的閱讀別人的代碼 |
二、架構(gòu)腐化:高可用架構(gòu)又如何一步步變的不可用了 2.1、高可用的本質(zhì) |
主從結(jié)構(gòu)的邏輯 擴展立方體要指導(dǎo)我們做什么 如何做到變更速度和變更原因的分離 如何劃分服務(wù)之間的邊界 同步和異步如何選 一次RPC調(diào)用時間都去哪兒了 案例:一個可擴展的架構(gòu)演變 |
2.2、架構(gòu)的熵增 |
是什么讓架構(gòu)變的無序 如何執(zhí)行演進式架構(gòu) 如何落地六邊形架構(gòu) 如何做無狀態(tài)的架構(gòu) 你必須要知道的腦裂問題 空間與時間維度的解耦 如何最大化利用MQ集群性能 混沌工程實踐 |
2.3、線上常見問題解析 |
線上故障畫像 故障TOP場景 系統(tǒng)常用容錯方法 不可用案例: 一味的向上擴展 未分清變更速度和變更原因 軟件工程師的自我欺騙 進行向外依賴的設(shè)計 API業(yè)務(wù)組合放到了網(wǎng)關(guān)內(nèi)部 狀態(tài)阻礙了擴展 理想化的一步到位拆分 忽略了越權(quán)訪問 未遵循測試金字塔模型 敏捷型組織錯位 忽略了故障神經(jīng)線 人造肉雞:客戶端重試 局部故障:快速失敗失效 局部故障:未做線程池隔離 未遵循數(shù)據(jù)庫優(yōu)化金字塔模型 熱點KEY觸發(fā)單點限流 分布式流控失效 未把故障和問題區(qū)分開 未區(qū)分部署和上線 認為異步是萬能的 |
一、高可用設(shè)計:架構(gòu)設(shè)計后如何一步步落地 1.1、架構(gòu)的智慧 架構(gòu)的價值 架構(gòu)的終極目標(biāo)是什么 架構(gòu)的質(zhì)量受哪些因素影響 如何縮短問題和解決方案的距離 如何做到整潔架構(gòu)的向內(nèi)設(shè)計 架構(gòu)設(shè)計時不要忘記業(yè)務(wù)-不要讓架構(gòu)綁架業(yè)務(wù) 架構(gòu)老化與重構(gòu) 到底哪些工作是架構(gòu)師的職責(zé) 研發(fā)團隊在企業(yè)組織中的價值是什么 |
1.2、宏觀:如何實踐微服務(wù) 服務(wù)拆分的四大時機 服務(wù)拆分的六大規(guī)范 服務(wù)拆分的四大阻礙 不能忽視的越權(quán)訪問 如何利用測試金字塔模型 如何利用消費者驅(qū)動契約測試 如何利用數(shù)據(jù)庫優(yōu)化金字塔模型 如何做服務(wù)治理 |
1.3、微觀:代碼落地保障 設(shè)計模式和設(shè)計原則如何選 如何應(yīng)用SOLID原則 如何應(yīng)用KISS原則 不能只做結(jié)構(gòu)化編程 什么情下你沒有在執(zhí)行OO思想 依賴倒置不止于面向抽象 代碼分層的邏輯 如何做接口設(shè)計 如何做緩存設(shè)計 如何寫出一份優(yōu)雅的設(shè)計文檔 如何讓別人舒服的閱讀自己的代碼 如何讓自己舒服的閱讀別人的代碼 |
二、架構(gòu)腐化:高可用架構(gòu)又如何一步步變的不可用了 2.1、高可用的本質(zhì) 主從結(jié)構(gòu)的邏輯 擴展立方體要指導(dǎo)我們做什么 如何做到變更速度和變更原因的分離 如何劃分服務(wù)之間的邊界 同步和異步如何選 一次RPC調(diào)用時間都去哪兒了 案例:一個可擴展的架構(gòu)演變 |
2.2、架構(gòu)的熵增 是什么讓架構(gòu)變的無序 如何執(zhí)行演進式架構(gòu) 如何落地六邊形架構(gòu) 如何做無狀態(tài)的架構(gòu) 你必須要知道的腦裂問題 空間與時間維度的解耦 如何最大化利用MQ集群性能 混沌工程實踐 |
2.3、線上常見問題解析 線上故障畫像 故障TOP場景 系統(tǒng)常用容錯方法 不可用案例: 一味的向上擴展 未分清變更速度和變更原因 軟件工程師的自我欺騙 進行向外依賴的設(shè)計 API業(yè)務(wù)組合放到了網(wǎng)關(guān)內(nèi)部 狀態(tài)阻礙了擴展 理想化的一步到位拆分 忽略了越權(quán)訪問 未遵循測試金字塔模型 敏捷型組織錯位 忽略了故障神經(jīng)線 人造肉雞:客戶端重試 局部故障:快速失敗失效 局部故障:未做線程池隔離 未遵循數(shù)據(jù)庫優(yōu)化金字塔模型 熱點KEY觸發(fā)單點限流 分布式流控失效 未把故障和問題區(qū)分開 未區(qū)分部署和上線 認為異步是萬能的 |