2018年終總結與展望 | 掘金年度徵文

GUNN發表於2019-01-29

今天是2019年1月29號,馬上就回家過年了,趁春節放假前回顧一下2018,展望一下2019。

總結2018

關於工作

18年團隊轉到 '空間中心' 這邊的頭一個月主要參與了 moca 服務遷移 的工作,moca 服務是一個執行了三四年之久的專案,因為歷史原因,導致伺服器成本開銷巨大,通過這次遷移我們簡化了之前冗雜的服務架構,減少了伺服器及相應磁碟的使用量,為公司大程度的節省了伺服器方面的開銷。

第二個月份投入到了 萌股 專案後端業務的研發工作。我在這個專案的研發中,大致分為兩大塊,基礎框架 scaffold 的構建和發現模組及股票模組的開發。

scaffold 主要基於 Yii2高階專案模版 進行的一系列工程化的封裝,是團隊之前許多次基於 Yii2 框架開發中積累的沉澱,主要目的是為了更加高效、規範和工程化的滿足專案開發的需求。在基礎框架的構建中,首先是與目前大熱的 docker 進行整合,實現了讓本地、測試和正式全部都執行在相同的容器化環境中,並將 Dockerfile 落到基礎框架中,打通Dev與Ops的 ‘隔閡’,讓整個開發交付環節更加敏捷,併為之後的持續整合打下基礎。然後就是對業務層這一方面進行的諸多工程化封裝。比如在Request階段,通過 JWTtimestamp 實現資料傳輸的安全性;實現具有識別前段快取的資料提供器(FdbVersion Displaying Data);規範了 PHP-FIG 的程式碼規範,並增加程式碼規範檢查和程式碼質量檢查,等等。還有一個重要的就是對 Yii2 元件的封裝,有些是直接整合到了基礎框架中的,比如:整合 Adminlte 及 RBAC 的 Yii2 後臺框架 yii2-desktop、kvstore儲存的方式來對資料量大的情況下進行優化的 yii2-kvstore 、提供了靈活可編輯的 app hosts 資料的 yii2-app-devhosts 等等。基礎框架的研發是我認為整年中最為重要的一個階段,為 萌股 專案及之後的 慧珍 的開發奠定了基礎。

基礎框架構建之後,就是進行 萌股 專案相關模組的開發了。首先發現模組,主要是對二次元資源(比如 番劇、二次元人物)的一些整合、展示。然後是股票模組,它和發現模組中二次元人物緊密相關,實現了股票投資、眾籌上市、股價排行榜等一系列功能。

在這之後,我轉投到了容器編排的相關工作中來。單純的容器化在面對部署在多個主機時就顯得無所適從了,為了超越單個容器管理,我們必須轉向編排工具。這次的容器編排對於我來說是一個試錯的實踐,雖然最終往業務實施階段失敗了,但是這次實踐也帶來技術方面和思維方面的成長,為之後業務飛速發展奠定了良好的開端。先說一下失敗的原因,主要是因為專案初期階段不具備支撐 Kubernetes 容器編排方案的維護成本。一開始的部署方案,是直接在雲伺服器上自己搭建 Kubernetes 叢集,然後就面臨了部署方式複雜、不安全、不利於維護,對於新節點的部署也很浪費時間的問題,就想到了通過 ansible 來實現對部署方案的管理和應用,當時正好在一個《kubernetes技術群》裡看到了 kubeasz 的專案,它通過Ansible指令碼安裝K8S叢集,並不受國內網路環境影響,經過調研並測試沒問題後,便確定了這個部署方案,很快便部署完成,進入到了業務應用階段,業務應用階段面臨的最大問題就是在 Kubernetes 下的持續整合了,最終實現了圍繞Jenkins的一個持續整合方案(如下圖)

2018年終總結與展望 | 掘金年度徵文

沒有持續多久在一次壓力測試之後,導致了多臺服務節點當機,相關元件停止服務,並未能儘快恢復,讓我意識到,目前階段對於 Kubernetes 叢集的維護難度與成本,當然也有解決方案,也是目前更推薦的一種方案,就是完全使用相關雲平臺的 Kubernetes 服務,包括相關儲存方案、網路方案等等。當時我也轉移到了公司服務所在的雲平臺提供的 Kubernetes 服務,但是最終發現還是不太穩定,當前業務還處在初期階段,並不適用,最終放棄。

意識到目前階段並不適合容器編排之後,就需要在目前的容器化架構(docker-compose編排)下實現持續整合了,在之前使用 Jenkins 進行持續整合中,發現了一些弊端,瞭解到目前公司使用的私有自建程式碼託管倉庫 GitLab 也支援相關持續整合,進行調研之後發現能夠解決之前的那些弊端,並能最大程度幫助目前容器化架構在多個主機下部署的問題。在實現 GitLab 下的持續整合過程中,也遇到了解決了很多問題,比如通過在服務端維護版本庫實現程式碼回滾、根據git的 short commit 實現容器映象版本化、通過研發 phpclb 工具在騰訊雲CLB下實現滾動部署的釋出模式等等。最終推出了一個穩定的、契合目前階段的持續整合方案。目前在該方案下(從10月份至今),已經進行了8400+次的持續整合(見下圖)

2018年終總結與展望 | 掘金年度徵文

極大的加快了研發效率。

除去這些,還有一些根據業務的需要實現的 Yii2 元件和php擴充套件,比如提供了靈活可編輯的 app hosts 資料的 yii2-app-devhosts、websocket 擴充套件 yii2-websocket以及生成騰訊雲遊戲多媒體引擎提供鑑權金鑰的php擴充套件 autherbuffer

關於技術

先回顧一下去年的目標:

  • 讀完《PHP 7核心剖析》 | 100%

    2018年終總結與展望 | 掘金年度徵文

  • 讀完《C Primer Plus》 | 37%

    2018年終總結與展望 | 掘金年度徵文

  • 掌握編寫 PHP 擴充套件的能力 | 40%

雖然讀完了《PHP 7核心剖析》這本書,卻沒有學到太多的東西,主要原因是因為對C語言掌握的不足導致,這也限制了編寫 PHP 擴充套件的能力。然後就是工作當中帶來的技術成長,在工作發現了很多不足,比如在容器編排過程中發現對網路知識的不足、對伺服器問題處理的不足等等,雖然通過 極客時間 進行了補足,但還需要繼續學習。

展望2019

新的一年,新的開始。先在這裡大致列一下對自己對工作新的期望。

對自己:

  • 讀完《C Primer Plus》,增加編寫 PHP 擴充套件的能力

  • 繼續補足自己在網路和資料演算法方面的薄弱面,學完 極客時間 的 《資料結構與演算法之美》

  • 學習 go 語言

對工作:

  • 輸出平臺化技術產品

  • 完善日誌收集和監控報警

  • 構建穩定的容器編排環境

掘金年度徵文 | 2018 與我的技術之路 徵文活動正在進行中......

相關文章