面試題-持續集成


前言

在11月的前兩周我總結了每天5分鍾玩轉容器技術的基礎部分,對容器有了一些基礎的認識和實踐經驗,但是容器技術不能只學不用,需要結合實際項目的部署來進一步學習並加深理解,所以我購買了慕課網的 基於SpringCloud+Kubernetes微服務的容器化持續交付實戰 這門實戰課,既可以了解微服務,又能夠學習DevOps並加深對容器的理解。這系列的筆記就是針對這個實戰課程編寫的,目前只更新到了第6章,筆記同樣也采用了問題-解答 的形式,方便大家准備面試,希望對大家有所幫助。

持續集成

  1. 敏捷開發,持續集成,持續交付,持續部署,DevOps的區別?

    • 敏捷開發:關注任務的分配和實際開發和本地環境的構建
    • 持續集成:敏捷開發+自動化測試
    • 持續交付:持續集成+包發布到內部的庫中
    • 持續部署:持續交付+部署環節
    • DevOps:持續部署+運維(包含了軟件生命周期的所有環節)
  2. 需要進行持續集成的原因?

    • 單體應用的部署相對簡單,部署服務停服務都只需要控制一個jar包即可
    • 微服務模式下應用部署的復雜度高,部署服務可能需要部署微服務相關的很多支持服務
  3. 如何設計持續交付流水線?(學習完再完成)

  4. 需要持續部署的原因?

    • 手動部署出錯率高
    • 需要熬夜加班部署
  5. 持續部署的要素

    • 自動化部署:Ansible
      • VaultServer:存儲敏感信息服務器
    • 應用與配置分離,一次構建,多次運行-Spring cloud Config
    • 提供應用健康檢測接口-Spring cloud Actuator
  6. 新版本發布時的方式

    • 藍綠發布:同時保持兩個環境,一個老版本,一個新版本,通過一個調度程序把所有客戶端流量負載到新版本環境下,一旦出現問題,無縫切換到老版本
    • 金絲雀發布:和藍綠發布類似,也同時有兩套環境,區別在於客戶端流量是逐步切換到新版本的,按照10%~100%逐步切換
    • 功能開關:適用於前后端開發進度不匹配的時候,如果后端先開發完畢,可以通過設置一個全局的開關,先關閉部分新功能,等到前端都開發完畢后,再把功能開關打開
  7. 簡單說說一個敏捷項目的管理架構

    • Release:發布,單位為月,比如:6月需要發布一個促銷的功能
      • Sprint:迭代(包含本次迭代需要實現的需求點),單位為周
        • Story:根據需求產生的一個個用戶故事(產品經理做)
        • Task:根據用戶故事拆分出來的開發任務(程序員做)
  8. Story point的作用是什么?

    Story Point的作用是給每個用戶故事進行打分,保證每個開發者按照能力來分配分數,打分的評測維度有如下:

    • 工作量
    • 復雜度
    • 風險和不確定性
  9. 每日站會的目的是什么?

    每日站會最主要的目的是及時的消除項目的風險。每個人通過說明以下的事項,項目經理能夠很有效的把控項目的進度。

    • 昨日工作
    • 今日工作
    • 是否有阻塞的issuse
  10. 簡單說說 GitFlow和TrunkBase開發模式的區別,開發團隊如何選擇開發模型?

    • GitFlow和TrunkBase模型的核心區別在於,提交的新功能是否可以立即發布到主干分支或者Release分支,立即合並並且分支較少的優點和缺點如下:
      • 優點:可以快速迭代
      • 缺點:如果團隊開發水平不高,很可能出現線上bug
    • 總結:如果對版本穩定性要求高,建議使用GitFlow;如果需要快速迭代,建議使用TrunkBase
  11. 微服務網關的作用

    • 服務路由:作為統一路徑的路由入口
    • 服務認證:提供session等校驗工作
    • 服務負載均衡調度:可以配置負載均衡策略
    • 安全管理:支持配置某些路徑的白名單
  12. Zuul網關的兩種用法

    • service通過ribbon向eureka注冊,zuul通過serviceId來通過eureka找到服務

      zuul:
      	routes:
      		guestbook:
      			path: /**
      			serviceId: guestbook-service
      
    • Zuul通過uri進行http跳轉:適用於不用eureka作為注冊中心的情況

      zuul:
      	routes:
      		guestbook:
      			path: /**
      			uri: http://service:8080/guestbook/
      
  13. maven私服的作用

    • 公司的依賴統一管理,提供緩存,減少網絡傳輸
    • 制品倉庫(自己編寫的jar,可以由其他人訪問到)
  14. 如何搭建maven私服?(使用artifactory)

    • 使用docker直接搭建最簡單,命令如下:

      sudo docker run --name artifactory-oss-6.18.1 -p 8083:8081 docker.bintray.io/jfrog/artifactory-oss:6.18.1
      
    • 然后訪問localhost:8083 admin/password進入artifactory的UI界面

      • 建立遠程倉庫
      • 建立本地倉庫
      • 建立聚合遠程倉庫本地倉庫的虛擬倉庫
    • 使用Artifactory自動生成maven的setting.xml文件,替換本地 ~/.m2的setting.xml文件即可

  15. Snapshot版本和Release版本的區別?(使用artifactory)

    • Snapshot在maven中可以存在同一個版本號的多個不同時間戳的版本,相當於開發階段
    • Release版本(version不帶snapshot),同一個版本號在私服中只能存在一份,使用別人的jar包時盡量使用release版本的
  16. (使用artifactory)的倉庫結構圖

  17. 如何把本地的jar包發布到maven的私服?(使用artifactory)

    • 點擊虛擬倉庫的Set me up,里面提供了pom文件中的發布部分
    • 在本地pom文件中加入這部分即可
    • mvn depoly就可以發布到私服了
  18. 為什么使用Jenkins?

    • 軟件項目的統一自動化構建(統一意味着一切環境的一致性自動意味着可重復
    • 通過許多插件,可以方便的集成 代碼掃描 自動化測試 和 自動化部署的任務
  19. Jenkins的核心概念?

    • Project:項目,定義一個構建菜譜
    • Build:構建,利用Project來執行一次構建
    • Workspace:工作空間,構建是基於哪個工作目錄,存儲代碼和一些中間臨時文件
    • Credentials:憑據,一些敏感信息可以存儲在Jenkins,通過定義變量來獲取
  20. Jenkins持續集成使用pipeline流水線模式有什么好處?

    • pipeline as code:代碼(配置信息)可以存儲在git倉庫,如果jenkins服務器不可用,配置項就丟失了
    • 和第三方集成更容易(可以不依賴插件,直接使用接口調用)
  21. 你知道有哪些pipeline流水線模式的語法?

    • Scripted腳本式:可以使用Groovy腳本,比較靈活
    • Declarative聲明式:通過預定義的標簽進行結構化的編寫,功能受限但更加標准化
  22. Jenkins如何集成Artifactory?

    • 下載Jenkins Artifactory插件
    • 在Configure System中配置插件和相關Credential信息
    • 在流水線使用Atrifactory進行依賴下載和制品上傳
  23. Jenkins集成Jira的原理?

    Jenkins之所以需要集成Jira是因為,提交的構建在測試和Release經理的角度,都需要知道本次構建的修改對應的是Jira的哪個需求。

    Jenkins集成Jira的原理是:

    • 開發者在commit消息里增加jira的任務id
    • Jenkins可以在構建中自動創建Jira的鏈接
    • 測試可以在構建中方便的獲取需求相關信息
  24. Sonarqube是什么?

    • 功能:源代碼掃描工具,可以識別代碼的質量漏洞重復率等等,提升代碼質量
    • 原理:需要建立掃描規則庫,如果掃描過程中命中規則,則會生成一個issue,提示開發者進行修復。
  25. Jenkins和Sonarqube集成的原理圖,如何集成?

    • docker 運行一個Sonarqube的server
    • 創建項目,生成一個token
    • Jenkins腳本中需要傳遞token


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM