Followme Devops實踐之路
引言
天下武功,唯快不破
想要提高開發團隊效率,勢必要有一套完整而成熟的開發流程方案,除了sprint迭代開發模式之外,還有近幾年流行的devops流程,都是可以大幅度提高開發效率的工具. 我們團隊也不斷探索、實踐,最終形成了現有的一套體系,從最初的手動釋出到現有的自動化,從起始的繁瑣易亂到當下的簡潔明瞭。我們希望將我們曾經踏過的腳印與大家一起分享,為各位展示一條 我們的devops 的實踐之路,同時也希望能為各位避免走入同樣的彎路提供些許幫助。
背景
我們是一個 .net(core) / go / nodejs 的多語言混合式開發團隊,致力於微服務架構。專案初期基於 .net framework , 開始並沒有準備做 devops ,基於 Windows 的 RPC/">gRPC 服務 、 ASP.NET 做持續部署還是比較麻煩(不管是停止遠端服務/更新二進位制包/docker化流程都太重)。當我們全面擁抱.net core 2.0之後,其原生跨平臺的特性促成了我們的 CI/CD (continue integration/continue deployment) 之路。
發展歷程
從0,到devops我們也經歷過好幾個階段,每個階段所存在的問題, 大家也可以對號入座的看看
1 原始階段/純人工管控
- 大家司空見慣的在開發機build,然後copy到伺服器上,手工解壓更新,啟動服務!
- 這種方式效率太低, 質量也不敢保證, 沒有流程章法
2 Ansible + git
- 採用git來管理二進位制釋出包 ,可以有效的進行釋出的粗略diff/特別是配置檔案
- 採用ansible來管理伺服器,大大減低了人肉成本
- 運維大量的重複性操作
3. devops
Devops
為了實現開發自運維, 我們採用Jenkins +docker + portainer 三劍客, 來解決開發/運維/伺服器/各自的問題
-
- 環境依賴, 例如 .net core runtime版本/ OS 版本, 再也不用讓運維提前準備環境了
- 資源限制, 例如有些服務存在記憶體洩漏/CPU問題, docker可以限制他的最大使用率, 確保同臺伺服器上其他docker 服務可以正常使用
-
Portainer
- Docker management UI
- 統一管理docker服務
-
Jenkins
- Build source code
- Build docker image ,ship
- Auto deploy
架構如下 https://github.com/FollowmeTech/jenkins-cicd
功能
- base on Jenkins
- base on docker register hub
- base on portainer management
依賴
- docker registry [harbor]
- portainer (docker management)
- git-server
- docker /docker-compose
體驗一下
為了方便大家快熟感受, 我搭建了一個play環境
大家可以向 ofollow,noindex" target="_blank"> https://github.com/FollowmeTech/jenkins-cicd-practise 提交程式碼
再登陸 https://ci.rileme.club ,選擇相應的分支進行build釋出 (play/123456)
專案釋出完成, 快熟預覽效果 http://demo.rileme.club
部署使用
廣告時間
Hi, 是的,我們在招聘 , 詳情如下
https://github.com/FollowmeTech/hire/blob/master/dotnet.md
你是想一輩子賣糖水, 還是再折騰折騰
Think about it