DevOps相關知識點

DevOps

持續集成

簡述

持續集成簡稱CI,是軟件的開發和發佈標準流程的最重要的部分python

做爲一個開發實踐,在C中能夠經過自動化等手段高頻地去獲取產品反饋並響應反饋的過程golang

簡單的來講,持續集成就是持續不斷地(一天屢次)將代碼合併(集成)到主幹源碼倉庫,讓產品能夠快速迭代,同時保持高質量sql

代碼每次經過集成到主幹以前,必須經過自動化測試,以便快速發現和定位錯誤編程

持續集成並不能消除錯誤,而是讓它們很是容易發現和改正後端

優勢

  1. 縮減開發的週期,快速迭代版本安全

    (儘早的持續集成,儘早進入迭代之中,儘早的暴露出問題,儘早解決,儘可能在規定的時間內完成任務)(四儘早一儘可能)服務器

  2. 自動化流水線操做帶來的高效網絡

    (CI的精髓在於持續,持續意味着自動化)架構

    (自動化驗證代碼變動的過程,能夠在軟件開發的早期發現缺陷和與其餘代碼、組件的集成問題)app

  3. 隨時可部署

    (高頻率的集成能夠儘量地保證隨時部署上線,縮短開發複雜軟件的市場交付時間)

  4. 極大程度避免低級錯誤

    (減小大量內容合併到主幹分支的請看看,避免代碼合併衝突和沒法預料的行爲)

    低級錯誤:編譯錯誤,安裝問題,接口問題,性能問題等

難點

  • 遷移遺留代碼到現有CI系統,須要的投入一般愛預料以外

  • 在文化和組織上若是沒有采用敏捷原則或DecOps的工做方式,那麼極可能沒有持續不斷的提交,那麼CI的存在乎義不大

  • 隨着業務增加、工具的更替、技術的演進。CI系統也必然隨之改動,每每會致使階段性的不穩定和人力物力的耗費

  • 若是CI的基本設定不到位,開發流程將會增長特別的開銷

注意點

CI流程的觸發方式

  • 跟蹤觸發式:在每次提交到源碼版本管理系統時觸發

  • 計劃任務:預配置好的計劃

  • 手動:不管是經過CI服務器的管理界面仍是腳本,用戶能夠手工執行CI工做流

代碼審覈

  • 可在持續集成服務器裏使用代碼分析工具(例如Sonar)來執行自動代碼審查

  • 自動代碼審查經過後,可發起一我的工代碼審查,揪出那些自動審查沒法找出的問題,即驗證業務需求,架構問題,代碼是否可讀,以及是否易於擴展。

  • 可靈活配置代碼審覈策略,例如:若是某些人沒有審查代碼便阻止對主幹分支的任何提交。

  • 最經常使用的工具是Gerrit

持續交付

簡述

持續交付簡稱CDCDE,是一種可以使得軟件在較短的循環中可靠的發佈的軟件工程方法

與持續集成相比,持續交付的重點在於 交付,其核心對象不在於代碼,而在於可交付的產物。

因爲持續集成僅僅針對於新舊代碼的集成過程執行來了必定的測試,其變更到持續交付後還須要一些額外的流程

持續交付能夠看做爲是持續集成的下一步,它強調的是,不敢怎麼更新,軟件是隨時隨快能夠交付的

有圖可看出,持續交付在持續集成的基礎上,將集成後的代碼部署到更貼近真實的運行環境的[類生產環境]中

目的

持續交付永愛確保讓代碼可以快速、安全的部署到產品環境中,它經過將每一次改動都會提交到一個模擬產品環境中,使用嚴格的自動化測試,確保業務應用和服務能符合預期

好處

持續交付和持續集成的好處很是類似:

  • 快速發佈。可以應對業務需求,並更快地實現軟件價值

  • 編碼→測試→上線→交付的頻繁迭代週期縮短,同時得到迅速反饋

  • 高質量的軟件發佈標準。整個交付過程標準化、可重複、可靠

  • 整個交付過程進度可視化,方便團隊人員瞭解項目完成度

  • 更先進的團隊協做方式。從需求分析、產品的用戶體驗到交互、設計、開發、測試、運維等角色密切協做,相比於傳統的瀑布式軟件團隊,更少浪費

 

持續部署

簡述

持續部署 意味着:經過自動化部署的手段將軟件功能頻繁的進行交付

持續部署是持續交付的下一步,指的是代碼經過審批之後,自動化部署到生產環境。

持續部署是持續交付的最高階段,這意味着,全部經過了一系列的自動化測試的改動都將自動部署到生產環境。它也能夠被稱爲「Continuous Release」

持續化部署的目標是:代碼在任什麼時候候都是可部署的,能夠進入生產階段。

持續部署的前提是能自動化完成測試、構建、部署等步驟

注:持續交付不等於持續集成

與持續交付以及持續集成相比,持續部署強調了經過 automated deployment 的手段,對新的軟件功能進行集成

目標

持續部署的目標是:代碼在任什麼時候刻都是可部署的,能夠進入生產階段

有不少的業務場景裏,一種業務須要等待另外的功能特徵出現才能上線,這是的持續部署成爲不可能。雖然使用功能切換能解決不少這樣的狀況,但並非沒每次都會這樣。因此,持續部署是否適合你的公司是基於大家的業務需求——而不是技術限制

優勢

持續部署主要的好處是:能夠相對獨立地部署新的功能,並能快速地收集真實用戶的反饋

敏捷開發

簡述

敏捷開發就是一種以人爲核心、迭代循環漸進的開發方式。

在敏捷開發中,軟件仙姑的構建被切分紅多個子項目,各個子項目的成果都通過測試,具有集成和可運行的特徵。

簡單的說就是把一個大的項目分爲多個相互聯繫,但也能夠獨立運行的小項目,並分別完成,在此過程當中軟件一直處於可以使用狀態

注意事項

敏捷開的就是一種面臨迅速變化的需求快速開發的能力,要注意一下幾點:

  1. 敏捷開發不只僅是一個項目快速完成,而是對整個產品領域需求的高效管理

  2. 敏捷開發不只僅是簡單的快,而是短週期的不斷改進、提升和調整

  3. 敏捷開發不只僅是一個版本只作幾個功能,而是突出重點、果斷放棄當前的非重要點

  4. 敏捷開發不只僅是隨時增長需求,而是每一個迭代週期對需求的從新審覈和排序

如何進行敏捷開發

一、組織建設

​ 也就是團隊建設,創建以產品經理爲主導,包含產品、設計、先後臺開發和測試的team,快速進行產品迭代開發;扁平化的團隊管理,你們都有共同目標,更有成就感;

二、敏捷制度

​ 要找準適合自身的敏捷開發方式,主要是制定一個完善的效率高的設計、開發、測試、上線流程,制定固定的迭代週期,讓用戶更有期待;

三、需求收集

​ 這個任何方式下都須要有,需求必定要有交互稿,評審經過後,必定要肯定功能需求列表、責任人、工做量、責任人等;

四、工具建設

​ 是指可以快速完成某項事情的輔助工具,好比開發環境的一鍵安裝,各類底層的日誌、監控等平臺,發佈、打包工具等;

五、系統架構

​ 略爲超前架構設計:支持良好的擴容性和可維護性;組件化基礎功能模塊:代碼耦合度低,模塊間的依賴性小;插件化業務模塊:下降營銷活動與業務耦合度,自升級、自維護;客戶端預埋邏輯;技術預研等等;

六、數據運營與灰度發佈

​ 點擊率分析、用戶路徑分析、渠道選擇、渠道升級控制等等

原則、特色和優點

敏捷開發技術的12個原則:

1.咱們最優先要作的是經過儘早的、持續的交付有價值的軟件來使客戶滿意。

2.即便到了開發的後期,也歡迎改變需求。

3.常常性地交付能夠工做的軟件,交付的間隔能夠從幾周到幾個月,交付的時間間隔越短越好。

4.在整個項目開發期間,業務人員和開發人員必須每天都在一塊兒工做。

5.圍繞被激勵起來的我的來構建項目。

6.在團隊內部,最具備效果而且富有效率的傳遞信息的方法,就是面對面的交談。

7.工做的軟件是首要的進度度量標準。

8.敏捷過程提倡可持續的開發速度。

9.不斷地關注優秀的技能和好的設計會加強敏捷能力。

10.簡單使未完成的工做最大化。

11.最好的構架、需求和設計出自於自組織的團隊。

12.每隔必定時間,團隊會在如何才能更有效地工做方面進行檢討,而後相應地對本身的行爲進行調整。

特色:

  1. 個體和交互賽過過程和工具

  2. 能夠工做的軟件賽過面面俱到的文檔

  3. 客戶合做賽過合同談判

  4. 響應變化賽過遵循計劃

優點總結:

敏捷開發確實是項目進入實質開發迭代階段,用戶很快能夠看到一個基線架構班的產品。敏捷注重市場快速反應能力,也即具體應對能力,客戶前期滿意度高

適用範圍:

  1. 項目團隊的人不能太多

  2. 項目常常發生變動

  3. 高風險的項目實施

  4. 開發人員能夠參與決策

劣勢總結:

  1. 敏捷開發注重人員的溝通

  2. 忽略文檔的重要性

  3. 若項目人員流動太大,維護的時候很難

  4. 項目存在新手的比較多的時候,老員工會比較累

  5. 須要項目中存在經驗較強的人,要否則大項目中容易遇到瓶頸問題

 

Open-falcon

簡述

open-falcon是小米的監控系統,是一款企業級、高可用、可擴展的開源監控解決方案

公司用open-falcon來監控調度系統各類信息,便於監控各個節點的調度信息。在服務器安裝了falcon-agent自動採集各項指標,主動上報

特色

  1. 強大靈活的數據採集

    (自動發現,支持falcon-agent、snmp、支持用戶主動push、用戶自定義插件支持、opentsdb data model like(timestamp、endpoint、metric、key-value tags) )

  2. 水平擴展能力

    (支持每一個週期上億次的數據採集、告警斷定、歷史數據存儲和查詢 )

  3. 高效率的告警策略管理

    (高效的portal、支持策略模板、模板繼承和覆蓋、多種告警方式、支持callback調用 )

  4. 人性化的告警設置

    (最大告警次數、告警級別、告警恢復通知、告警暫停、不一樣時段不一樣閾值、支持維護週期 )

  5. 高效率的graph組件

    (單機支撐200萬metric的上報、歸檔、存儲(週期爲1分鐘) )

  6. 高效的歷史數據query組件

    (採用rrdtool的數據歸檔策略,秒級返回上百個metric一年的歷史數據 )

  7. dashboard(面向用戶的查詢界面,能夠看到push到graph中的全部數據,並查看數據發展趨勢 )

    (對維度的數據展現,用戶自定義Screen)

  8. 高可用

    (整個系統無核心單點,易運維,易部署,可水平擴展)

  9. 開發語言

    (整個系統的後端,所有golang編寫,portal和dashboard使用python編寫。 )

監控範圍

Open-Falcon支持系統基礎監控,第三方服務監控,JVM監控,業務應用監控

基礎監控指的是Linux系統的指標監控,包括CPU、load、內存、磁盤、IO、網絡等,

這些指標由Openfalcon的agent節點直接支持,無需插件

第三方服務監控指的是一些常見的服務監控,包括Mysql、Redis、Nginx等

OpenFalcon官網提供了不少第三方服務的監控插件,也能夠本身實現插件,定義採集指標。而採集到的指標,也是經過插件先發送給agent,再由agent發送到OpenFalcon。

JVM監控主要經過插件完成,插件經過JVM開放的JMX通訊端口,獲取到JVM參數指標,並推送到agent節點,再由agent發送到OpenFalcon。

業務應用監控就是監控企業自主開發的應用服務

主要經過插件完成,插件經過JVM開放的JMX通訊端口,獲取到JVM參數指標,並推送到agent節點,再由agent發送到OpenFalcon。

數據流向

常見的OpenFalcon包含transfer、hbs、agent、judge、graph、API幾個進程

如下是各個節點的數據流向圖,主數據流向是agent -> transfer -> judge/graph:

SNMP

簡述

SNMP:簡單網絡管理協議,是TCP/IP協議簇 的一個應用層協議,因爲SNMP的簡單性,在Internet時代獲得了蓬勃的發展 ,1992年發佈了SNMPv2版本,以加強SNMPv1的安全性和功能。如今,已經有了SNMPv3版本(它對網絡管理最大的貢獻在於其安全性。增長了對認證和密文傳輸的支持 )。

一套完整的SNMP系統主要包括:管理信息庫(MIB)、管理信息結構(SMI)和 SNMP報文協議

爲何要用SNMP

做爲運維人員,咱們很大一部分的工做就是爲了保證咱們的網絡可以正常、穩定的運行。所以監控,控制,管理各類網絡設備成了咱們平常的工做

優勢和好處

優勢:

簡單易懂,部署的開銷成本也小 ,正由於它足夠簡單,因此被普遍的接受,事實上它已經成爲了主要的網絡管理標準。在一個網絡設備上實現SNMP的管理比絕大部分其餘管理方式都簡單直接。

好處:

  1. 標準化的協議:SNMP是TCP/IP網絡的標準網絡管理協議。

  2. 普遍承認:全部主流供應商都支持SNMP。

  3. 可移植性:SNMP獨立於操做系統和編程語言。

  4. 輕量級:SNMP加強對設備的管理能力的同時不會對設備的操做方式或性能產生衝擊。

  5. 可擴展性:在全部SNMP管理的設備上都會支持相同的一套核心操做集。

  6. 普遍部署:SNMP是最流行的管理協議,最爲受設備供應商關注,被普遍部署在各類各樣的設備上。

 

 

 

MIB、SMI和SNMP報文

MIB

  1. 管理信息庫MIB:任何一個被管理的資源都表示成一個對象,稱爲被管理的對象。

  2. MIB是被管理對象的集合。

  3. 它定義了被管理對象的一系列屬性:對象的名稱、對象的訪問權限和對象的數據類型等。

  4. 每一個SNMP設備(Agent)都有本身的MIB。

  5. MIB也能夠看做是NMS(網管系統)和Agent之間的溝通橋樑。

     

MIB文件中的變量使用的名字取自ISO和ITU管理的對象表示符命名空間,他是一個分級數的結構

SMI

SMI定義了SNNMP框架多用信息的組織、組成和標識,它還未描述MIB對象和表述協議怎麼交換信息奠基了基礎

SMI定義的數據類型:

  1. 簡單類型(simple):

    Integer:整型是-2,147,483,648~2,147,483,647的有符號整數

    octet string: 字符串是0~65535個字節的有序序列

    OBJECT IDENTIFIER: 來自按照ASN.1規則分配的對象標識符集

  2. 簡單結構類型(simple-constructed ):

    SEQUENCE 用於列表。這一數據類型與大多數程序設計語言中的「structure」相似。一個SEQUENCE包括0個或更多元素,每個元素又是另外一個ASN.1數據類型

    SEQUENCE OF type 用於表格。這一數據類型與大多數程序設計語言中的「array」相似。一個表格包括0個或更多元素,每個元素又是另外一個ASN.1數據類型。

  3. 應用類型(application-wide):

    IpAddress: 以網絡序表示的IP地址。由於它是一個32位的值,因此定義爲4個字節;

    counter:計數器是一個非負的整數,它遞增至最大值,然後回零。在SNMPv1中定義的計數器是32位的,即最大值爲4,294,967,295;

    Gauge :也是一個非負整數,它能夠遞增或遞減,但達到最大值時保持在最大值,最大值爲232-1;

    time ticks:是一個時間單位,表示以0.01秒爲單位計算的時間;

    SNMP報文

    SNMP規定了5種協議數據單元PDU(也就是SNMP報文),用來在管理進程和代理之間的交換。

    1. get-request操做:從代理進程處提取一個或多個參數值。

    2. get-next-request操做:從代理進程處提取緊跟當前參數值的下一個參數值。

    3. set-request操做:設置代理進程的一個或多個參數值。

    4. get-response操做:返回的一個或多個參數值。這個操做是由代理進程發出的,它是前面三種操做的響應操做。

    5. trap操做:代理進程主動發出的報文,通知管理進程有某些事情發生。

操做命令

SNMP協議之因此易於使用,這是由於它對外提供了三種用於控制MIB對象的基本操做命令。它們是:Get、Set 和 Trap

  1. Get:管理站讀取代理者處對象的值

  2. Set:管理站設置代理者處對象的值

  3. Trap: 代理者主動向管理站通報重要事件

SLA

簡述

SLA(服務等級協議):是關於網絡服務供應商和客戶之間的一份合同,其中定義了服務類型、服務質量和客戶付款等術語

一個完整的SLA同時也是一個合法的文檔,包括所涉及的當事人、協定條款(包含應用程序和支持的服務)、違約的處罰、費用和仲裁機構、政策、修改條款、報告形式和雙方的義務等。一樣服務提供商能夠對用戶在工做負荷和資源使用方面進行規定。

KPI

簡述

KPI(關鍵績效指標):是經過對組織內部流程的輸入端、輸出端的關鍵參數進行設置、取樣、計算、分析,衡量流程績效的一種目標式量化管理指標,是把企業的戰略目標分解爲可操做的工做目標的工具,是企業績效管理的基礎。

KPI能夠是部門主管明確部門的主要責任,並以此爲基礎,明確部門人員的業績衡量指標,創建明確的切實可行的KPI體系,是作好績效管理的關鍵。

KPI(關鍵績效指標)是用於衡量工做人員工做績效表現的量化指標,是績效計劃的重要組成部分

相關文章
相關標籤/搜索