DevOps & CI/CD 常見面試題彙總

DevOps & CI/CD 常見面試題彙總

DevOps 術語和定義

  1. 什麼是 DevOps
    答:用最簡單的術語來講,DevOps 是產品開發過程當中開發(Dev)和運營(Ops) 團隊之間的灰色區域。DevOps 是一種在產品開發週期中強調溝通,集成和協做的 文化。所以,它消除了軟件開發團隊和運營團隊之間的孤島,使他們可以快速,連 續地集成和部署產品。
  2. 什麼是持續集成
    答:持續集成(Continuous integration,縮寫爲 CI)是一種軟件開發實踐,團隊 開發成員常常集成他們的工做。利用自動測試來驗證並斷言其代碼不會與現有代碼 庫產生衝突。理想狀況下,代碼更改應該天天在 CI 工具的幫助下,在每次提交時進 行自動化構建(包括編譯,發佈,自動化測試),從而儘早地發現集成錯誤,以確 保合併的代碼沒有破壞主分支。
  3. 什麼是持續交付
    答:持續交付(Continuous delivery,縮寫爲 CD)以及持續集成爲交付代碼包提 供了完整的流程。在此階段,將使用自動構建工具來編譯工件,並使其準備好交付 給最終用戶。它的目標在於讓軟件的構建、測試與發佈變得更快以及更頻繁。這種 方式能夠減小軟件開發的成本與時間,減小風險。
  4. 什麼是持續部署
    答:持續部署(Continuous deployment)經過集成新的代碼更改並將其自動交付 到發佈分支,從而將持續交付提高到一個新的水平。更具體地說,一旦更新經過了 生產流程的全部階段,便將它們直接部署到最終用戶,而無需人工干預。所以,要 成功利用連續部署,軟件工件必須先通過嚴格創建的自動化測試和工具,而後才能 部署到生產環境中。
  5. 什麼是持續測試及其好處
    答:連續測試是一種在軟件交付管道中儘早、逐步和適當地應用自動化測試的實踐。 在典型的 CI/CD 工做流程中,將小批量發佈構建。所以,爲每一個交付手動執行測試 用例是不切實際的。自動化的連續測試消除了手動步驟,並將其轉變爲自動化例程, 從而減小了人工。所以,對於 DevOps 文化而言,自動連續測試相當重要。 持續測試的好處: a. 確保構建的質量和速度。 b. 支持更快的軟件交付和持續的反饋機制。 c. 一旦系統中出現錯誤,請當即檢測。 d. 下降業務風險。在潛在問題變成實際問題以前進行評估。
  6. 什麼是版本控制及其用途?
    答:版本控制(或源代碼控制)是一個存儲庫,源代碼中的全部更改都始終存儲在 這個代碼倉庫中。版本控件提供了代碼開發的操做歷史記錄,追蹤文件的變動內容、 時間、人等信息忠實地了記錄下來。版本控制是持續集成和持續構建的源頭。
  7. 什麼是 Git?
    答:Git 是一個分佈式版本控制系統,可跟蹤代碼存儲庫中的更改。利用 GitHub 流, Git 圍繞着一個基於分支的工做流,該工做流隨着團隊項目的不斷髮展而簡化了團隊 協做。

實施 DevOps 的緣由

  1. DevOps 爲何重要?DevOps 如何使團隊在軟件交付方面受益?
    答:在當今的數字化世界中,組織必須重塑其產品部署系統,使其更強大,更靈活, 以跟上競爭的步伐。 這就是 DevOps 概念出現的地方。DevOps 在爲整個軟件開發管道(從構思到部署, 再到最終用戶)產生移動性和敏捷性方面發揮着相當重要的做用。DevOps 是將不 斷更新和改進產品的更簡化,更高效的流程整合在一塊兒的解決方案。
  2. 解釋 DevOps 對開發人員有何幫助?
    答:在沒有 DevOps 的世界中,開發人員的工做流程將首先創建新代碼,交付並集 成它們,而後,操做團隊有責任打包和部署代碼。以後,他們將不得不等待反饋。 並且若是出現問題,因爲錯誤,他們將不得不從新執行一次,在項目中涉及的不一樣 團隊之間的無數手動溝通。 因爲 CI/CD 實踐已經合併並自動化了其他任務,所以應用 DevOps 能夠將開發人員 的任務簡化爲僅構建代碼。隨着流程變得更加透明而且全部團隊成員均可以訪問, 將工程團隊和運營團隊相結合有助於創建更好的溝通和協做。
  3. 爲何 DevOps 最近在軟件交付方面變得愈來愈流行?
    答:DevOps 在過去幾年中受到關注,主要是由於它可以簡化組織運營的開發,測 試和部署流程,並將其轉化爲業務價值。 技術發展迅速。所以,組織必須採用一種新的工做流程-DevOps 和 Agile 方法-來 簡化和刺激其運營,而不能落後於其餘公司。DevOps 的功能經過 Facebook 和 Netflix 的持續部署方法所取得的成功獲得了清晰體現,該方法成功地促進了其增加, 而沒有中斷正在進行的運營。
  4. CI/CD 有什麼好處?
    答:CI 和 CD 的結合將全部代碼更改統一到一個單一的存儲庫中,並經過自動化測 試運行它們,從而在全部階段全面開發產品,並隨時準備部署。 CI/CD 使組織可以按照客戶指望的那樣快速,高效和自動地推出產品更新。 簡而言之,精心規劃和執行良好的 CI/CD 管道可加快發佈速度和可靠性,同時減輕 產品的代碼更改和缺陷。這最終將致使更高的客戶滿意度。
  5. 持續交付有什麼好處?
    答:經過手動發佈代碼更改,團隊能夠徹底控制產品。在某些狀況下,該產品的新 版本將更有但願:具備明確業務目的的促銷策略。 經過自動執行重複性和平凡的任務,IT 專業人員能夠擁有更多的思考能力來專一於 改進產品,而沒必要擔憂集成進度。
  6. 持續部署有哪些好處?
    答:經過持續部署,開發人員能夠徹底專一於產品,由於他們在管道中的最後任務 是審查拉取請求並將其合併到分支。經過在自動測試後當即發佈新功能和修復,此 方法可實現快速部署並縮短部署持續時間。 客戶將是評估每一個版本質量的人。新版本的錯誤修復更易於處理,由於如今每一個版 本都以小批量交付。

如何有效實施 DevOps

  1. 定義典型的 DevOps 工做流程,典型的 DevOps 工做流程能夠簡化爲 4 個階段:
    ¡ 版本控制:這是存儲和管理源代碼的階段。版本控件包含代碼的不一樣版本。 ¡ 持續集成:在這一步中,開發人員開始構建組件,並對其進行編譯,驗證, 而後經過代碼審查,單元測試和集成測試進行測試。 ¡ 持續交付:這是持續集成的下一個層次,其中發佈和測試過程是徹底自動化 的。CD 確保將新版本快速,可持續地交付給最終用戶。 ¡ 持續部署:應用程序成功經過全部測試要求後,將自動部署到生產服務器上 以進行發佈,而無需任何人工干預。
  2. DevOps 的核心操做是什麼?
    DevOps 在開發和基礎架構方面的核心運營是 Software development: Infrastructure: - ¡ Provisioning Configuration Orchestration Deployment Code building Code coverage Unit testing Packaging Deployment
  3. 在實施 DevOps 以前,團隊須要考慮哪些預防措施?
    當組織嘗試應用這種新方法時,對 DevOps 作法存在一些誤解,有可能致使悲慘 的失敗:¡ DevOps 不只僅是簡單地應用新工具和/或組建新的「部門」並指望它能正常 工做。實際上,DevOps 被認爲是一種文化,開發團隊和運營團隊遵循共同 的框架。 ¡ 企業沒有爲其 DevOps 實踐定義清晰的願景。對開發團隊和運營團隊而言, 應用 DevOps 計劃是一項顯着的變化。所以,擁有明確的路線圖,將 DevOps 集成到你的組織中的目標和指望將消除任何混亂,並從早期就提供 清晰的指導方針。 ¡ 在整個組織中應用 DevOps 作法以後,管理團隊須要創建持續的學習和改進 文化。系統中的故障和問題應被視爲團隊從錯誤中學習並防止這些錯誤再次 發生的寶貴媒介。
  4. SCM 團隊在 DevOps 中扮演什麼角色?
    答:軟件配置管理(SCM)是跟蹤和保留開發環境記錄的實踐,包括在操做系統中 進行的全部更改和調整。 在 DevOps 中,將 SCM 做爲代碼構建在基礎架構即代碼實踐的保護下。 SCM 爲開發人員簡化了任務,由於他們再也不須要手動管理配置過程。如今,此過程 以機器可讀的形式構建,而且會自動複製和標準化。
  5. 質量保證(QA)團隊在 DevOps 中扮演什麼角色?
    答:隨着 DevOps 實踐在創新組織中變得愈來愈受歡迎,QA 團隊的職責和相關性 在當今的自動化世界中已顯示出降低的跡象。 可是,這能夠被認爲是神話。DevOps 的增長並不等於 QA 角色的結束。這僅意味 着他們的工做環境和所需的專業知識正在發生變化。所以,他們的主要重點是專業 發展以跟上這種不斷變化的趨勢。 在 DevOps 中,質量保證團隊在確保連續交付實踐的穩定性以及執行自動重複性測 試沒法完成的探索性測試任務方面發揮戰略做用。他們在評估測試和檢測最有價值 的測試方面的見識仍然在緩解發布的最後步驟中的錯誤方面起着相當重要的做用。
  6. DevOps 使用哪些工具?描述你使用任何這些工具的經驗
    答:在典型的 DevOps 生命週期中,有不一樣的工具來支持產品開發的不一樣階段。因 此,用於 DevOps 的最經常使用工具能夠分爲 6 個關鍵階段: 持續開發:Git, SVN, Mercurial, CVS, Jira 持續整合:Jenkins, Bamboo, CircleCI 持續交付:Nexus, Archiva, Tomcat 持續部署:Puppet, Chef, Docker 持續監控: Splunk, ELK Stack, Nagios 連續測試:Selenium,Katalon Studio
  7. 如何在 DevOps 實踐中進行變動管理
    答:典型的變動管理方法須要與 DevOps 的現代實踐適當集成。第一步是將變動集 中到一個平臺中,以簡化變動,問題和事件管理流程。 接下來,企業應創建高透明度標準,以確保每一個人都在同一頁面上,並確保內部信 息和溝通的準確性。 對即將到來的變動進行分層並創建可靠的策略,將有助於最大程度地下降風險並縮 短變動週期。最後,組織應將自動化應用到其流程中,並與 DevOps 軟件集成。 如何有效實施 CI/CD
  8. CI/CD 的一些核心組件是什麼?
    答:穩定的 CI/CD 管道須要用做版本控制系統的存儲庫管理工具。這樣開發人員就 能夠跟蹤軟件版本中的更改。 在版本控制系統中,開發人員還能夠在項目上進行協做,在版本之間進行比較並消 除他們犯的任何錯誤,從而減輕對全部團隊成員的干擾。 連續測試和自動化測試是成功創建無縫 CI / CD 管道的兩個最關鍵的關鍵。自動化 測試必須集成到全部產品開發階段(包括單元測試,集成測試和系統測試),以涵 蓋全部功能,例如性能,可用性,性能,負載,壓力和安全性。
  9. CI/CD 的一些常見作法是什麼?
    答:如下是創建有效的 CI / CD 管道的一些最佳實踐: ¡ 發展 DevOps 文化 ¡ 實施和利用持續集成 ¡ 以相同的方式部署到每一個環境 ¡ 失敗並從新啓動管道 ¡ 應用版本控制 ¡ 將數據庫包含在管道中 ¡ 監控你的持續交付流程 ¡ 使你的 CD 流水線流暢
  10. 何時是實施 CI/CD 的最佳時間?
    答:向 DevOps 的過渡須要完全重塑其軟件開發文化,包括工做流,組織結構和基 礎架構。所以,組織必須爲實施 DevOps 的重大變化作好準備。
  11. 有哪些常見的 CI/CD 服務器
    答:Visual Studio Visual Studio 支持具備敏捷計劃,源代碼控制,包管理,測試 和發佈自動化以及持續監視的完整開發的 DevOps 系統。 TeamCity TeamCity 是一款智能 CI 服務器,可提供框架支持和代碼覆蓋,而無需 安裝任何額外的插件,也無需模塊來構建腳本。 Jenkins 它是一個獨立的 CI 服務器,經過共享管道和錯誤跟蹤功能支持開發和運營 團隊之間的協做。它也能夠與數百個儀表板插件結合使用。 GitLab GitLab 的用戶能夠自定義平臺,以進行有效的持續集成和部署。GitLab 幫 助 CI / CD 團隊加快代碼交付,錯誤識別和恢復程序的速度。 Bamboo Bamboo 是用於產品發佈管理自動化的連續集成服務器。Bamboo 跟蹤 全部工具上的全部部署,並實時傳達錯誤。
  12. 描述持續集成的有效工做流程
    答:實施持續集成的成功工做流程包括如下實踐: ¡ 實施和維護項目源代碼的存儲庫 ¡ 自動化構建和集成 ¡ 使構建自檢 ¡ 天天將更改提交到基準 ¡ 構建全部添加到基準的提交 ¡ 保持快速構建 ¡ 在生產環境的克隆中運行測試 ¡ 輕鬆獲取最新交付物 ¡ 使構建結果易於全部人監視 ¡ 自動化部署

每種術語之間的差別

  1. 敏捷和 DevOps 之間有哪些主要區別?
    答:基本上,DevOps 和敏捷是相互補充的。敏捷更加關注開發新軟件和以更有效 的方式管理複雜過程的價值和原則。同時,DevOps 旨在加強由開發人員和運營團 隊組成的不一樣團隊之間的溝通,集成和協做。 它須要採用敏捷方法和 DevOps 方法來造成無縫工做的產品開發生命週期:敏捷原 理有助於塑造和引導正確的開發方向,而 DevOps 利用這些工具來確保將產品徹底 交付給客戶。
  2. 持續集成,持續交付和持續部署之間有什麼區別?
    答:持續集成(CI)是一種將代碼版本連續集成到共享存儲庫中的實踐。這種作法 可確保自動測試新代碼,並能快速檢測和修復錯誤。 持續交付使 CI 進一步邁出了一步,確保集成後,隨時能夠在一個按鈕內就能夠釋放 代碼庫。所以,CI 能夠視爲持續交付的先決條件,這是 CI / CD 管道的另外一個重要 組成部分。 對於連續部署,不須要任何手動步驟。這些代碼經過測試後,便會自動推送到生產 環境。 全部這三個組件:持續集成,持續交付和持續部署是實施 DevOps 的重要階段。 一方面,連續交付更適合於活躍用戶已經存在的應用程序,這樣事情就能夠變慢一 些並進行更好的調整。另外一方面,若是你打算髮佈一個全新的軟件而且將整個過程 指定爲徹底自動化的,則連續部署是你產品的更合適選擇。
  3. 連續交付和連續部署之間有哪些根本區別?
    答:在連續交付的狀況下,主分支中的代碼始終能夠手動部署。經過這種作法,開 發團隊能夠決定什麼時候發佈新的更改或功能,以最大程度地使組織受益。 同時,連續部署將在測試階段以後當即將代碼中的全部更新和修補程序自動部署到 生產環境中,而無需任何人工干預。
  4. 持續集成和持續交付之間的區別是什麼?
    答:持續集成有助於確保軟件組件緊密協做。整合應該常常進行;最好每小時或每 天一次。持續集成有助於提升代碼提交的頻率,並下降鏈接多個開發人員的代碼的 複雜性。最終,此過程減小了不兼容代碼和冗餘工做的機會。 持續交付是 CI / CD 流程中的下一步。因爲代碼不斷集成到共享存儲庫中,所以可 以持續測試該代碼。在等待代碼完成以前,沒有間隙能夠進行測試。這樣可確保找 到儘量多的錯誤,而後將其連續交付給生產。
  5. DevOps 和持續交付之間有什麼區別?
    答:DevOps 更像是一種組織和文化方法,可促進工程團隊和運營團隊之間的協做 和溝通。 同時,持續交付是成功將 DevOps 實施到產品開發工做流程中的重要因素。持續交 付實踐有助於使新發行的版本更加乏味和可靠,並創建更加無縫和短的流程。 DevOps 的主要目的是有效地結合 Dev 和 Ops 角色,消除全部孤島,並實現獨立 於持續交付實踐的業務目標。 另外一方面,若是已經有 DevOps 流程,則連續交付效果最佳。所以,它擴大了協做 並簡化了組織的統一產品開發週期。
  6. 敏捷,精益 IT 和 DevOps 之間有什麼區別?
    答:敏捷是僅專一於軟件開發的方法。敏捷旨在迭代開發,創建持續交付,縮短反 饋循環以及在整個軟件開發生命週期(SDLC)中改善團隊協做。 精益 IT 是一種旨在簡化產品開發週期價值流的方法。精益專一於消除沒必要要的過程, 這些過程不會增長價值,並建立流程來優化價值流。 DevOps 專一於開發和部署-產品開發過程的 Dev 和 Ops。其目標是有效整合自動 化工具和 IT 專業人員之間的角色,以實現更簡化和自動化的流程。
相關文章
相關標籤/搜索