今天是2019年1月29號,立刻就回家過年了,趁春節放假前回顧一下2018,展望一下2019。php
18年團隊轉到 '空間中心' 這邊的頭一個月主要參與了 moca
服務遷移 的工做,moca
服務是一個運行了三四年之久的項目,由於歷史緣由,致使服務器成本開銷巨大,經過此次遷移咱們簡化了以前冗雜的服務架構,減小了服務器及相應磁盤的使用量,爲公司大程度的節省了服務器方面的開銷。git
第二個月份投入到了 萌股 項目後端業務的研發工做。我在這個項目的研發中,大體分爲兩大塊,基礎框架 scaffold 的構建和發現模塊及股票模塊的開發。github
scaffold 主要基於 Yii2高級項目模版 進行的一系列工程化的封裝,是團隊以前許屢次基於 Yii2
框架開發中積累的沉澱,主要目的是爲了更加高效、規範和工程化的知足項目開發的需求。在基礎框架的構建中,首先是與目前大熱的 docker
進行整合,實現了讓本地、測試和正式所有都運行在相同的容器化環境中,並將 Dockerfile
落到基礎框架中,打通Dev與Ops的 ‘隔閡’,讓整個開發交付環節更加敏捷,併爲以後的持續集成打下基礎。而後就是對業務層這一方面進行的諸多工程化封裝。好比在Request階段,經過 JWT
及 timestamp
實現數據傳輸的安全性;實現具備識別前段緩存的數據提供器(FdbVersion Displaying Data);規範了 PHP-FIG 的代碼規範,並增長代碼規範檢查和代碼質量檢查,等等。還有一個重要的就是對 Yii2
組件的封裝,有些是直接集成到了基礎框架中的,好比:集成 Adminlte 及 RBAC 的 Yii2 後臺框架 yii2-desktop、kvstore存儲的方式來對數據量大的狀況下進行優化的 yii2-kvstore 、提供了靈活可編輯的 app hosts 數據的 yii2-app-devhosts 等等。基礎框架的研發是我認爲全年中最爲重要的一個階段,爲 萌股 項目及以後的 慧珍 的開發奠基了基礎。web
基礎框架構建以後,就是進行 萌股 項目相關模塊的開發了。首先發現模塊,主要是對二次元資源(好比 番劇、二次元人物)的一些整合、展現。而後是股票模塊,它和發現模塊中二次元人物緊密相關,實現了股票投資、衆籌上市、股價排行榜等一系列功能。算法
在這以後,我轉投到了容器編排的相關工做中來。單純的容器化在面對部署在多個主機時就顯得無所適從了,爲了超越單個容器管理,咱們必須轉向編排工具。此次的容器編排對於我來講是一個試錯的實踐,雖然最終往業務實施階段失敗了,可是此次實踐也帶來技術方面和思惟方面的成長,爲以後業務飛速發展奠基了良好的開端。先說一下失敗的緣由,主要是由於項目初期階段不具有支撐 Kubernetes
容器編排方案的維護成本。一開始的部署方案,是直接在雲服務器上本身搭建 Kubernetes
集羣,而後就面臨了部署方式複雜、不安全、不利於維護,對於新節點的部署也很浪費時間的問題,就想到了經過 ansible
來實現對部署方案的管理和應用,當時正好在一個《kubernetes技術羣》裏看到了 kubeasz 的項目,它經過Ansible腳本安裝K8S集羣,並不受國內網絡環境影響,通過調研並測試沒問題後,便肯定了這個部署方案,很快便部署完成,進入到了業務應用階段,業務應用階段面臨的最大問題就是在 Kubernetes
下的持續集成了,最終實現了圍繞Jenkins的一個持續集成方案(以下圖)docker
沒有持續多久在一次壓力測試以後,致使了多臺服務節點宕機,相關組件中止服務,並未能儘快恢復,讓我意識到,目前階段對於 Kubernetes
集羣的維護難度與成本,固然也有解決方案,也是目前更推薦的一種方案,就是徹底使用相關雲平臺的 Kubernetes
服務,包括相關存儲方案、網絡方案等等。當時我也轉移到了公司服務所在的雲平臺提供的 Kubernetes
服務,可是最終發現仍是不太穩定,當前業務還處在初期階段,並不適用,最終放棄。後端
意識到目前階段並不適合容器編排以後,就須要在目前的容器化架構(docker-compose編排)下實現持續集成了,在以前使用 Jenkins
進行持續集成中,發現了一些弊端,瞭解到目前公司使用的私有自建代碼託管倉庫 GitLab
也支持相關持續集成,進行調研以後發現可以解決以前的那些弊端,並能最大程度幫助目前容器化架構在多個主機下部署的問題。在實現 GitLab
下的持續集成過程當中,也遇到了解決了不少問題,好比經過在服務端維護版本庫實現代碼回滾、根據git的 short commit 實現容器鏡像版本化、經過研發 phpclb 工具在騰訊雲CLB下實現滾動部署的發佈模式等等。最終推出了一個穩定的、契合目前階段的持續集成方案。目前在該方案下(從10月份至今),已經進行了8400+次的持續集成(見下圖)緩存
極大的加快了研發效率。安全
除去這些,還有一些根據業務的須要實現的 Yii2
組件和php擴展,好比提供了靈活可編輯的 app hosts 數據的 yii2-app-devhosts、websocket 擴展 yii2-websocket以及生成騰訊雲遊戲多媒體引擎提供鑑權密鑰的php擴展 autherbuffer。服務器
先回顧一下去年的目標:
讀完《PHP 7內核剖析》 | 100%
讀完《C Primer Plus》 | 37%
掌握編寫 PHP 擴展的能力 | 40%
雖然讀完了《PHP 7內核剖析》這本書,卻沒有學到太多的東西,主要緣由是由於對C語言掌握的不足致使,這也限制了編寫 PHP 擴展的能力。而後就是工做當中帶來的技術成長,在工做發現了不少不足,好比在容器編排過程當中發現對網絡知識的不足、對服務器問題處理的不足等等,雖然經過 極客時間
進行了補足,但還須要繼續學習。
新的一年,新的開始。先在這裏大體列一下對本身對工做新的指望。
對本身:
讀完《C Primer Plus》,增長編寫 PHP 擴展的能力
繼續補足本身在網絡和數據算法方面的薄弱面,學完 極客時間
的 《數據結構與算法之美》
學習 go 語言
對工做:
輸出平臺化技術產品
完善日誌收集和監控報警
構建穩定的容器編排環境