王夢曉
1 概述
DevOps 集文化理念、實踐和工具于一身,可以促進企業(yè)高速交付應用程序和服務能力的提高,與使用傳統(tǒng)軟件開發(fā)和基礎設施管理流程相比較的話,能夠幫助企業(yè)對產(chǎn)品進行更快地發(fā)展和改進。這種速度使企業(yè)能夠更好地服務其客戶,同時可以更高效的參與市場上競爭。
在 DevOps 模式下,在整個生命周期(從開發(fā)測試到部署再到運營)內(nèi)開發(fā)團隊和運營團隊相互協(xié)作,QA 和安全團隊也會與開發(fā)和運營工作更緊密地結合在一起。通過 DevOps 工具可以幫助工程師獨立完成通常需要其他團隊協(xié)作才能完成的任務(例如部署代碼或預置基礎設施),從而進一步提高團隊的工作速度。
根據(jù)Puppet牽頭DORA(DevOps Research Assessment)主導的2017年度的DevOps最新現(xiàn)狀研究報告,在2017年實施了Devops的企業(yè)中2000人以上的大型公司占到41%,100-2000人中等公司占比35%,100-10的小型公司22%,10人以下的初創(chuàng)公司為2%。
在交付的系統(tǒng)規(guī)模方面,2000臺服務器以上的大型系統(tǒng)占比29%,100到2000臺服務器構成的中型系統(tǒng)占比38%,100臺以下的小型系統(tǒng)占比33%。
在實施Devops的過程中,有兩種不同的選擇,一種是選擇開源的Devops工具鏈,一種是選擇已經(jīng)廠商集約化的解決包。
2 Devops實施方案
2.1 開源Devops工具鏈
開源的DevOps工具鏈中包括版本控制&協(xié)作開發(fā)工具、自動化構建和測試工具、持續(xù)集成&交付工具、部署工具、維護工具、監(jiān)控,警告&分析工具等,可以更好的執(zhí)行實施 DevOps 工作流。
版本控制&協(xié)作開發(fā):GitHub、GitLab、BitBucket、SubVersion、Coding、Bazaar
自動化構建和測試:Apache Ant、Maven、Selenium、PyUnit、QUnit、JMeter、Gradle、PHPUnit、Nexus
持續(xù)集成&交付:Jenkins、Capistrano、BuildBot、Fabric、Tinderbox、Travis CI、flow.ci Continuum、LuntBuild、CruiseControl、Integrity、Gump、Go
容器平臺:Docker、Rocket、Ubuntu(LXC)、第三方廠商如(AWS/阿里云)
配置管理:Chef、Puppet、CFengine、Bash、Rudder、Powershell、RunDeck、Saltstack、Ansible
微服務平臺:OpenShift、Cloud Foundry、Kubernetes、Mesosphere
服務開通:Puppet、Docker Swarm、Vagrant、Powershell、OpenStack Heat
日志管理:Logstash、CollectD、StatsD
監(jiān)控,警告&分析:Nagios、Ganglia、Sensu、zabbix、ICINGA、Graphite、Kibana
上述工具鏈可以應用于一種或多種類別,并在軟件開發(fā)和交付過程的不同階段能夠得到體現(xiàn):
√編碼:代碼開發(fā)和審閱,版本控制工具、代碼合并工具
√構建:持續(xù)集成工具、構建狀態(tài)統(tǒng)計工具
√測試:通過測試和結果確定績效的工具
√打包:成品倉庫、應用程序部署前暫存
√發(fā)布:變更管理、發(fā)布審批、發(fā)布自動化
√配置:基礎架構配置和部署,基礎架構即代碼工具
√監(jiān)視:應用程序性能監(jiān)視、最終用戶體驗
Devops工具鏈雖然很完整,但對于不同類型的企業(yè)應用也存在一定的困難。例如:
眾創(chuàng)空間/孵化器:
1、各企業(yè)辦公地點研發(fā)工具不統(tǒng)一,項目協(xié)同難度大,單獨搭建研發(fā)環(huán)境的難度大、成本高。
2、缺少研發(fā)流程,項目管理混亂,進度管控不好,沒有代碼規(guī)范,代碼質(zhì)量低。開發(fā)人員手工使用 IDE 打包、手工部署和發(fā)布,效率低。
中小企業(yè) / 傳統(tǒng)行業(yè)
1、缺少研發(fā)經(jīng)驗和項目關聯(lián)經(jīng)驗,對常用的研發(fā)工具不熟悉,進度管控不好,沒有代碼規(guī)范,代碼質(zhì)量低。
2、缺少功能完備的研發(fā)工具鏈,搭建研發(fā)工具環(huán)境耗費大量時間,環(huán)境維護耗費精力,現(xiàn)有的研發(fā)工具上手慢,學習成本高。
互聯(lián)網(wǎng)企業(yè)
1、各個研發(fā)團隊研發(fā)流程參差不齊,步調(diào)不一致,缺乏統(tǒng)一管理。項目周期缺乏把控,內(nèi)部研發(fā)協(xié)調(diào)經(jīng)常容易出現(xiàn)問題。
2、搭建研發(fā)工具環(huán)境耗費大量時間,環(huán)境維護耗費精力,現(xiàn)有的研發(fā)工具上手慢,學習成本高。
3、異地開發(fā)協(xié)同效率不高,以手動部署為主,有比較復雜的版本管理,代碼合并沖突頻繁。
研究院 / 培訓機構
面臨問題
1、異地開發(fā)協(xié)同效率低,以手動部署為主,版本管理復雜,代碼合并沖突頻繁。
2、搭建研發(fā)工具環(huán)境耗費大量時間,環(huán)境維護耗費精力,現(xiàn)有的研發(fā)工具上手慢,學習成本高。
為了解決上述問題,許多大型軟件開發(fā)企業(yè)就推出了集約化的Devops解決方案。
2.2 集約化的解決方案
從產(chǎn)品層面來看,集約化的解決方案提供了“項目管理-配置管理-代碼檢查-編譯構建-部署-測試-發(fā)布”等全生命周期服務,不僅能幫助企業(yè)實現(xiàn)數(shù)字化轉型需要的敏捷開發(fā)能力,包括一次開發(fā)、持續(xù)開發(fā)集成與發(fā)布、多版本共享、快速部署、快速迭代、快速反饋等,還能讓企業(yè)的開發(fā)與運維能夠得到高效融合,從而使開發(fā)與運維一體化可以得到真正實現(xiàn),一站式服務也可以得到真正的實現(xiàn)。典型的產(chǎn)品包括華為的DevCloud,騰訊云等解決方案。
以華為的DevCloud為例,它提供的功能包括:
√項目管理:敏捷模式,縮短交付周期、對產(chǎn)品質(zhì)量和協(xié)作效率進行提升、傳承關鍵資產(chǎn)
√代碼托管:在線代碼托管服務,解決跨地域協(xié)同開發(fā),便于代碼合入審查
√流水線:業(yè)務流程按需制定;集成代碼下載、代碼檢查、編譯、構建、部署;實時監(jiān)控流水線狀態(tài)
√代碼檢查:對代碼缺陷要進行精準定位,提供示例和修復建議,對代碼質(zhì)量進行提高,降低維護成本
√編譯構建:混合語言并行構建;支持Maven等主流構建標準支持web/移動終端/IoT應用
√測試管理:端到端測試管理;流程雙向追溯;多維度質(zhì)量報告;快速創(chuàng)建缺陷
√移動應用測試:移動兼容性測試,覆蓋主流Android機型,快速定位分析問題
√部署:一鍵式、快速、并行部署基礎組件和應用到開發(fā)、測試、生產(chǎn)環(huán)境
√發(fā)布:安全Maven私有倉;急速開源鏡像庫,保障發(fā)布效率和質(zhì)量
√CloudIDE:面向軟件開發(fā)者的云端開發(fā)環(huán)境,支持在線編寫代碼,智能提示等功能
這些軟件云優(yōu)勢包括:
多場景:支持互聯(lián)網(wǎng)開發(fā)、移動應用開發(fā)、微服務開發(fā)等主流研發(fā)場景
全集成:端到端工具服務、全生命周期覆蓋、和企業(yè)云緊密集成、簡化部署、發(fā)布,簡化應用上云。
全云化:實現(xiàn)在云中編碼調(diào)試,開發(fā)、測試、部署、運維等一切研發(fā)活動都在云上。
高性能:充分利用云端開發(fā)加速,打造高效開發(fā)體驗。
高安全:對全方位系統(tǒng)進行安全加固,加密傳輸儲存核心數(shù)據(jù),基于角色的企業(yè)級安全管控,保障企業(yè)數(shù)據(jù)安全。
高智能:智能分析和回放開發(fā)者行為,對項目風險進行預測,通過個性化智能報表和看板實現(xiàn)對項目透明化管理。
3 總結
企業(yè)數(shù)字化轉型的關鍵就在于敏捷和DevOps的落地。在工具平臺選擇上,基于開源工具或者商業(yè)工具建立工具平臺,將工具鏈定制開發(fā),形成Devops產(chǎn)品,適用于有單獨的IT部門的大型企業(yè),這些企業(yè)通常流程裝配復雜,需要多部門協(xié)作。
而對于只關注業(yè)務實現(xiàn),希望快速上線業(yè)務,減少研發(fā)和運維成本的中小型企業(yè),更適合使用集約化的解決方案。