Devops 2.0工具箱讀書筆記1-DevOps概念

關(guān)于此書

作者照片

作者:Viktor Farcic 目前是CloudBees的資深顧問,CloudBees是專業(yè)提供Jenkins企業(yè)版產(chǎn)品和服務(wù)的公司。他是一名資深的程序員,目前最喜歡的語言是Scala和JavaScript。他之前還寫過另外一本書《Test-Driven Java Development》

本書的封面如下,夠黑暗,夠簡潔。

封面

本書的實(shí)體書非常重,很大很厚,內(nèi)容則是更加的黑暗和強(qiáng)大。在美國亞馬遜上的搜索排名比較靠前,搜DevOps,它出現(xiàn)在第四位。它是今年2月份在亞馬遜上架。本書的評論不多只有8條,可是大家不約而同的都給出了5星的評價(jià);可見老外蓋樓的水平也都很專業(yè)。

篇章結(jié)構(gòu)

我們先看下本書每一章的標(biāo)題,隨后我會按章節(jié)寫出我的讀書筆記。

  • DevOps概念
  • 實(shí)踐的突破:持續(xù)交付,微服務(wù)和容器
  • 系統(tǒng)架構(gòu)
  • 用Vagrant和Docker配置開發(fā)環(huán)境
  • 實(shí)施部署流水線:初始化階段
  • Dcoker世界里的配置管理
  • 實(shí)施部署流水線:中間階段
  • 服務(wù)發(fā)現(xiàn):分布式服務(wù)的關(guān)鍵
  • 代理服務(wù)
  • 實(shí)施部署流水線:后期階段
  • 自動化實(shí)施部署流水線
  • 持續(xù)集成/持續(xù)和部署工具
  • 藍(lán)綠部署
  • 群集和服務(wù)擴(kuò)展
  • 自愈系統(tǒng)
  • 集中化的日志和監(jiān)控

本書并不長,一共就396頁,我曾經(jīng)在火車上一下午看了50頁;由于信息量大,邏輯嚴(yán)密,確實(shí)有腦裂的感覺。本系列文章會按照我的閱讀進(jìn)度,來持續(xù)為大家通過讀書筆記的方式,分享本書的干貨和營養(yǎng)。當(dāng)然,您最后去購買中文版實(shí)體書肯定是最好的。我的閱讀沒法代替您自己的理解力和判斷力。讀書筆記的作用對我來說是回顧和記錄為主,其中對書籍評論部分請自行決定是否吸收。

第一章 DevOps概念

作者通過對兩類項(xiàng)目經(jīng)歷的對比來描述了微服務(wù)架構(gòu)的潛在價(jià)值和優(yōu)勢。這兩種項(xiàng)目類型分別是:1)新生的從無到有開發(fā)的項(xiàng)目;2)需要和已有系統(tǒng)對接的,與老舊系統(tǒng)有關(guān)的延伸的,用瀑布式開發(fā)模式和運(yùn)維的項(xiàng)目。

前者的優(yōu)勢:可以使用最新的技術(shù),在系統(tǒng)的不同服務(wù)選擇最佳的語言和開發(fā)堆棧。一個(gè)錯(cuò)誤的設(shè)計(jì)或者模塊可以推倒重來的代價(jià)按周計(jì)算。

后者的痛點(diǎn):必須考慮和已有系統(tǒng)的對接,無法嘗試新生技術(shù)和事物,技術(shù)創(chuàng)新被完全壓制;系統(tǒng)設(shè)計(jì)和發(fā)布的失誤導(dǎo)致的代價(jià)是巨大的。

傳統(tǒng)的軟件開發(fā)方式下,系統(tǒng)集成測試被放在最后階段。把不同團(tuán)隊(duì)經(jīng)過數(shù)月開發(fā)的成果集成在一起的時(shí)候,才是開發(fā)人員的噩夢的開始。各種返工、需求重定義像災(zāi)難一樣不可避免地頻繁發(fā)生。從這些血淋漓的經(jīng)驗(yàn)教訓(xùn)中作者提出了CI/CD的必要性和價(jià)值。CI/CD往往被認(rèn)為是Ops團(tuán)隊(duì)的任務(wù),而不關(guān)Dev人員什么事。但是對于Dev人員來說,如果還沒有入手和使用CI工具和自動化測試框架,這些欠下的技術(shù)債早晚還是要還的。你有木有半夜被Ops從床上捉起來去生產(chǎn)系統(tǒng)里面排bug的經(jīng)歷?有木有留下心理陰影?

CI/CD的操作流程和實(shí)踐其實(shí)是要把所有可能的坑都提前踩一遍,建立以天、小時(shí)、甚至分鐘的快速反饋機(jī)制。它需要影響和關(guān)聯(lián)到系統(tǒng)開發(fā)和交付的所有環(huán)節(jié)中,從架構(gòu)設(shè)計(jì)到測試,研發(fā)和運(yùn)維人員每天都需要關(guān)注的是管理和業(yè)務(wù)需求是否滿足。
因此:整體思維,系統(tǒng)性思維重要。

談?wù)劶軜?gòu),作者做了一個(gè)形象的比喻:由很大的團(tuán)隊(duì)多年開發(fā)出的單體應(yīng)用,不加充分測試,緊耦合,技術(shù)選擇陳舊而保守。去給這樣的系統(tǒng)做瘦身和優(yōu)化,就像是企圖把一個(gè)八十歲的老太太再變成為小姑涼一樣的困難。所有的優(yōu)化改造和升級都是無力回天的。作者對微服務(wù)架構(gòu)的定義是:把系統(tǒng)構(gòu)造成很多小的獨(dú)立的服務(wù),它們能被多個(gè)小團(tuán)隊(duì)維護(hù),任何程序猿對每個(gè)服務(wù)的代碼都能秒懂。微服務(wù)可以被任意改變開發(fā)框架、語言、數(shù)據(jù)庫;而不會影響到其它系統(tǒng)。可以被獨(dú)立的部署。我想很多人都在探求微服務(wù)應(yīng)該切分多大和多??;我想微服務(wù)的服務(wù)并不關(guān)乎大小,而在乎其功能切分的合理性,微服務(wù)的總數(shù)與維護(hù)團(tuán)隊(duì)人數(shù)的匹配。

作者提出了程序猿所使用的共享庫是緊耦合的陷阱,會拖慢系統(tǒng)實(shí)施的速度。標(biāo)準(zhǔn)化服務(wù)接口也是創(chuàng)新的隱形殺手。這些單體應(yīng)用經(jīng)常會出的錯(cuò),微服務(wù)也可能會有,而且其后果可能是所有錯(cuò)誤相乘的影響度。

從這里我們可以看出微服務(wù)的特點(diǎn)、切分、構(gòu)建原則和可能的問題。只有清晰認(rèn)識和定位它,才能保障在實(shí)踐過程中能夠收獲它的優(yōu)勢和好處。

談?wù)劜渴穑悍?wù)部署的對象是一堆Jar,WAR,DLL和其它任何程序代碼的輸出制品。定位那些要部署在舊服務(wù)器上,那些在新服務(wù)器上困難重重。所有服務(wù)器有差異性,生產(chǎn)環(huán)境和準(zhǔn)生產(chǎn)環(huán)境和開發(fā)環(huán)境有天然的差異性。用虛擬機(jī)可以保證一定的一致性,可是對于每一個(gè)運(yùn)行了一段時(shí)間的虛擬機(jī),誰也無法回溯它完整的手工系統(tǒng)配置和變更過程。系統(tǒng)理想配置狀態(tài)和現(xiàn)實(shí)狀態(tài)的差異性是由于時(shí)間積累導(dǎo)致的。除非自動化的工具和流程來代替手工的配置操作,才能保證服務(wù)部署和更新的成功率。我們很難把每個(gè)子服務(wù)都部署在不同的VM上,那樣做會導(dǎo)致虛擬機(jī)的泛濫,VM的管理同樣是問題。最后總結(jié)到:immutable server is good idea. 可以理解為:不可變服務(wù)/服務(wù)器。而我們已有的工具是無法支持它的部署的。

談?wù)劸幣牛簜鹘y(tǒng)的服務(wù)配置/編排工具如Puppet和Chef,如果是手工開發(fā)、維護(hù)和運(yùn)作這些腳本,而沒有系統(tǒng)性思考的話,基本上也是一個(gè)悲劇的噩夢的結(jié)果。這些編排工具也定性為:比沒啥都沒有要好的東東。

部署流水線的正途究竟在哪? 本書的標(biāo)題是工具集,因此作者在本章最后隆重推出了夢幻工具集組合。

Ansible:替代Puppe和Chef之類的工具。
Docker:替代緩慢的虛擬機(jī),它是推薦的創(chuàng)建不可變(immutable)部署的工具。
服務(wù)發(fā)現(xiàn):使用Swarm,Kubernets和Mesos/DCOS都可以。

作者提出微服務(wù)正在已緩慢的速度被應(yīng)用于構(gòu)架大型的系統(tǒng),還需要涉及的工具包括:CoreOS、etcd,Consul,F(xiàn)leet,Mesos,Rocket和其它的。

這一章基本上以作者對傳統(tǒng)應(yīng)用系統(tǒng)開發(fā)運(yùn)維缺陷和弱點(diǎn)的吐槽,作者槽點(diǎn)總結(jié)的字字珠璣,沒有廢話,我也是非常認(rèn)同。其中對微服務(wù)、DevOps概念和CI/CD的定位也非常到位。并且對應(yīng)到了軟件開發(fā)、架構(gòu)設(shè)計(jì)和系統(tǒng)交付的全生命周期場景中。此作者完全是實(shí)踐型,結(jié)尾亮出了十八班兵器;指出好戲在后面,把所有理論都展示出來,讓讀者通過跑通本書的測試代碼才是真本領(lǐng)。

結(jié)尾

本書第一章結(jié)尾作者引用了黑客帝國里Morpheus的一句話,讓我們共勉之。

Morpheus

This is your last chance. After this, there is no turning back. You take the blue pill - the story ends, you wake up in your bed and believe whatever you want to believe. You take the red pill - you stay in Wonderland and I show you how deep the rabbit-hole goes.

寫完此筆記之后,我的感覺是本書寫的都是干貨,它幫我梳理了思路,再次回顧了舊社會的苦難;而我們站在現(xiàn)在的時(shí)間點(diǎn)上看,我只想說:親該吃藥了,記得吃下那顆紅色的藥丸。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • “微服務(wù)架構(gòu)”這一術(shù)語在前幾年橫空出世,用于描述這樣一種特定的軟件設(shè)計(jì)方法,即以若干組可獨(dú)立部署的服務(wù)的方式進(jìn)行軟...
    ThoughtWorks閱讀 17,093評論 1 71
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,534評論 19 139
  • 概念 生產(chǎn)就緒:如果一個(gè)應(yīng)用程序或服務(wù)被證實(shí)可以處理生產(chǎn)環(huán)境的業(yè)務(wù)流量,那么它就被認(rèn)為是生產(chǎn)就緒的。 混沌測試:在...
    zlup閱讀 1,773評論 0 3
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,893評論 25 709
  • 如果我喜歡看偶像劇,請不要建議我看TED演講,告訴我可以增長知識開闊視野,這些跟我無關(guān),因?yàn)槲也幌矚g。 如果我喜歡...
    皮牛閱讀 337評論 0 0

友情鏈接更多精彩內(nèi)容