靜兒來面試新美大這個部門的時候,HR跟我說我們是最核心的部門,沒有之一。我以為這是句誇張的招人用的玩笑。結果來了發現,額,這句話是很公正客觀的。現在上上下下組成了一支牛人團隊,請來了其他部門很多資深高手進行封閉開發,確保我們系統的穩定性。
選擇一份工作,必然要考慮的是:我們是做基礎設施的,還是做平台的,還是做核心鏈路的。業務方面講究領域驅動,各個領域目標也不同。
基礎設施最重要的指標是穩定性、性能、擴展性。平台講究多業務,通用性,人效。所謂人效就是我這個平台有些自動化的東西不能滿足需求,需要靠手工來完成,這樣開發人員的人效就低。如果一個平台需要輸入的東西很多,而且還需要多步驟審核,審核不夠自動,那么輸入人效低,運營的人效也低。如果平台的用戶是外部用戶,他們輸入繁瑣,這個用漏斗分析法來分析,得出來的流失率會高。
checklist:
核心鏈路最重要的是穩定性。如果拿到一手爛代碼,到了非重構不可的程度。那么重構之前要弄明白幾個問題:原系統TOP5的主要問題是哪些?我重構了就能解決這些問題嗎?重構之后怎樣保證很長一段時間內不需要再次大規模重構?
對於任何一個系統,都要設計一個checklist。比如比較重要的:
大分類 | 小分類 | check項目 |
基礎組件依賴 | 緩存 | 掛了是否可用、跟其他系統共用? |
MYSQL | 跟其他系統共用、慢查詢、大事務、連接池監控狀況、大表、讀寫分離、主從延時敏感? | |
MQ | 掛了是否可用、依賴消息的發送順序? | |
日志 | 建議應用日志不超過磁盤的30%,使用日志組件的性能和穩定性? | |
其他組件,如databus | 是否有監控?是否單點?自動fail over? | |
依賴內外部系統 | 下游系統1 | timeout配置?重試次數?滿足冪等性?TP99?掛掉后是否穩定? |
下游系統2 | timeout配置?重試次數?滿足冪等性?TP99?掛掉后是否穩定? | |
被依賴內外部系統 | 上游系統1 | 是否限流?timeout配置?重試次數?滿足冪等性?TP99?掛掉后是否穩定? |
上游系統2 | 是否限流? timeout配置?重試次數?滿足冪等性?TP99?掛掉后是否穩定? | |
核心接口性能 | 核心接口1 | QPS、TP99、可用性? |
核心接口2 | QPS、TP99、可用性? | |
JVM | 基本配置 | 堆棧配置、線程使用的監控報警、fullgc異常、無界隊列、批量更新cache? |
容量預估 | 高峰期CPU load、高峰期內存、高峰期磁盤IO、高峰期網卡、是否有兩到三倍冗余? |
組件和版本:
維護系統穩定性要注意選擇合適組件和版本。
比如Apache Tomcat被紕漏有高危漏洞。當在應用配置文件web.xml中顯式的配置DefaultServlet的readonly屬性值為false時,惡意用戶能夠通過PUT請求方法上傳文件,如果上傳的是可執行文件,將會導致遠程命令被執行。
jackson-databind2.9版本前有反序列化漏洞,它可能語序未經身份驗證的用戶通過將而已制作的輸入發送到ObjectMapper的readValue方法來執行代碼。如果服務器反序列化了不安全的數據,能造成服務器執行惡意代碼。建議升級到2.9.2以上。
比如Apache Struts發布S2-054和S2-055安全公告,兩個漏洞皆是因為調用了有問題的組件而產生的漏洞。
S2-054漏洞由於Apache Struts REST插件使用了過時的JSON-lib庫,這個庫很容易受到攻擊,攻擊者可以構造特制的JSON惡意請求造成DOS攻擊。
由於Apache Struts調用了存在反序列化漏洞的Jackson JSON庫,導致了反序列化漏洞。
外部依賴:
外部依賴,比如我們的下游系統、或者緩存,MQ等等。都需要在系統里處理好它們出問題的情況。測試方法是:將這些依賴的端口禁用,流量打過來后觀察系統。系統線程數有沒有飆升,超時是否合理,有沒有異步化,有沒有熔斷?最重要的是:事務里不允許有外部依賴。
跑題時間:
幸福是件很簡單的事情:幸福是可以輕快的又跑又跳,可以邊走路邊跳起來夠到路邊的樹葉;幸福是無論小鮮肉受了傷還是熟睡中,只要我擁抱他,他就會緊緊的摟住我。幸福是下班很晚,回家發現男神還在客廳等我。
周四男神發消息祝我生日快樂,說給我准備了棒棒糖。我抬頭對周圍的同事說:“爺爺的,我的生日是昨天。”同事說:“能想起來就不錯,別管哪天想起來。”回家才發現棒棒糖是小鮮肉在幼兒園得到的禮物,拿回來送給媽媽的。我笑着說男神真無恥。
二十幾歲的時候,安逸到過段時間上班會換一條遠的路線,看到不同的風景會欣喜。年輕是用來揮霍的,願意去接受無法預估和掌控的無限可能。現在每走一步要做好規划,沿着設定的道路來走。就像二十幾歲的時候想穿什么衣服都可以,而再大一點就需要講究衣品。什么階段做什么事情。
做程序媛其實本身就是是很幸福的。記得大學的時候有個男孩表白,靜兒沒有同意。后來聽別人說有他們宿舍那幾個男孩子都很喜歡靜兒。本來也沒放在心上,后來畢業聚會的時候,其中一個男孩喝醉了拉着靜兒不放。靜兒才開始想這件奇怪的事情,因為靜兒和他們很少接觸的。后來想明白了:他們喜歡的不是靜兒本人,是那個男孩子口中的靜兒。不論在什么情況下,都把別人說的非常好,這不是靜兒有多好,而只能說明那個男孩子的人品非常好。
所以靜兒最大的幸福是周圍都是這樣一群單純善良的程序員。可能當初和誰在一起,結果都會不錯。只是愛是一種天時地利的迷信。一起經歷過的回憶和青春,別人是代替不了的。我問男神我在他心中長得到底是什么樣子。男神只是說:一直就是當初第一次見到我的樣子。終於明白為什么一些人可以接受一起變老,而不能接受第一次見面對方就不再年輕。對於我和男神,時間永遠定格在了20歲我們的初見。選對人最重要的兩方面而已:健康和人品。身懷感恩之心,一起創造歲月的童話。