DevOps in 5GC - ianchen0119/Introduce-to-5GC GitHub Wiki

什麼是 DevOps?

DevOps 是結合 Develop 以及 Operations 的概念,將開發與維運整合在一塊,可提升專案的交付效率與服務能力,相較於傳統的作法,DevOps 有以下好處:

  • 更快的交付能力
  • 更好的容錯、除錯能力
  • 讓每一個程式碼的更動可以最快的整合進現有的生產環境中(不產生任何 side effect)
  • 降低同一個組織內跨部門的溝通成本 image

上圖取自 AWS 官方網站。

現今的軟體工程最常聽的名詞有:CI/CD、DevOps、Cloud Native...等等,但大家往往很難摸清楚它們到底在說什麼,甚至在 google 搜尋 DevOps 與 CI/CD 的時候會查到類似的解釋。就筆者不專業的角度來看,我認為 CI/CD 最強調的就是交付到客戶手上的速度(持續交付),為了達到這個目的,軟體專案能夠持續的整合新的功能、新的程式碼改動(code refactor)的能力就十分重要。再來是 DevOps,它涵蓋了 CI/CD 的概念,並且把更多的現實情境考慮進來(降低跨部門溝通成本),那些常見的 CI/CD、DevOps 工具集不過是為了實踐快速且持續交付的幫手,如果只是把這些東西都加入現有專案但是缺乏整合,那麼這些工具並不會為我們帶來太多的益處。

DevOps tools

除了上面提到的 CI/CD、DevOps,筆者會在這裡提到 Cloud Native 是因為時下 NFV 的技術正夯,在大家紛紛將 Network Function 從早期的黑盒子轉變成能夠跑在 PC 上的應用程式以後,部署 Network Function 的方式就變得十分多元化,包含:部署在公有雲/私有雲、個人工作站、甚至是樹莓派上。 考慮到核心網路在運作時可能會因為不同的乘載壓力需要引入相對應的解決辦法,3GPP 也提出了 Network Function Set 的部屬方式(Load balancer + multiple NFs),或是交由 k8s 做到動態的資源管理,這也讓 Network Function 的部署與開發更接近雲原生的概念。

image

上圖出自 SD Core Technical White Paper

參考上圖,這是 ONF 在 SD Core 白皮書中的 CI/CD pipeline 架構圖,透過 CI/CD Tool 測試並且產生 Docker image 放到私有的 container registry。接著再配合 docker-compose 或是 k8s 做到自動部署,部署完成的應用可以視情況用於 QA 測試/實際產品的發布,加快整個開發工作的整合效率。

IDE

  • VSCode

Task management

  • Jira
  • Trello
  • GitHub

CI/CD Tool

  • GitHub Actions
  • GitLab CI/CD
  • Drone CI
  • Circul CI
  • Jenkins

Containers

  • Docker
  • Docker-compose
  • Kubernetes

Monitor

1. Grafana

2. Google Analysis

Communication

  • Slack
  • Microsoft Teams

Test

Source Code Repository

  • GitHub
  • GitLab
  • Bitbucket