1. 程式人生 > >【專欄】Python在DevOps中的應用

【專欄】Python在DevOps中的應用

證明 時代 開發人員 編程語言 興趣 持續集成 論壇 編寫 發的

互聯網時代,只有能夠快速試驗新想法,並在第一時間,安全、可靠的交付業務價值,才能保持競爭力。DevOps推崇的自動化構建/測試/部署,以及系統度量等技術實踐,是互聯網時代必不可少的。

大家好,我是余洪春,當然很多人更熟悉的是我的網名“撫琴煮酒”。

我在電子商務網站和大型CDN系統運維已工作10多年,在Linux集群、自動化運維、系統安全及高並發高流量網站架構設計等方面進行了深入的研究,在大量一線實踐中積累了豐富的經驗。

同時,我堅持文檔記錄,是51CTO和ChinaUnix等知名社區的特邀專家,51CTO系統網絡頻道的專欄作家,ChinaUnix論壇“集群和高可用”及“監控及自動化運維”版版主,在社區內發表了大量技術文章,深受網友好評。 哈哈,介紹自己還挺不好意思。

Python在DevOps中的應用

自動化構建(即持續集成CI)是因應用而易的,如果是Python應用,因為有setuptools、 pip、 virtualenv及tox等工具的存在,自動化構建非常簡單。而且,因為幾乎所有Linux版本都內置Python解釋器,所以用Python做自動化,不需要系統預安裝什麽軟件。

自動化測試方面,基於Python的Robot Framework企業級應用最喜歡的自動化測試框架,而且和語言無關。Cucumber也有很多支持者,Python對應的Lettuce可以做到完全一樣的事情。Locust(Locust 是一個基於Python開發的開源負載測試工具)在自動化性能測試方面也開始受到越來越多的關註。此外,後起之秀Selenium,現在最火的Web自動化測試的輕量級框架現在已經被越來越多的公司應用。Selenium的主要特點是其開源性、跨平臺性以及眾多的編程語言支持,我們除了可以用Python編寫測試用例,也可以用Java、PHP甚至Shell來編寫測試用例。

自動化運維(自動化配置管理)工具,新生代Ansible、SaltStack,以及輕量級的自動化運維工具Fabric,均為Python開發。Fabric較前兩者設計更為輕量化和模塊化,所以深受研發同事及大數據同事喜愛。另外,這些Python自動化運維工具很容易就能二次開發,所以受到越來越多開發者的歡迎,很多公司同時用它們來完成自動化運維工作。

大家比較熟悉的Pythone的Web框架,例如Django和Flask,均能快速設計出符合後端開發需求的Restful API,尤其是輕量級的Flask,我們在很多大數據對外的API封裝中均會選擇用Flask,感覺非常輕便和簡捷。另外,Python對現在的AWS及Docker均提供了較豐富的支持,比如大名鼎鼎的Boto3及docker-py,均能幫助大家高效的進行DevOps工作。

我們選擇Python的原因

對於研發工程師而言,Python的優雅和簡潔無疑是最大的吸引力,在Python交互式環境中,執行import this,讀一讀Python之禪,你就明白Python為什麽如此吸引人。Python社區一直非常有活力,和Node.js社區軟件包爆炸式增長不同,Python的軟件包增長速度一直比較穩定,同時軟件包的質量也相對較高。有很多人詬病Python對於空格的要求過於苛刻,但正是因為這個要求,才使得Python在做大型項目時比其他語言有優勢。OpenStack項目總共超過200萬行代碼,也證明了這一點。

對於運維工程師而言,Python的最大優勢在於,幾乎所有Linux發行版都內置了Python解釋器。Shell雖然功能強大,但缺點很多:語法不夠優雅,不支持面向對象、沒有豐富的第三方庫支持,寫復雜的系統任務(尤其涉及到網絡HTTP和並發任務方面)會很痛苦。用Python替代Shell,做一些Shell實現不了的復雜任務,對於運維工程師、運維開發來說,是一次解放。

對於運維開發人員(大家習慣稱之為DevOps)而言,Python的優勢在於它是一門強大的膠水語言,特別適合用於Web後端、服務器開發,其優點如下:

  1. Python的代碼風格簡潔易懂易於維護,包括語法優勢不用寫大括號,代碼註釋風格統一,強調做一個事情只有一種方法
  2. 有著豐富的Web開源框架,主流的包括Web2py、web.py、Zope2、Pyramid、Django、CherryPy,還有輕量級框架Flask等。
  3. 跨平臺能力,支持Mac,Linux,Windows等。
  4. Python可用第三方庫和模塊比較多,適合各種工作場景需求,使用起來非常方便。
  5. Python社區非常活躍,在其社區裏面基本上能夠找到一切你所需要的答案。

工作中我們選用Python的原因

在平時的DevOps開發工作中,雖然我會用Shell來處理很多工作流程,但很多時候Shell還是有力不從心的時候,這個時候Python的優勢就發揮出來了,比如在這些方面:自動化運維、設計後端RestFul API、復雜的監控腳本、Web應用項目等。Python用得越多,我們也越來越喜歡用它。

基於以上原因,我們還有什麽理由不選擇Python呢?

實戰技巧和經驗分享

筆者也希望在自己的DevOps工作實踐中提煉出實戰技巧和經驗,借此專欄的機會跟大家分享,希望大家能學習之後,能夠掌握Python的實戰技巧和經驗,提升職業技能,更加高效的從事DevOps工作。

此專欄目前包括三面方的內容:
一、Python在運維工作中的實戰技巧;
二、Python自動化運維配置工具在工作中的實戰;
三、Python與Docker的結合。

全部內容都均出自於工作總結和實戰,主要是幫助大家迅速提升,所學即所用,學到的知識技能點能迅速用於工作實踐,幫助大家提升工作效率的同時,希望能讓大家對Python產生濃厚的興趣, 更進一步花時間和精力來學好它。

專欄鏈接地址:http://blog.51cto.com/cloumn/detail/13
我的專屬優惠券:http://blog.51cto.com/coupon/get/CoumNcvmCcK7COZUNfJ7y7h5NBJ5Zu2

【專欄】Python在DevOps中的應用