隨着互聯網、移動互聯網的浪潮,軟件工程從瀑布到敏捷發生了巨大的變化,服務器架構也從 IOE 演變到微型機,又發展爲雲計算,運維成本愈來愈低,持續部署逐漸流行起來。本課程主要講解敏捷開發和 DevOps 在實際研發中如何提升效率、下降成本,以及分享互聯網公司的研發流程、崗位分工和技術點,學習業界先進工程技術,提升團隊效率。html
本次騰訊雲大學大咖分享課程邀請 CODING DevOps 架構師 楊周 分享關於「敏捷開發與 DevOps 實戰」課程的內容。python
軟件工程從瀑布到敏捷,是對軟件工程效率和軟件交付效率的提高。git
瀑布模型(Waterfall Model)將軟件生命週期劃分爲6個階段:計劃、需求分析、設計、編碼、測試、維護,順序固定,如同瀑布逐級下落。做爲早期軟件工程方法,瀑布在20世紀80年普遍使用,但存在致命的缺點:流程是線性的,到最後才測試和交付開發成果,一旦發現問題爲時已晚,因此沒能很好的解決軟件危機,2003年的統計報告顯示82%的項目延期,和1995年的84%幾乎沒有好轉。web
敏捷開發是按部就班的開發方式,在儘可能短的週期內持續測試和交付「可運行的軟件」,再加上團隊溝通和客戶溝通,從而作到了「擁抱變化」。在敏捷開發中,軟件項目在構建初期被切分紅多個迭代,各個迭代的成果都通過測試,具有可視、可集成和可運行使用的特徵。apache
敏捷開發宣言:編程
從上面的宣言能夠看出,敏捷開發的核心是人 、協做、時刻可運行的軟件、變化。ubuntu
敏捷是一種思想,不止應用於軟件開發。瀏覽器
敏捷開發框架種類較多,但Scrum使用頻繁度最高。服務器
下圖爲 Scrum 框架的流程:markdown
主要有產品負責人和開發團隊,具體工做流以下圖所示,而敏捷教練每每由研發工程師或產品經理兼任。
修改一個錯別字須要多久呢?其背後流程又是如何運做的?
首先,使用缺陷管理
其次,建立缺陷
因爲這個文檔項目很簡單,因此採用單分支開發,即 GitHub Flow。具體知識你們能夠掃描下圖中二維碼進行閱讀。
Git commit 怎麼寫才正規?有兩個原則:
一、不要作完幾件事一塊兒提交,而是作完一件事就提交一次,用一句話簡潔地描述
二、詳細的描述在任務裏,關聯任務 ID 便可,因此作任何事以前都應該先建立任務
建議你們安裝使用 git cz 工具,提供了 feat、fix、refactor 等關鍵詞,嚴格按照要求作,通過一段時間就學會了。具體知識你們能夠掃描圖中的二維碼進行閱讀。
最後,合併請求
團隊溝通的效率很是重要,這是敏捷開發的核心價值觀。效率最高的是 面對面交談,而後是電話、即時聊天,最差是郵件。
因此發起代碼合併請求以後,用即時聊天軟件通知同事,請她進行評審,她合併以後,就自動上線了。
持續交付已發展爲DevOps
雅虎開創了 web 1.0 時代,編輯生產內容,免費提供,經過網站廣告營利,這個模式至今仍然是2C消費互聯網的主要商業模式。
若是你們對互聯網發展史感興趣,推薦閱讀《浪潮之巔》,做者是吳軍博士,曾擔任 Google 資深研究員和騰訊副總裁。
雲計算的第一個產品是 雲存儲,第二個產品纔是租服務器。
自建服務器的上線流程
雲計算時代的上線流程
能夠發現,雲計算大廠招募運維開發崗,廣大中小團隊和非科技公司點擊開通就可以使用,再也不須要招聘不會編程的普通運維了,因此運維的崗位數量愈來愈少,難就業。
而開發人員會配雲服務器是必備技能,學計算機的同窗請注意。
DevOps 自動上線的原理
把一個網站部署到服務器分爲幾步?答:3步。
若是使用持續集成,則能夠實現提交代碼時自動上線,原理以下圖:
常見的持續集成有:商業化的 CircleCI、開源的 Jenkins,本文以 Jenkins 雲服務—— CODING 爲例。
一、 DevOps 理念
自動化是核心理念。
二、 DevOps 權限最佳實踐
一、 現狀的代碼質量低。
二、 提升代碼的終極方案有以下三種。
像互聯網公司那樣作項目。這些屬於產品經理的工做,對大學專業無要求,推薦感興趣的同窗讀一讀《俞軍產品方法論》
建立團隊
backlog 與迭代
服務器安裝了 Apache,就能夠經過 IP 訪問了,但 IP 都是數字,很差記,因此咱們須要買個域名。
切記:不要用電話號碼、QQ 號這種很長的數字註冊域名,那和 IP 同樣難記,失去了域名的本意。
2012年,騰訊註冊了五位和六位數的QQ號碼.cn域名,結果並很差用,2014年就過時了。具體新聞請掃描喜好閱讀。
域名解析有一個入門技術點:www 實際上是二級域名,根域名是什麼都不帶的,必定要都配上,才能保證用戶輸入哪一個都能訪問。
這個網站很簡單,就是一個 markdown 文檔,Git 提交流程和上一篇實戰同樣,就再也不贅述。Git 提交完畢,咱們來配置一下 Jenkins,建議調試階段使用在線靜態 Jenkinsfile,調試經過之後,再保存到代碼庫裏。
.ssh/authorized_keys
,實現 SSH 信任,參考文檔:《在持續集成中使用憑據》;pipeline { agent any stages { stage('檢出') { steps { checkout( [$class: 'GitSCM', branches: [[name: env.GIT_BUILD_REF]], userRemoteConfigs: [[url: env.GIT_REPO_URL, credentialsId: env.CREDENTIALS_ID]]] ) } } stage('構建') { steps { echo '構建中...' // 把 markdown 轉成 HTML sh 'apt-get update && apt-get install -y python3-pip' sh 'pip3 install mkdocs' sh 'mkdocs build' // 打包成壓縮包 sh 'tar -zcf tmp.tar.gz apache2/ site/' echo '構建完成.' } } stage('部署') { steps { echo '部署中...' script { def remote = [:] remote.name = 'web-server' remote.allowAnyHosts = true remote.host = '106.54.86.239' remote.user = 'ubuntu' // 須要先建立一對 SSH 密鑰,把私鑰放在 CODING 憑據管理,把公鑰放在服務器的 `.ssh/authorized_keys`,實現免密碼登陸 withCredentials([sshUserPrivateKey(credentialsId: "c4af855d-402a-4f38-9c83-f6226ae3441c", keyFileVariable: 'id_rsa')]) { remote.identityFile = id_rsa // SSH 上傳文件到遠端服務器 sshPut remote: remote, from: 'tmp.tar.gz', into: '/tmp/' // 解壓縮 sshCommand remote: remote, command: "tar -zxf /tmp/tmp.tar.gz -C /tmp/" sshCommand remote: remote, sudo: true, command: "mkdir -p /var/www/china-speed" sshCommand remote: remote, sudo: true, command: "cp -R /tmp/site/* /var/www/china-speed/" sshCommand remote: remote, sudo: true, command: "cp -R /tmp/apache2/ /etc/" // 重啓 apache2 sshCommand remote: remote, sudo: true, command: "a2ensite china-speed.org.cn" sshCommand remote: remote, sudo: true, command: "a2enmod headers rewrite ssl" sshCommand remote: remote, sudo: true, command: "systemctl reload apache2" } } echo '部署完成' } } } }
通過一番調試,Jenkins 構建成功了,這時候再把它保存在代碼倉庫裏,把設置修改成「使用代碼庫中的 Jenkinsfile」,之後推送代碼便可自動上線。
流量劫持屬於互聯網黑產,2015年,國內某智能路由器廠商劫持404頁面,收集用戶數據並插廣告。後來此廠商的官網也被寬帶運營商劫持插廣告,他們部署了 HTTPS,仍然被劫持,就是由於沒有部署 HSTS 以及禁止 iframe。
當用戶手動輸入域名時,瀏覽器默認請求 HTTP,返回跳轉,但被劫持篡改爲 200,內容改成 iframe 展現 HTTPS 的正常內容,而 iframe 外面展現廣告。更多知識請掃描圖中的二維碼進行閱讀。
2018年9月,Chrome 69 隱藏 www,引起了爭議,讓人覺得真的不用打 www 了,結果不少落後網站沒法訪問,好比學校網站。而後 Chrome 又顯示了 www。到了2019年8月,Chrome 76 再次隱藏 www。理念很簡單:技術應該遷就用戶,而不是遷就那些落後的網站。www 沒有意義,去掉讓用戶更方便更環保。
就像萬維網之父蒂姆在2009年向公衆致歉:網址中 http: 後面的兩條斜線 // 其實不必。「若是這麼多年來人們不用寫或敲入那兩條斜線的話,該能夠省下多少的紙和樹啊。」
因此我建議:你們作網站時,把 www 跳轉到根域名。更多有趣的知識能夠掃碼閱讀。
完整代碼:https://china-speed.coding.net/p/china-speed/d/china-speed/git
爲了給廣大開發者提供最實用、最熱門前沿、最乾貨的視頻教程,請讓咱們聽到你的須要,感謝您的時間!點擊填寫 問卷
騰訊雲大學是騰訊雲旗下面向雲生態用戶的一站式學習成長平臺。騰訊雲大學大咖分享每週邀請內部技術大咖,爲你提供免費、專業、行業最新技術動態分享。