事件管理與康威定律


補充在 DevOpsDays 演講中,為啥在會特別強調 SRE 是面對落地的架構,而不是設計架構?這段內容本來是放在 Slide 要講的,後來拿掉了。我用 樂團總譜練團溝通 來比喻 架構圖呈現團隊溝通,其實要表達的是 康威定律

系統架構與組織有著一定的關係,同時這關係會帶來團隊溝通成本問題。


康威定律

著名的 康威定律 (Conway's Law) 描述這樣的現象:

The system being produced will tend to have a structure that mirrors the structure of the group that is producing it, whether or not this was intended.

簡單的說, 組織架構系統架構 存在著相互影響的關係,也就是 溝通路徑

這篇文章延續 DevOpsDays Taipei 2018 我分享的內容,更加強調組織與架構的關係,產品本身是一種抽象功能的集合,但是組織與架構都是可以具象的概念。抽象與具象的關係,虛與實之間的整合,他們的路徑,就是溝通的路徑,這條路徑的距離,會企業成敗的關鍵因子,也就是 溝通成本

其實,同樣的問題,在我以前玩樂團時,也發生過一模一樣的現象,當時我用 關於樂團總譜 來描述這樣的現象。底下是說明。

總譜、落地的架構

恩,基本的想法是這樣:很多人換一個工作,進到一家新公司之後,『通常(頻率副詞,80%)』公司都已經有一個既有的系統在線上跑,這系統為公司帶來獲利與營收,系統一定是已經落地(不然你薪水哪來?),通常立即性的需求不是『設計』,而是 了解現況,然後既有架構之上,進行穩定且持續的改善 。

這個情境,基本上適合大多數的人,因為有能力設計架構的架構師不多,從頭開始設計的機會更少。通常面對已經上線的人(SRE or Team)是機率更高的,所以理解 已經落地的架構 這件事是必然的。因為:

很多時候是連現況的了解,都很不清楚,是要怎麼救火?

換一個領域來比喻:音樂與總譜 (也是我演講中本來要提的)

大部分的樂手,都在練別人寫好的歌,練歌要有樂譜,樂譜可以用買的,買不到要自己想辦法 採譜 (transcribe)。照譜練是基本的,不管是啥樂手。一般的表演者 (樂手 + 歌手) 都是照著已經成形的歌曲彈奏、演奏、演唱,換言之,樂譜 (詞 + 曲 + 編曲) 就是表演者已經確立的資訊。總之:

一定要有譜(一定要有架構圖)

對樂團的樂手來講,不管是鍵盤、吉他、Bass、鼓手、Vocal、和聲、弦樂、銅管 …. 樂團總譜 就是大家溝通的介面。而這裡的 總譜 對應到系統就是 架構圖。 總譜是已知、落地的資訊,所有人都以這為主,系統架構是已經在線上跑、on Production,大家在溝通商業需求時,腦袋裡要有這張圖。

總譜 的舉例,本來是在演講的內容之一,後來怕大家聽不懂,先拿掉了,基本上是從 2 延伸出來的想法。因為看過太多雞同鴨講的討論,這現象在練團過程中,有著一模一樣的現象,常常是在浪費時間。

即興、逆向工程

有能力的樂手,會依照歌曲架構,做即興,英文術語叫 JAM、Improvisation。在音樂中,如果樂團要即興演奏,通常要有基本的架構,在音樂中稱為 曲式 (Form,這是一門課),常用的曲式是藍調 12 小節、8 小節,爵士樂中的 32 小節形式。曲式除了長度,也包含和弦進行結構。如果即興出來的句子對應到商業需求,那麼想要敏捷地面對需求,要有穩固的架構與溝通介面。

一般做系統需要有類似音樂即興的概念?恩,說實話:會,因為遇到臨時的任務,是完全搞不清楚狀況的,大部分的資訊是不清楚的。在這樣的前提之下,不管是協助,還是救火,除了基本的技能之外,逆向工程、抽象化思考的就很重要。透過瞭解狀況,然後推演可能的問題,可能的架構,從現象中找到蛛絲馬跡,解決問題。

音樂上,如果沒聽過的歌,我狀況好的時候,可以靠經驗、或者推演,預測歌曲接下來的和弦進行、甚至是歌曲旋律的走向。即使是第一次聽的歌,也可以即時跟著歌曲彈。當然,這是因為我有一定曲式的資料庫在腦袋裡,以及對於樂器的掌握度。

對於系統,有時候會來一個完全沒看過,也沒經手過的,要做判斷、給建議。這時候除了對於技術的掌握,逆向工程與想像力的推演就很重要了。(當然還有唬爛能力 XD)

創作、設計

樂手的學習是透過樂譜,從模仿中學習,然後寫歌、編曲、創作。工程師也是,不管是 SRE、QA、Developer ,了解已經落地的架構,都是基本功。了解大量案例後的設計 才更具意義。除非是天生神力。。。 (這種人不多,大多也不會來上班)

系統架構的設計仰賴上線後實務的經驗,對商業需求的了解,對問題的判斷。新設計可能是沒包袱的,但實務更多是在既有的架構上作設計,所以了解既有的是很重要的。#看見架構的全貌 對我來講只是基本的而已。

了解很多已經落地架構之後,回到設計面,更有機會避免這些過往的經驗,設計出更好的架構。當然,要設計架構,基礎的技術能力還是要掌握的。對應到音樂,要寫歌、編曲,至少掌握一種樂器演奏技術、了解其他樂器的特性,這是只是基本的,但前提一定是聽過、彈過、練過很多首歌。

結論

  • 練歌:要有總譜、樂譜;要改善探索問題,要了解架構
  • 沒有譜,第一次聽的歌,沒有架構圖面對系統:要推演、逆向思考,基本技能(樂器駕馭能力、基礎系統能力)
  • 創作與設計:創作從模仿開始,模仿的前提要了解。

恩,整理演講中,因為時間關係,沒有講清楚的東西。


延伸閱讀

站內延伸

參考資料


Comments