DevOps & CI/CD 常見面試題彙總
阿新 • • 發佈:2021-08-10
DevOps & CI/CD 常見面試題彙總
DevOps 術語和定義
- 什麼是 DevOps
答:用最簡單的術語來說,DevOps 是產品開發過程中開發(Dev)和運營(Ops)
團隊之間的灰色區域。DevOps 是一種在產品開發週期中強調溝通,整合和協作的
文化。因此,它消除了軟體開發團隊和運營團隊之間的孤島,使他們能夠快速,連
續地整合和部署產品。 - 什麼是持續整合
答:持續整合(Continuous integration,縮寫為 CI)是一種軟體開發實踐,團隊
開發成員經常整合他們的工作。利用自動測試來驗證並斷言其程式碼不會與現有程式碼
庫產生衝突。理想情況下,程式碼更改應該每天在 CI 工具的幫助下,在每次提交時進
行自動化構建(包括編譯,釋出,自動化測試),從而儘早地發現整合錯誤,以確
保合併的程式碼沒有破壞主分支。 - 什麼是持續交付
答:持續交付(Continuous delivery,縮寫為 CD)以及持續整合為交付程式碼包提
供了完整的流程。在此階段,將使用自動構建工具來編譯工件,並使其準備好交付
給終端使用者。它的目標在於讓軟體的構建、測試與釋出變得更快以及更頻繁。這種
方式可以減少軟體開發的成本與時間,減少風險。 - 什麼是持續部署
答:持續部署(Continuous deployment)通過整合新的程式碼更改並將其自動交付
到釋出分支,從而將持續交付提升到一個新的水平。更具體地說,一旦更新通過了
生產流程的所有階段,便將它們直接部署到終端使用者,而無需人工干預。因此,要 成功利用連續部署,軟體工件必須先經過嚴格建立的自動化測試和工具,然後才能
部署到生產環境中。 - 什麼是持續測試及其好處
答:連續測試是一種在軟體交付管道中儘早、逐步和適當地應用自動化測試的實踐。
在典型的 CI/CD 工作流程中,將小批量釋出構建。因此,為每個交付手動執行測試
用例是不切實際的。自動化的連續測試消除了手動步驟,並將其轉變為自動化例程,
從而減少了人工。因此,對於 DevOps 文化而言,自動連續測試至關重要。
持續測試的好處:
a. 確保構建的質量和速度。 b. 支援更快的軟體交付和持續的反饋機制。 c. 一旦系統中出現錯誤,請立即檢測。
d. 降低業務風險。在潛在問題變成實際問題之前進行評估。 6. 什麼是版本控制及其用途?
答:版本控制(或原始碼控制)是一個儲存庫,原始碼中的所有更改都始終儲存在
這個程式碼倉庫中。版本控制元件提供了程式碼開發的操作歷史記錄,追蹤檔案的變更內容、
時間、人等資訊忠實地了記錄下來。版本控制是持續整合和持續構建的源頭。 - 什麼是 Git?
答:Git 是一個分散式版本控制系統,可跟蹤程式碼儲存庫中的更改。利用 GitHub 流,
Git 圍繞著一個基於分支的工作流,該工作流隨著團隊專案的不斷髮展而簡化了團隊
協作。
實施 DevOps 的原因 - DevOps 為什麼重要?DevOps 如何使團隊在軟體交付方面受益?
答:在當今的數字化世界中,組織必須重塑其產品部署系統,使其更強大,更靈活, 以跟上競爭的步伐。 這就是 DevOps 概念出現的地方。DevOps 在為整個軟體開發管道(從構思到部署,
再到終端使用者)產生移動性和敏捷性方面發揮著至關重要的作用。DevOps 是將不
斷更新和改進產品的更簡化,更高效的流程整合在一起的解決方案。 - 解釋 DevOps 對開發人員有何幫助?
答:在沒有 DevOps 的世界中,開發人員的工作流程將首先建立新程式碼,交付並集
成它們,然後,操作團隊有責任打包和部署程式碼。之後,他們將不得不等待反饋。 而且如果出現問題,由於錯誤,他們將不得不重新執行一次,在專案中涉及的不同
團隊之間的無數手動溝通。
由於 CI/CD 實踐已經合併並自動化了其餘任務,因此應用 DevOps 可以將開發人員
的任務簡化為僅構建程式碼。隨著流程變得更加透明並且所有團隊成員都可以訪問,
將工程團隊和運營團隊相結合有助於建立更好的溝通和協作。 - 為什麼 DevOps 最近在軟體交付方面變得越來越流行?
答:DevOps 在過去幾年中受到關注,主要是因為它能夠簡化組織運營的開發,測
試和部署流程,並將其轉化為業務價值。 技術發展迅速。因此,組織必須採用一種新的工作流程-DevOps 和 Agile 方法-來
簡化和刺激其運營,而不能落後於其他公司。DevOps 的功能通過 Facebook 和 Netflix 的持續部署方法所取得的成功得到了清晰體現,該方法成功地促進了其增長,
而沒有中斷正在進行的運營。 - CI/CD 有什麼好處?
答:CI 和 CD 的結合將所有程式碼更改統一到一個單一的儲存庫中,並通過自動化測
試執行它們,從而在所有階段全面開發產品,並隨時準備部署。
CI/CD 使組織能夠按照客戶期望的那樣快速,高效和自動地推出產品更新。
簡而言之,精心規劃和執行良好的 CI/CD 管道可加快釋出速度和可靠性,同時減輕
產品的程式碼更改和缺陷。這最終將導致更高的客戶滿意度。 5. 持續交付有什麼好處?
答:通過手動釋出程式碼更改,團隊可以完全控制產品。在某些情況下,該產品的新
版本將更有希望:具有明確業務目的的促銷策略。
通過自動執行重複性和平凡的任務,IT 專業人員可以擁有更多的思考能力來專注於
改進產品,而不必擔心整合進度。 6. 持續部署有哪些好處?
答:通過持續部署,開發人員可以完全專注於產品,因為他們在管道中的最後任務
是審查拉取請求並將其合併到分支。通過在自動測試後立即釋出新功能和修復,此
方法可實現快速部署並縮短部署持續時間。
客戶將是評估每個版本質量的人。新版本的錯誤修復更易於處理,因為現在每個版 本都以小批量交付。
如何有效實施 DevOps - 定義典型的 DevOps 工作流程,典型的 DevOps 工作流程可以簡化為 4 個階段:
¡ 版本控制:這是儲存和管理原始碼的階段。版本控制元件包含程式碼的不同版本。
¡ 持續整合:在這一步中,開發人員開始構建元件,並對其進行編譯,驗證,
然後通過程式碼審查,單元測試和整合測試進行測試。
¡ 持續交付:這是持續整合的下一個層次,其中釋出和測試過程是完全自動化
的。CD 確保將新版本快速,可持續地交付給終端使用者。
¡ 持續部署:應用程式成功通過所有測試要求後,將自動部署到生產伺服器上
以進行釋出,而無需任何人工干預。 - DevOps 的核心操作是什麼?
DevOps 在開發和基礎架構方面的核心運營是 Software development:
Infrastructure: ¡ Provisioning
¡ Configuration
¡ Orchestration
¡ Deployment
¡ Code building
¡ Code coverage
¡ Unit testing
¡ Packaging
¡ Deployment - 在實施 DevOps 之前,團隊需要考慮哪些預防措施?
當組織嘗試應用這種新方法時,對 DevOps 做法存在一些誤解,有可能導致悲慘
的失敗:¡ DevOps 不僅僅是簡單地應用新工具和/或組建新的“部門”並期望它能正常
工作。實際上,DevOps 被認為是一種文化,開發團隊和運營團隊遵循共同 的框架。 ¡ 企業沒有為其 DevOps 實踐定義清晰的願景。對開發團隊和運營團隊而言,
應用 DevOps 計劃是一項顯著的變化。因此,擁有明確的路線圖,將
DevOps 整合到你的組織中的目標和期望將消除任何混亂,並從早期就提供
清晰的指導方針。
¡ 在整個組織中應用 DevOps 做法之後,管理團隊需要建立持續的學習和改進
文化。系統中的故障和問題應被視為團隊從錯誤中學習並防止這些錯誤再次
發生的寶貴媒介。 - SCM 團隊在 DevOps 中扮演什麼角色?
答:軟體配置管理(SCM)是跟蹤和保留開發環境記錄的實踐,包括在作業系統中
進行的所有更改和調整。
在 DevOps 中,將 SCM 作為程式碼構建在基礎架構即程式碼實踐的保護下。
SCM 為開發人員簡化了任務,因為他們不再需要手動管理配置過程。現在,此過程
以機器可讀的形式構建,並且會自動複製和標準化。 - 質量保證(QA)團隊在 DevOps 中扮演什麼角色?
答:隨著 DevOps 實踐在創新組織中變得越來越受歡迎,QA 團隊的職責和相關性
在當今的自動化世界中已顯示出下降的跡象。 但是,這可以被認為是神話。DevOps 的增加並不等於 QA 角色的結束。這僅意味 著他們的工作環境和所需的專業知識正在發生變化。因此,他們的主要重點是專業
發展以跟上這種不斷變化的趨勢。 在 DevOps 中,質量保證團隊在確保連續交付實踐的穩定性以及執行自動重複性測
試無法完成的探索性測試任務方面發揮戰略作用。他們在評估測試和檢測最有價值
的測試方面的見識仍然在緩解發布的最後步驟中的錯誤方面起著至關重要的作用。 - 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 - 如何在 DevOps 實踐中進行變更管理
答:典型的變更管理方法需要與 DevOps 的現代實踐適當整合。第一步是將變更集
中到一個平臺中,以簡化變更,問題和事件管理流程。
接下來,企業應建立高透明度標準,以確保每個人都在同一頁面上,並確保內部信 息和溝通的準確性。
對即將到來的變更進行分層並建立可靠的策略,將有助於最大程度地降低風險並縮
短變更週期。最後,組織應將自動化應用到其流程中,並與 DevOps 軟體整合。
如何有效實施 CI/CD - CI/CD 的一些核心元件是什麼?
答:穩定的 CI/CD 管道需要用作版本控制系統的儲存庫管理工具。這樣開發人員就
可以跟蹤軟體版本中的更改。
在版本控制系統中,開發人員還可以在專案上進行協作,在版本之間進行比較並消
除他們犯的任何錯誤,從而減輕對所有團隊成員的干擾。
連續測試和自動化測試是成功建立無縫 CI / CD 管道的兩個最關鍵的關鍵。自動化
測試必須整合到所有產品開發階段(包括單元測試,整合測試和系統測試),以涵 蓋所有功能,例如效能,可用性,效能,負載,壓力和安全性。 - CI/CD 的一些常見做法是什麼?
答:以下是建立有效的 CI / CD 管道的一些最佳實踐:
¡ 發展 DevOps 文化
¡ 實施和利用持續整合
¡ 以相同的方式部署到每個環境
¡ 失敗並重新啟動管道
¡ 應用版本控制
¡ 將資料庫包含在管道中 ¡ 監控你的持續交付流程
¡ 使你的 CD 流水線流暢 - 什麼時候是實施 CI/CD 的最佳時間?
答:向 DevOps 的過渡需要徹底重塑其軟體開發文化,包括工作流,組織結構和基
礎架構。因此,組織必須為實施 DevOps 的重大變化做好準備。 - 有哪些常見的 CI/CD 伺服器
答:Visual Studio Visual Studio 支援具有敏捷計劃,原始碼控制,包管理,測試
和釋出自動化以及持續監視的完整開發的 DevOps 系統。
TeamCity TeamCity 是一款智慧 CI 伺服器,可提供框架支援和程式碼覆蓋,而無需
安裝任何額外的外掛,也無需模組來構建指令碼。
Jenkins 它是一個獨立的 CI 伺服器,通過共享管道和錯誤跟蹤功能支援開發和運營
團隊之間的協作。它也可以與數百個儀表板外掛結合使用。
GitLab GitLab 的使用者可以自定義平臺,以進行有效的持續整合和部署。GitLab 幫 助 CI / CD 團隊加快程式碼交付,錯誤識別和恢復程式的速度。 Bamboo Bamboo 是用於產品釋出管理自動化的連續整合伺服器。Bamboo 跟蹤
所有工具上的所有部署,並實時傳達錯誤。 - 描述持續整合的有效工作流程
答:實施持續整合的成功工作流程包括以下實踐:
¡ 實施和維護專案原始碼的儲存庫 ¡ 自動化構建和整合
¡ 使構建自檢 ¡ 每天將更改提交到基準 ¡ 構建所有新增到基準的提交
¡ 保持快速構建
¡ 在生產環境的克隆中執行測試
¡ 輕鬆獲取最新交付物 ¡ 使構建結果易於所有人監視
¡ 自動化部署
每種術語之間的差異 - 敏捷和 DevOps 之間有哪些主要區別?
答:基本上,DevOps 和敏捷是相互補充的。敏捷更加關注開發新軟體和以更有效
的方式管理複雜過程的價值和原則。同時,DevOps 旨在增強由開發人員和運營團
隊組成的不同團隊之間的溝通,整合和協作。
它需要採用敏捷方法和 DevOps 方法來形成無縫工作的產品開發生命週期:敏捷原
理有助於塑造和引導正確的開發方向,而 DevOps 利用這些工具來確保將產品完全
交付給客戶。 - 持續整合,持續交付和持續部署之間有什麼區別?
答:持續整合(CI)是一種將程式碼版本連續整合到共享儲存庫中的實踐。這種做法
可確保自動測試新程式碼,並能快速檢測和修復錯誤。
持續交付使 CI 進一步邁出了一步,確保整合後,隨時可以在一個按鈕內就可以釋放
程式碼庫。因此,CI 可以視為持續交付的先決條件,這是 CI / CD 管道的另一個重要
組成部分。
對於連續部署,不需要任何手動步驟。這些程式碼通過測試後,便會自動推送到生產
環境。
所有這三個元件:持續整合,持續交付和持續部署是實施 DevOps 的重要階段。
一方面,連續交付更適合於活躍使用者已經存在的應用程式,這樣事情就可以變慢一 些並進行更好的調整。另一方面,如果你打算髮佈一個全新的軟體並且將整個過程
指定為完全自動化的,則連續部署是你產品的更合適選擇。 - 連續交付和連續部署之間有哪些根本區別?
答:在連續交付的情況下,主分支中的程式碼始終可以手動部署。通過這種做法,開
發團隊可以決定何時釋出新的更改或功能,以最大程度地使組織受益。 同時,連續部署將在測試階段之後立即將程式碼中的所有更新和修補程式自動部署到
生產環境中,而無需任何人工干預。 - 持續整合和持續交付之間的區別是什麼?
答:持續整合有助於確保軟體元件緊密協作。整合應該經常進行;最好每小時或每
天一次。持續整合有助於提高程式碼提交的頻率,並降低連線多個開發人員的程式碼的
複雜性。最終,此過程減少了不相容程式碼和冗餘工作的機會。
持續交付是 CI / CD 流程中的下一步。由於程式碼不斷整合到共享儲存庫中,因此可
以持續測試該程式碼。在等待程式碼完成之前,沒有間隙可以進行測試。這樣可確保找
到儘可能多的錯誤,然後將其連續交付給生產。 - DevOps 和持續交付之間有什麼區別?
答:DevOps 更像是一種組織和文化方法,可促進工程團隊和運營團隊之間的協作
和溝通。
同時,持續交付是成功將 DevOps 實施到產品開發工作流程中的重要因素。持續交
付實踐有助於使新發行的版本更加乏味和可靠,並建立更加無縫和短的流程。
DevOps 的主要目的是有效地結合 Dev 和 Ops 角色,消除所有孤島,並實現獨立
於持續交付實踐的業務目標。
另一方面,如果已經有 DevOps 流程,則連續交付效果最佳。因此,它擴大了協作
並簡化了組織的統一產品開發週期。 - 敏捷,精益 IT 和 DevOps 之間有什麼區別?
答:敏捷是僅專注於軟體開發的方法。敏捷旨在迭代開發,建立持續交付,縮短反 饋迴圈以及在整個軟體開發生命週期(SDLC)中改善團隊協作。
精益 IT 是一種旨在簡化產品開發週期價值流的方法。精益專注於消除不必要的過程,
這些過程不會增加價值,並建立流程來優化價值流。
DevOps 專注於開發和部署-產品開發過程的 Dev 和 Ops。其目標是有效整合自動
化工具和 IT 專業人員之間的角色,以實現更簡化和自動化的流程。
微信
支付寶