1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        如何理解DevOps

        共 3013字,需瀏覽 7分鐘

         ·

        2022-02-27 15:55

        引言

        • DevOps是一種重要的軟件開發(fā)模式;

        • 我所在的團(tuán)隊(duì)正在進(jìn)行DevOps轉(zhuǎn)型;

        • DevOps極大地提升了開發(fā)效率;

        • 本文介紹了我對DevOps的理解;

        什么是DevOps

        • DevOps是一種軟件開發(fā)人員(Research and Dev,RD)和IT運(yùn)維運(yùn)營技術(shù)人員(Ops)和質(zhì)量檢測(QA)之間溝通合作的模式;

        • DevOps的根本目的是快速頻繁的、小步的、自動化便捷的監(jiān)控和審計(jì)的、云端和虛擬化的、可視化的部署,滿足“每天部署10次”或者“快速解決bug并上線”的要求;

        • DevOps是敏捷開發(fā)、持續(xù)交付的基礎(chǔ);

        • DevOps模式和傳統(tǒng)的瀑布模型相對應(yīng);

        我們需要維護(hù)什么?

        • 以我所在的團(tuán)隊(duì)為例,我們需要維護(hù)的內(nèi)容如下:

          • 需要維護(hù)的環(huán)境分為:開發(fā)環(huán)境,測試環(huán)境,準(zhǔn)生產(chǎn)環(huán)境,生產(chǎn)環(huán)境;

          • 每個環(huán)境包含若干個scope,每個scope都是整個系統(tǒng)的一部分,由不同的團(tuán)隊(duì)進(jìn)行開發(fā);

          • 使用microsoft微服務(wù)架構(gòu),每個scope中都有若干service,每個service之間可能還存在相互依賴關(guān)系;

          • 每個service都需要若干resource,這些resource包括但不限于:

        • RabbitMQ;

        • Service Fabric;

        • IoTHub;

        • EventHub;

        • ELK;

        • Consule;

        • KeyVault;

        • MongoDB;

        • Postgresql;

        • Cassandra;

        • Storm;

        • Redis;

        如果沒有DevOps,我們怎樣工作?

        • 沒有流水線Pipeline:

          • 開發(fā)過程變得非常痛苦,會經(jīng)常忘記對代碼進(jìn)行單元測試和集成測試;

          • 開發(fā)完成的服務(wù),打包后不知道放在何處,別人需要引用時很不方便;

          • 代碼質(zhì)量得不到保證,很多代碼沒有經(jīng)過“單元測試覆蓋率檢測”和“代碼重復(fù)率檢測”,代碼可維護(hù)性變差;

          • 隨著開發(fā)的深入進(jìn)行,開發(fā)人員的主要精力不在是編寫新的代碼,而是處理bug和維護(hù)舊的代碼,使開發(fā)效率逐漸降低;

        • 沒有自動化環(huán)境部署:

          • 在開發(fā)者完成一個微服務(wù)的開發(fā)后,不知道將自己開發(fā)的服務(wù)部署到什么環(huán)境上去測試;

          • 開發(fā)者在測試自己的代碼時,會時常發(fā)現(xiàn)所依賴的資源沒有準(zhǔn)備好,比如測試環(huán)境缺少M(fèi)ongoDB等資源;

          • 運(yùn)維人員不能顯式的看到自己維護(hù)了多少資源,每種資源都在被哪些環(huán)境、哪些service引用;

          • 運(yùn)維人員不能顯式的看到資源的使用情況及使用量;

          • 經(jīng)理不能有效的進(jìn)行成本控制;

        • 沒有自動化監(jiān)控系統(tǒng):

          • 運(yùn)維人員不能在機(jī)器、硬件、軟件出現(xiàn)故障時得到及時的警告,導(dǎo)致機(jī)器掛掉了都還不知道;

          • 不能靈活調(diào)配各種資源的使用,導(dǎo)致某些資源極度緊缺、某些資源卻有富余;

        • 手動,而不是自動:

          • 從下面的圖片可以看出,只需手工運(yùn)行5條命令的情況下,成功部署的概率就已跌至86%,如需手工運(yùn)行55條命令,成功部署的概率將跌至22%,如需手工運(yùn)行100條命令,成功部署的概率將趨近于0(僅2%)!

        為什么要有DevOps

        • 不知道目前發(fā)布、部署的進(jìn)展情況;

        • 沒有一套明確的發(fā)布、部署流程,急上線時容易出問題,出了問題也沒有預(yù)案來解決;

        • 自動化程度不夠;

        DevOps工具鏈

        • 編碼:代碼開發(fā)和審閱,版本控制工具、代碼合并工具;

        • 構(gòu)建:持續(xù)集成工具、構(gòu)建狀態(tài)統(tǒng)計(jì)工具;

        • 測試:通過測試和結(jié)果確定績效的工具;

        • 打包:成品倉庫、應(yīng)用程序部署前暫存;

        • 發(fā)布:變更管理、發(fā)布審批、發(fā)布自動化;

        • 配置:基礎(chǔ)架構(gòu)配置和部署,基礎(chǔ)架構(gòu)即代碼工具;

        • 監(jiān)視:應(yīng)用程序性能監(jiān)視、最終用戶體驗(yàn);

        DevOps的多維度目標(biāo)

        • 團(tuán)隊(duì)維度:擬合開發(fā)和運(yùn)維的鴻溝,支持位于全球多個地點(diǎn)的、包含外包人員的、混合開發(fā)/測試/基礎(chǔ)設(shè)施的團(tuán)隊(duì);

        • 技術(shù)維度:擬合多類型的分布式的硬件平臺和上面部署的多種應(yīng)用、多種需求的鴻溝;

        • 需求維度:平衡軟件開發(fā)過程中對軟件用戶需求變化、追求穩(wěn)定性、追求開發(fā)效率、降低check-in風(fēng)險這幾個目標(biāo);

        • 市場維度:解決軟件迭代慢和較高的用戶需求的矛盾;

        • 終極目標(biāo):從時間和空間兩個維度,合理統(tǒng)籌并高效使用現(xiàn)有資源,實(shí)現(xiàn)組織目標(biāo),最大限度滿足用戶需求;

        DevOps需要遵循的基本原則

        • 以人為本,一切工具都是為人服務(wù);

        • 需求細(xì)分,及時開發(fā),及時驗(yàn)證;

        • 減少開發(fā)的分支,盡量在主干上開發(fā),避免合并分支造成的開銷和時間浪費(fèi);另外,分支太多的時候不可能做到持續(xù)集成;

        • 減少代碼積壓,代碼積壓越多、越多的需求和開發(fā)成果得不到驗(yàn)證、效率就越低、下次部署的風(fēng)險就越大;

        • 代碼和配置相分離,盡量降低他們在邏輯或者物理上的耦合;

        • 盡早生成二進(jìn)制包,而不是使用源代碼,并確保二進(jìn)制包不被篡改;

        • 二進(jìn)制包應(yīng)當(dāng)和環(huán)境無關(guān);

        • 確保部署流程是冪等的;

        • 對生產(chǎn)和測試環(huán)境的修改只能由程序,而不是人完成;

        環(huán)境管理

        • 環(huán)境必須遵循:快速部署和響應(yīng)(使用docker或者其他虛擬化技術(shù)能夠更容易做到這一點(diǎn)),可恢復(fù),可支持,可審計(jì);

        • 環(huán)境配置項(xiàng)目:

          • 操作系統(tǒng)和配置;

          • 中間件和軟件棧及配置:數(shù)據(jù)庫,消息系統(tǒng),隊(duì)列;

          • 基礎(chǔ)設(shè)施軟件:代碼管理,目錄服務(wù),監(jiān)控;

          • 外部集成:外部系統(tǒng)和服務(wù);

          • 網(wǎng)絡(luò):路由,防火墻,交換機(jī),DNS;

          • 團(tuán)隊(duì):開發(fā)團(tuán)隊(duì)和infra團(tuán)隊(duì)之間的協(xié)調(diào)分工;

        • 自動化的環(huán)境部署;

        • 測試環(huán)境應(yīng)當(dāng)和生產(chǎn)環(huán)境盡量一致;

        • 環(huán)境的配置文件也應(yīng)當(dāng)進(jìn)行版本控制;

        監(jiān)控

        • 監(jiān)控的內(nèi)容:

          • 硬件,物理設(shè)備,路由器,代理;

          • 操作系統(tǒng);

          • 中間件;

          • 應(yīng)用程序;

          • 日志;

        • 如何監(jiān)控:

          • 清晰的信息展示;

          • 及時告警;

          • 可視化的狀態(tài)呈現(xiàn);

        常用DevOps利器

        • Jenkins:開源的持續(xù)集成工具;

        https://www.jenkins.io/
        • SonarQube:開源的代碼質(zhì)量管理系統(tǒng);

        https://www.sonarqube.org/
        • Puppet:開源的軟件自動化配置和部署工具;

        https://puppet.com/
        • Docker:讓應(yīng)用程序布署在軟件容器下的工作可以自動化進(jìn)行;

        https://www.docker.com/

        總結(jié):DevOps到底是什么?

        • 高效的流水線開發(fā)/測試/上線;

        • 自動化的環(huán)境部署和管理;

        • 良好和及時的監(jiān)控/告警/可視化/反饋/日志;

        • 開發(fā)團(tuán)隊(duì)、運(yùn)維團(tuán)隊(duì)、用戶之間良好的溝通協(xié)作,快速解決問題的能力;

        • 完整的文檔;

        • 任一模塊的冪等和可恢復(fù);

        • 良好的審計(jì)和評估,良好的成本管理;

        • 整個系統(tǒng)穩(wěn)定且靈活,高度自動化;

        • 總而言之,DevOps的核心只有三個詞:高效、自動、監(jiān)控;

        參考

        DevOps的真諦到底是什么?https://mp.weixin.qq.com/s?__biz=MzIzNjUxMzk2NQ==&mid=2247485035&idx=1&sn=d8dbc8e682dc9f634263b9ba1178daa9持續(xù)集成是什么?http://www.ruanyifeng.com/blog/2015/09/continuous-integration.html持續(xù)交付概述 http://exceedhl.thoughtworkers.org/cd/cd.html看板管理 https://zh.wikipedia.org/wiki/%E7%9C%8B%E6%9D%BF%E7%AE%A1%E7%90%86


        source: //changsiyuan.github.io/2017/06/15/2017-6-15-DevOps

        分享&在看


        瀏覽 54
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            欧美成人精品一区二区三区在线看 | 大鸡巴干逼视频 | 国产亚洲AV无码成人片 | 好大灬好硬灬好爽灬无码直播 | 一级片一级 | 天天尻 | 久久人人爽人人爽人人片av不 | 欧美一级日韩 | 九九九色视频 | 欧美色图3p |