O'Reilly 2017 SA Con- Day2
概述
談起O’Reilly,大部分朋友都不會陌生,就是那個經(jīng)常見到的帶著小動物的IT書籍的出版媒體。
O'Relly從15年開始舉辦Software Architecture Conference,聚焦軟件架構(gòu)的相關(guān)內(nèi)容,包括架構(gòu)原則、實踐、發(fā)展趨勢等。
Software Architecture Conference的副標(biāo)題---“Engineering the Future of Software Architecture”,非常好的Slogon,讀一次就記住了 :)
此次2017 O‘Reilly London SA Con一共四天,2天Session + 2天培訓(xùn),接下來,我就和大家分享一下參加O'Reilly SA Con的見聞。
KeyNote
第2天的KeyNotes有4個,主要包括
Jams Lewis的《Thinking about platform》
主要講了Platform在Modern System中演進的重要性,包括像Netflix,Etsy等在微服務(wù)演進過程中構(gòu)建的平臺,總體有點抽象。:)
《The death of Cannot Reproduce》
這個話題闡述了隨著云環(huán)境、分布式、多語言、庫依賴、多核等因素的影響,“Cannot reproduce”這個問題在開發(fā)團隊中帶來的成本越來越高。演講者給了一個數(shù)據(jù):
在Apache Foundation Issues Queue中,大概有12849個resolution是 Cannot Reproduce"
最后給出了些研究的成果和建議,包括在環(huán)境搭建、架構(gòu)、測試測試等過程中可以應(yīng)用的。
SIG(Software Inproving Group)的《Engineering future of happy developers》
這個話題描述了他們的一項研究成果--對導(dǎo)致程序員焦慮、不開心因素的調(diào)研(不得不承認(rèn),老外好注重人性^_^),提出了一些關(guān)鍵點幫助開發(fā)者能最大化發(fā)揮他們的潛能。在SA Con的現(xiàn)場,SIG也提供了他們的一款產(chǎn)品
BetterCodehub,幫助檢測代碼的質(zhì)量,復(fù)雜度并提出重構(gòu)建議,感興趣大家可以試試。
Github的public repo是免費使用的。
《Breaking the rule》
演講者Dan North是《The RSpec Book》和《97 Things Every Programmer Should Know》的作者之一,25年+的從業(yè)經(jīng)驗,exTWer。
他以高德拉特的《Goal》作為背景,提出了We are really really bad at adopting and benefiting new technology。原因是大部分人沒有識別limitation,或者對它認(rèn)識過于樂觀。:(
他提出了adopting new tech的4個主要步驟:
(1) What is power of X
(2) What limitation does X diminish
(3) Which X's rules enabled us to manage the limitation
(4) Which new rules will we need
然后依次例舉了一些技術(shù),如持續(xù)交付、微服務(wù)架構(gòu)等在這幾個主要步驟上對應(yīng)的限制和我們應(yīng)該如何制定適合自己場景的rule。最后,強調(diào)了隨著新技術(shù)的快速演進,我們應(yīng)該謹(jǐn)慎的對待新技術(shù)所帶來的limitation。
話題
今天話題的內(nèi)容比較多,分享幾個印象深刻的。
《What we learned moving 65,000 Microsofties to DevOps on the public cloud》
分享者來自微軟VSTS的負(fù)責(zé)人,講了微軟內(nèi)部如何將過去幾十年建立起來的一系列不同的內(nèi)部工具,演進成一個基于公有云的開發(fā)者平臺VSTS。并通過引入一系列實踐,實現(xiàn)Microservice&DevOps的轉(zhuǎn)型過程。內(nèi)容涉及的比較廣,包括敏捷/全功能團隊,DevOps,工程實踐,流水線,提了5個核心點,每個點的信息量都很大。
Customer Focused。除了講需求,也提到了對于團隊一些核心目標(biāo)的變化,關(guān)注局部到關(guān)注端到端,給了很多相關(guān)的指標(biāo)可以借鑒。
Production First。這部分主要關(guān)注的是團隊對產(chǎn)品,而非項目的態(tài)度,以及對SLA的保障。
Team Autonomy。提到了幾個級別的Autonomy,Organization/Roles/Teams/Cadence和Practices。
Engineering practice。這部分講了一些重要的工程實踐。PR的Review機制、集成測試轉(zhuǎn)變成更多單元的測試、構(gòu)建的依賴解耦,提高搭建E2E環(huán)境的完整性和效率。
Infrastructure as resource
。這部分主要講基礎(chǔ)設(shè)施。和Infrastructure As Code的做法類似,對于基礎(chǔ)設(shè)施的易操作性。
《Evolutionary Architecture》- Neal Ford(TW)
An evolutionary architecture supports incremental, guided change as a first principle across multiple dimensions.
演進式架構(gòu)并不是新概念,2016年Neal Ford在TW Insight的Microservices as an Evolutionary Architecture里就曾提到過。不過這次的分享,內(nèi)容更系統(tǒng)化,包括Fitness的維度,如何支持Constant change,以及Pipeline的重要性等。另外,他的這本書《Evolutionary Architecture》已經(jīng)出版了,感興趣的朋友可以關(guān)注一下。
這里有一個Neal Ford的Evolutionary Architecture Workshop Slides,大家可以下載參考。
《CQRS and event sourcing: A DevOps perspective》
兩位演講者講了CQRS和Event Sourcing的概念(雖然是作鋪墊,但基礎(chǔ)的東西講的有點忒啰嗦....)。
然后講了在他們的項目中應(yīng)用CQRS和Event Sourcing過程中的實踐,包括:
? Building resilient systems
? Approaches for logging and monitoring
? Scaling applications
? Deployment and infrastructure as code
? Security
其中Scaling部分講的還挺有意思,提到進行藍(lán)綠部署時對Event Bus處理的情況。思路不難,主要還是Bus本身無狀態(tài),所有的Event都存在Store里。
聽完后又和演講者溝通了下,在藍(lán)綠遷移的時候,Bus的遷移過程和一般的服務(wù)遷移過程并無太大差異,更多的注意幾點:
? (1)用LB控制A(Blue) -> B(Green)的遷移,保障遷移后,新的消息去了B
? (2)對已經(jīng)進入A(Blue)的消息及時進行處理,確保不丟。同時新進入的B也在處理消息。
? (3)等A(Blue)中的消息處理完畢,將A的環(huán)境釋放。
Architecture Katas
一天的議程結(jié)束后,晚上有個bonus的環(huán)節(jié)---Architect Kata。
有點像Code kata,但不是大家聚在一起寫code,而是做Architecture Design。
"So how are we supposed to get great architects, if they only get the chance to architect fewer than a half-dozen times in their career?" --Ted Neward
“如果架構(gòu)師在職業(yè)生涯中的設(shè)計有限,如何成為偉大的架構(gòu)師呢?”——Ted Neward
Neal Ford介紹了一下游戲規(guī)則,然后大家開始自由組隊,各個團隊挑選題目。
過程中分成了2個迭代,每輪迭代內(nèi)團隊自主討論,用白紙畫出架構(gòu)圖。
每個迭代會有需求的變化和不同的技術(shù)挑戰(zhàn)。
迭代結(jié)束后,各個團隊present結(jié)果,其他團隊提問。
評委點評。這次的評委是James Lewis和其他幾個TWer的講師,過程中各種拆臺 :(
這種方式蠻好的,很多產(chǎn)品架構(gòu)穩(wěn)定了,架構(gòu)師的練習(xí)機會相應(yīng)減少。在快速變化的業(yè)務(wù)場景中,架構(gòu)師更需要不斷的思考、練習(xí),有助于做好技術(shù)方案的平衡。后續(xù)可以和小伙伴在公司中練習(xí)起來。
最后,給大家附個參考題目列表,方便各位也回去在團隊中開展類似的Kata。
總結(jié)
這兩天的內(nèi)容主要是記錄一些Session,后續(xù)再匯總一篇,講講從這次會議中看到的一些趨勢和心得。