




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、為什么構(gòu)建架構(gòu)工作臺?在ArchGuard中,我們想治理的是架構(gòu)的三種形態(tài):設(shè)計態(tài)、 開發(fā)態(tài)和運行態(tài)。對應(yīng)于:設(shè)計新的企業(yè)(應(yīng)用)架構(gòu)。諸如于描述和設(shè)計系統(tǒng)的當(dāng)前架構(gòu)。理解和管控系統(tǒng)的現(xiàn)狀。諸如于通過可視化的手段展示系統(tǒng)的現(xiàn) 狀、以規(guī)那么來管理系統(tǒng)。觀測系統(tǒng) 二 架構(gòu)的運行。同樣,對于諸多中大型組織師的架構(gòu)相關(guān)的部門來說,他們同樣 存在上述的這些問題。并且,我相信他們也面臨著同我們構(gòu)建 ArchGuard時一,樣的困境:架構(gòu)是多維的。包含技術(shù)、數(shù)據(jù)、平安、運維與系統(tǒng)等缺乏統(tǒng)一的架構(gòu)語言。用于溝通的人類語言,諸如于什么是組 件?系統(tǒng)的架構(gòu)千奇百怪。架構(gòu)風(fēng)格或模式差異,如微服務(wù)架構(gòu)、插 件化架構(gòu)等
2、。缺乏業(yè)務(wù)上下文。作為一個外部架構(gòu)師,幫助治理時缺乏一些上 下文。細(xì)節(jié)是魔鬼。架構(gòu)的世界豐富多彩,沒有方法一一展現(xiàn)出來,比 如一個小小的接口,可能會反轉(zhuǎn)我們對于理解的假設(shè)。我們(ArchGuard團(tuán)隊)目前的架構(gòu)能力有限(這個不會寫出來 的)資深架構(gòu)師太少。所以,在實現(xiàn)這樣一個標(biāo)準(zhǔn)化的架構(gòu)模式系統(tǒng)之前,不如嘗試構(gòu) 建一個更靈活的形式:架構(gòu)工作臺。它可以幫助我們更好地探索系統(tǒng), 也更符合我們的初期體驗。什么是架構(gòu)工作臺對于工作臺這一概念來說,作為一個活躍的DSL創(chuàng)造者,我比 較熟悉的是Martin Fowler在領(lǐng)域特定語言中對于語言工作臺 的定義:語言工作臺是一個環(huán)境,其設(shè)計初衷就是幫助人們構(gòu)
3、建新的DSL, 以及有效地運用這些DSL所需的高質(zhì)量工具。也因此在定義上,我們參考了老馬的定義,并借鑒了現(xiàn)代化的工 作臺理念,主要有:RStud io的代碼文檔化、Jupyter的交互性分析。 所以,我們的定義是:架構(gòu)工作臺是一個環(huán)境,其設(shè)計初衷用于幫助人們設(shè)計架構(gòu)、演 進(jìn)架構(gòu)、觀測架構(gòu),并有效地運用架構(gòu)所需要的高質(zhì)量工具,如交互 式的架構(gòu)開發(fā)和分析。代碼文檔化,用于幫助我們更好地管理架構(gòu)代碼,將它融入軟件 開發(fā)生命周期里,如架構(gòu)文檔、用戶故事、持續(xù)集成等。而交互性分 析,那么是用于幫助我們有效減少定制的代碼,進(jìn)而演變?yōu)樘峁┑氖?API接口,與其定制化的代碼。對于架構(gòu)工作臺來說,它應(yīng)用包含了以
4、下一些核心功能與特性:設(shè)計架構(gòu)、演進(jìn)架構(gòu)與觀測架構(gòu)。構(gòu)建架構(gòu)的數(shù)字事生說明性編程與顯式設(shè)計在這些特性中,我們認(rèn)為構(gòu)建架構(gòu)的數(shù)字?jǐn)伾沁@個工作臺最應(yīng) 該被重視的局部,而基礎(chǔ)塊那么是:設(shè)計架構(gòu)、演進(jìn)架構(gòu)與觀測架構(gòu)?;A(chǔ):設(shè)計架構(gòu)、演進(jìn)架構(gòu)與觀測架構(gòu)在治理架構(gòu)時,我們通常會關(guān)注于如何設(shè)計,如何演進(jìn),以及觀 測架構(gòu)在運行時的狀態(tài)。設(shè)計架構(gòu)。這樣的功能其并不能理解,難點是,如何提供高效的 設(shè)計機(jī)制?采用UI拖拉拽的方式,又或者是DSL,都有各種的博弈。 總體來說使用代碼會更加友好。而為了直觀的展示架構(gòu)的設(shè)計,我們 會通過架構(gòu)圖來表示,這也就是系統(tǒng)的核心。演進(jìn)架構(gòu)。其核心是構(gòu)建架構(gòu)治理模型和設(shè)計架構(gòu)的適應(yīng)
5、度函數(shù), 以引導(dǎo)系統(tǒng)進(jìn)行有序的變更。從實現(xiàn)的層面來說,就是從對實現(xiàn)出來 的軟件架構(gòu)(即代碼等)進(jìn)行分析,設(shè)計度量指標(biāo),并提供高質(zhì)量的 工具,來引導(dǎo)架構(gòu)回歸到合理的狀態(tài)。觀測架構(gòu)。即觀察架構(gòu)的應(yīng)用的運行狀態(tài),主要依靠于各類的 APM (app I icat i on performance management, 應(yīng) 用性能監(jiān)測)工具。 在云原生時代,相關(guān)的工具也非常的流行,如Skywa Iking等。一個基礎(chǔ)的架構(gòu)工作臺,應(yīng)該考慮上述的三個要素。進(jìn)階:構(gòu)建架構(gòu)的數(shù)字事生理想的架構(gòu)工作臺,它應(yīng)該提供一個可交互的架構(gòu)的映射版本。 它意味著:它是對系統(tǒng)或?qū)ο笤谄湔麄€生命周期中的虛擬表示,我們 可以根
6、據(jù)實時數(shù)據(jù)進(jìn)行更新,并使用模擬、機(jī)器學(xué)習(xí)和推理來幫助決策。從概念上來說,它提供了一個非常美好的未來,難點就在于如何實現(xiàn)這樣的系統(tǒng)?我們正在設(shè)計ArchGuard的數(shù)字季生版本,那么圍繞于這三種形 態(tài)的架構(gòu)形式(從實現(xiàn)的層面考慮的):設(shè)計態(tài)。關(guān)注于邊界、概念與交互。開發(fā)態(tài)。關(guān)注于層級、依賴與模塊。運行態(tài)。關(guān)注于性能、鏈路層級與資源使用。這個版本相當(dāng)于是設(shè)計態(tài),在實現(xiàn)的時候,還會受到開發(fā)能力和 數(shù)據(jù)上的制約。未來,我們是不是也應(yīng)該代碼及其架構(gòu)事生的雙向綁 定?核心:說明性編程與顯性設(shè)計我們所熟悉的各類架構(gòu)相關(guān)的規(guī)范,它存在著諸多的問題,諸如 于:規(guī)范不直觀、規(guī)范沒有自動化等。為了有效的演進(jìn)架構(gòu),我
7、們需 要有效地結(jié)合規(guī)范、代碼、設(shè)計,也就是說明性編程與顯性設(shè)計,它 們都是來自于PL (編程語言)/ DSL (領(lǐng)域特定語言)中的概念。說明性編程(i I I ustrat i ve programmi ng)是用于加強(qiáng)執(zhí)行結(jié)果 的解釋性,如在架構(gòu)治理的場景下,通過生成架構(gòu)圖來理解DSL編 寫的結(jié)果。另外一類覺的方式,有諸如于Excel中的表格和圖表等。 詳細(xì)可以查看文末Mart i n FowI er的相關(guān)文章。顯式設(shè)計。顯式是通過明確編寫要完成的指示來完成所需更改的 手動方法。顯示設(shè)計那么是指引我們?nèi)绾螛?gòu)建好系統(tǒng)的描述語言,諸如 于ADL (架構(gòu)描述語言)的DSLo除了,使用貼進(jìn)架構(gòu)描述的
8、語言, 還有用于支撐DSL的工具支撐,如編輯器智能感知。這兩個特性是圍繞于架構(gòu)即代碼這一理念所改善的,諸如于 PIantUML Graphviz 這一類圖表即代碼(Diagrams as code)也具 備了這樣的特質(zhì)。其它特質(zhì)當(dāng)然,為了讓這個系統(tǒng)更好用,我們還需要其它的一系歹“特性:架構(gòu)演進(jìn)的模擬驗證。在構(gòu)建了架構(gòu)的數(shù)字季生之后,我們就可 以易于擴(kuò)展的功能。即采用微內(nèi)核架構(gòu),即插件化、微前端化等。依舊還有諸多東西可以探索,等待我們構(gòu)建完第一個版本后,再 展開討論。我們應(yīng)該如何去設(shè)計與實現(xiàn)的?我們現(xiàn)在ArchGuard中實踐一個這樣的系統(tǒng),它相當(dāng)?shù)亓钊思?動。作為一個早期的版本,它勉強(qiáng)可以工作
9、,如下是我們構(gòu)建系統(tǒng)的 一些思路。.大數(shù)據(jù)的工作臺作為靈感由于,系統(tǒng)是一個類似于數(shù)據(jù)分析的系統(tǒng),所以我們的諸多流感 來源于大數(shù)據(jù)領(lǐng)域。在工作臺上,起初,我們的想法是構(gòu)建一個采用 RStudio似的可編譯報告,并提供類似于Jupyter的交互體驗??捎捎贘upyter的交互體驗太差,下載的文件又沒有可讀性,不能方便地編輯+運行。所以,我們采用了 Markdown作為數(shù)據(jù)格 式,方便于開發(fā)人員編寫文檔,也可以在任意的IDE中翻開和編輯。在UI上,那么是采用ProseMi rror主編輯器,即Markdown的編輯 器,采用Monaco Editor作為副編輯器,即代碼的編輯器。.構(gòu)建基于REPL的
10、抽象考慮到了 IDE支持,我們采用了 Kotl in來構(gòu)建內(nèi)部DSL,這 樣就無需外部DSL需要構(gòu)建編輯器支持。接著,就采用了 Kotl in Scripting Comp i I er 作為底層的 REPL ( read - eva I - print I oop, 也稱為交互式頂層構(gòu)件),簡單來說,就是Kotl in語言的命令行模 式。從形態(tài)上來說,類似于MySQL Workbench的形式,又或者說是 Python 的 CLI 模式。隨后,便是抽象系統(tǒng)(ArchGuard)、設(shè)計態(tài)的架構(gòu)、架構(gòu)適應(yīng)度 函數(shù)的DSLo.請求和響應(yīng)程序的運行在有了編譯器后端的支持及Kot I i n DSL的IDE之
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 精益生產(chǎn)方式與企業(yè)精益化管理探討
- 殯葬管理辦法實施效果
- 金融碩士課程體系核心知識圖譜構(gòu)建
- 高效農(nóng)田建設(shè)與管理策略研究
- 小學(xué)教師教學(xué)研究成果展示
- 機(jī)場勘測項目管理辦法
- 安全生產(chǎn)知培訓(xùn)
- 什么是對本單位安全生產(chǎn)工作提出建議的權(quán)利
- 教育體系:慣性導(dǎo)航系統(tǒng)課程大綱與教學(xué)設(shè)計
- 食品微生物學(xué)課程指南
- 脊髓腫瘤的護(hù)理查房
- 2025年醫(yī)師三基考試題及答案
- 中遠(yuǎn)海運招聘筆試題庫2025
- 溫州市2024-2025學(xué)年高一下學(xué)期6月期末-英語試卷及答案
- 2025至2030中國核應(yīng)急機(jī)器人行業(yè)市場現(xiàn)狀分析及競爭格局與投資發(fā)展報告
- 導(dǎo)管室護(hù)理管理制度
- 降低跌倒事件的發(fā)生率QC圈
- 深靜脈血栓的試題及答案
- 2025年安徽省郵政行業(yè)職業(yè)技能大賽(快遞員賽項)備賽試題庫(含答案)
- 汽車產(chǎn)業(yè)鏈協(xié)同發(fā)展-洞察闡釋
- 滴灌帶造顆粒合同協(xié)議
評論
0/150
提交評論