一篇又長又乏味的年終總結和展望

Wi1dcard發表於2020-01-01

轉眼間到了 2019 年末,還記得去年也寫過一篇類似的 部落格;計劃今年的「年終總結」蠻久了,只是覺得時間還早便一直沒有動手,直到今天才恍然 —— 已經是 2019 年最後一天了。

2019 年的目標 —— 半達成

若是概括去年定下的目標:

  • 技術方面:繼續深入後端領域 —— 達成。
  • 額外技能:提升英語水平 —— 半達成,雖然有所提高(至少跟老外發郵件、聊 Slack 不怯場),但還是沒有達到「質的飛躍」。
  • 生活方面:***,以及鍛鍊廚藝 —— 達成!
  • 其它:身體健康 —— 半達成,腰疼腿麻更嚴重了...

講真,作為一個程式設計師,我強烈建議在程式碼之外培養起其它的愛好,甚至是技能。當然我並不反對在職業領域深究(相反,下文會提到哪個方面「浪費」了我一整年的技術向業餘精力?),只不過今年對於程式碼以外的世界有了許多新的認識,它們真的會給我帶來 不一樣的 幸福感和成就感,這是鑽研技術所體驗不到的。

2019 年我幹了啥

我用一些指令碼把今年所有的 Git Commits 全部匯出成 CSV,然後再使用 Office 365 Excel 分析,發現了一些有趣的結果。

年度報告(僅作娛樂)

  • 2019 年我一共提交了 1991 次,其中公司倉庫 1024 次,個人(包括私有和開源)倉庫 967 次。
  • 在公司倉庫的提交中,有 851 次是在工作時間,約佔 83%;相反,個人倉庫有 798 次提交是在下班後或休息日,約佔 83%,完美的配比。
  • 讓我沒想到的是,一天 24 小時,各個小時我都曾有過提交(僅個人倉庫):
    • 6 月 24 號我似乎睡得很早,最後一次提交在 21:17,接著 25 號的第一次提交出現在 5:23
    • 出現在 凌晨 4 點 的只有兩次提交,來源於 2 月 13 號嘗試 Rust 寫的一個 Demo 專案,然而後來還是暫停了 Rust 學習計劃。
    • 出現在 凌晨 3 點 的也只有兩次提交,來源於私人備份倉庫,看起來似乎我在 6 月 26 號半夜備份了一下電腦。
    • 排除以上結果,我熬夜肝到最晚的一次是 5 月 18 日 2:44 改進 kexue-gateway
    • 在 1 ~ 2 點我曾提交過 42 次;科學上網相關 24 次,部落格 10 次,Kubernetes 相關 7 次。
    • 晚上效率最高的時間是 21 ~ 22 點,因為 18 點鐘總提交 27 次,19 點 60 次,20 點 99 次,21 點 138 次,10 點 148 次,11 點 70 次,12 點只剩 52 次了。

工作時間線

  • 1、2 月份我還在與 GitLab CI、Ansible、Cloud-init 奮戰,主要精力集中在部署 Prometheus、Grafana 等監控、預警專案上。
  • 3 月開始深入學習 Terraform。
  • 4 月又折騰監控,順便深入研究了 Laravel 佇列並應用到線上。
  • 5 月使用 Golang 開發定時任務失敗告警,同時將原本人工維護的 Cronitor 配置遷移到 Terraform,多虧了我司同事開發的 terraform-provider-cronitor
  • 轉折點:5 月底終於開始真正接觸 Kubernetes!
  • 6 月完整地梳理了公司網路拓撲,部署了新的 UniFi 全家桶和一臺巨沉的機櫃,並搭建了一套備用的閘道器。
  • 6 月底我們又把黑盒探針監控 StatusCake 配置遷移到了 Terraform。
  • 7 月大批量遷移 Kubernetes,依稀記得那時候狂刪 Cloud-init 機器配置的酸爽。
  • 7 月下旬到 8 月上旬,接近一整月的時間我都停留在「被 PHPStan 坑(其實是被遺傳程式碼)」->「從坑裡爬出來」->「再踩新坑」的迴圈中;給幾十個私有包加 PHPStan 還要修復報錯,真是體力活。
  • 8 月剩餘的時間直到 10 月底,可謂是小宇宙爆發,利用 Helm 和 Helmfile 部署了不少應用到 Kubernetes,終於稱得上入門了;還順便調研了 Helm Secrets 配合 Sops 的 Git 倉庫內金鑰管理方案,最終實施上線並且一直用到現在。
  • 轉折點:10 月底開始接手 IT 相關工作,不僅需要維護公司員工許可權(例如 Azure AD、Office 365、Atlassian 等),還包括處理來自美國辦公室的 IT Tickets 以及 Onboarding Request。
  • 11 月重新梳理了年久失修的公司 VPN 接入點,其它大部分時間都用在了研究 Salesforce、使用 TypeScript 開發自動化工具,將 DiscoveryData 的 Sales leads 匯入到 Salesforce,以供美國 Sales Team 使用。
  • 12 月幾乎一直在處理各種各樣的 IT Tickets,美國那邊的招人速度實在太快了。另外,使用 Golang 開發了 PHP-CS-Fixer 規則自動更新機器人,保證數十個擴充套件包的程式碼風格一致;以及徹底廢棄了不穩定的 StatusCake,轉投 Pingdom。

可以看出,整整一年下來接觸的跨度非常廣,從年初的 Ansible、Terraform 到後來 Kubernetes,再到年末的 IT、Office 365 等,今年實在是學到太多之前沒有機會嘗試,甚至是完全沒有聽說過的知識。雖然其中也有疲倦和勞累,但特別感謝 RightCapital,在我司工作真的非常幸福。

仔細想想,我所在的 DevOps Team 更像是基礎架構部 —— 平時不僅涉及到前後端、應用部署、網路部署、運維保障、許可權管理,還需要跨時區跟 Support Team、Sales Team 溝通,任務艱鉅呀?。

個人成長時間線

相比之下,通過個人倉庫分析出的時間線就簡單多了,同一段時間內我基本都會圍繞在同一主題深挖。

  • 1、2 月一直在整理和編寫部落格,包括優化 CI、調整頁面佈局等。
  • 2 月底開始「Laravel 部署課程」系列,可惜不久後便放棄。
  • 放棄的原因之一就是 浪費掉我今年幾乎所有業餘時間的大坑 —— 科學上網。由於市面上的路由器效能都很差(相信沒有廠家生產路由器的時候考慮到這類用途),而那些玩軟路由的方案几乎都是靠刷第三方 OpenWrt 等韌體,配合第三方外掛實現,且不說我曾經玩過的改版梅林穩定性有多差,單憑各種外掛良莠不齊的程式碼質量我就受不了了。另外,遇到問題不方便除錯和修復也是我放棄的主要原因。
  • 一不做二不休,4 月 8 號,Kexue Gateway 的前身誕生了,就這樣開啟了漫漫長征路。記得那時候還在用 Nano Pi、樹莓派之類的 ARM 產品,效能和相容性慘不忍睹。
  • 5 月 8 號,我決定編排一套適用於任何路由器(在區域網內加入一個不帶 DHCP 功能的額外閘道器),且儘可能規範、原生、可靠的開源解決方案,也就是現在的 Kexue Gateway 專案。此後直到 7 月底,我大部分的時間都鋪在了這個專案上,不斷地完善和改進。
  • 6 月 11 號,沒錯,我對各路機場也忍無可忍了。因為六月初國內對於這類服務的管制太嚴格,導致穩定性大不如從前;另外整個圈子是非太多,除了經常有機場跑路之外,討論和評測的戾氣也都很重。實在不想淌這渾水,於是我買了第一臺伺服器,並開了一個名叫 Kexue Servers 的私有倉庫,用來編排自己的服務。當然,我不願意成為自己討厭的人,所以一律不銷售也不分享。
  • 8 月份,和工作時間線一致,對 Kubernetes 和 Terraform 的熱愛爆發了。我用 Google Cloud Platform 剩餘的贈金開了 GKE 叢集,順便購買了幾個額外的域名,利用 Terraform 管理解析記錄;凡是能遷移的服務,統統、一律搬上 Kubernetes,包括你現在看到的 部落格(雖然它現在已經被我臨時遷移回虛擬機器)、內網穿透 inlets、Webhook 除錯工具 Webhook.site、檔案管理器 KodExplorer 等等;管它有沒有用,先部署再說。
  • 年底之前一直在研究代理協議,沒有接觸過 VPN 相關的技術。想著能夠比四層更加深入,11 月 10 號,我開始嘗試能夠承載 IP 協議、甚至二層協議的 VPN。面對 IPSec、WireGuard,那就不得不瞭解 Linux 路由機制,直到現在,我還一直在學習 Routing Table,BIRD 等相關知識。
  • 12 月底,也就是前幾天,我又把部落格重新整理了一下;簡化掉不少無用的動畫和樣式,讓讀者和我的專注點更貼近內容。很巧的是,去年的這個時候我也在優化部落格。

其實我是個很懶的人,十分慶幸當時忍受不了的時候,選擇了自己動手做。我沒有 CCIE、JNCIE 之類的證照,完全是野路子出身,但是經過不斷的學習和嘗試,最終掌握了不少「正規」的網路知識。希望未來自己能夠保持這樣對未知領域發起挑戰的勇氣吧。

2019 總結

結合工作和個人成長時間線,我基本得出今年的時間分配佔比:

科學上網 4.5 : Kubernetes 2.5 : IT/英語 1.5 : Terraform/Prometheus 1 : PHP 0.5

稍微出乎我的預料,科學上網所佔的比例太高了,年初的預期應該是:

科學上網 2 : Kubernetes 4 : 英語 2 : Terraform/Prometheus 1.5 : PHP 0.5

2020 展望

根據我自己的職業規劃以及實際情況,接下來一年的目標與現有方向類似:

  • 保證身體健康。
  • 快速將科學上網相關內容收尾,進入維護階段,不再佔用大量時間繼續開發(其實 11 月就有這個想法,希望年底能夠將這方面完全結束,只可惜距離我理想的水準還差點火候)。
  • 深入學習 Kubernetes,包括目前暫時不熟悉的:
    • Taint、Tolerations、Node Affinity、Autoscaler、Resource Request 等特性,
    • HorizontalPodAutoscaler、PodSecurityPolicy、NetworkPolicy、LimitRange 等資源,
    • 以及爭取能對 CRI/CSI/CNI、Scheduler 等 Kubernetes 內部原理有一定了解。
  • 繼續鍛鍊英語,包括:
    • 儘可能多參與郵件和 Slack 討論,
    • 堅持用英文編寫技術向博文,
    • 以及爭取練習幾次 italki。
  • 深入學習 Prometheus,掌握:
    • PromQL 進階語法,
    • 通過 Prometheus Operator 和 Custom Metrics 對 Kubernetes 叢集監控,
    • 以及提升 Golang 編碼水平,爭取寫一個 Prometheus Exporter 並開源。

理想佔比:

Kubernetes 4 : 英語 2 : Golang 1.5 : Prometheus 1 : 科學上網 1 : 其它 0.5

明年的目標相比今年詳細了不少,任重而道遠呀。

最後

其實這篇博文最早的標題是「你好,2020」,在寫到這裡的時候,我決定改成現在的標題。

實在沒想到自己文思泉湧。

新年快樂。

?

本作品採用《CC 協議》,轉載必須註明作者和本文連結

我感謝自己平凡,敢愛敢恨沒負擔。
我感謝自己不凡,可愛可恨都包攬。

相關文章