Upgrade to Pro — share decks privately, control downloads, hide ads and more …

如何在微服務系統架構上導入 CI/CD

9fc5354f271d69e9a00f681658fadd66?s=47 Hash Lin
September 24, 2021

如何在微服務系統架構上導入 CI/CD

在這個議程中會以容器化微服務部署作為目標來討論該如何針對此架構進行 CI/CD 的導入與其方法,透過這個議程即便是完全不了解 CI/CD 的朋友也可以認識這個新朋友並且嘗試在工作上進行導入,在這個議程中您會學習到:

1. 什麼是 CI/CD ,為什麼我們需要 CI/CD
2. 如何透過 CD 將我們的程式部署上微服務系統架構
3. 導入 CI/CD 上面的 Best Practice

如果您是一位開發者,我想您或許已經知道 CI/CD 與微服務,您會知道如何優化您的 CI/CD pipeline ,並且建構更為強健的部署流程

如果您是一位學生,您可能還不知道什麼是 CI/CD 與微服務,透過這個議程您會初步了解什麼是 CI/CD 並且知道哪些平台可以使用,在未來您所開發的專案或是職場上面都會有些幫助,因為 CI/CD 可以說是一個必學技能。

如果您是一位公司的決策者且公司尚未導入 CI/CD ,您或許可以透過這個議程了解 CI/CD 可以為您公司解決什麼樣的問題,並且考慮是否要導入照個流程,相信對貴司來說都是相當有幫助的

9fc5354f271d69e9a00f681658fadd66?s=128

Hash Lin

September 24, 2021
Tweet

More Decks by Hash Lin

Other Decks in Technology

Transcript

  1. 如何在微服務系統架構上導入 CI/CD Hash Lin MOPCON 2021 商務部長 Lead Engineer @

    Askmiso
  2. Who am I # Askmiso Lead Engineer # Lead SRE

    & Backend # Remote work # MOPCON Organizer Hash Lin
  3. Agenda Why we need CI/CD How to deploy our service

    with CD Best practice of CI/CD 1 2 3
  4. CI CD Continuous Integration Continuous Deployment 名詞解釋

  5. Integration 檢查程式是否吻合專案文化 檢查程式是否吻合 Coding Style 執行單元測試 安裝專案所需套件 檢查程式是否有問題 手動進行程式測試 CI

  6. Continuous Integration

  7. 逐一推送上所有 Production 環境 部屬流程 抓取最新的程式碼 將程式碼進行安裝流程並且打包

  8. Deployment 手動執行部署流程 ◦ 打包程式上傳到 Server ◦ 透過 rsync 來進行同步 一鍵部署流程

    ◦ 撰寫 Shell Script ◦ 使用 Ansible CD
  9. 太多瑣事了

  10. 導入 CI/CD 解決了什麼問題 推送即檢查 減少人為介入 全自動化的流程

  11. 導入一二三 撰寫 CI config file 選擇 CI/CD 平台 給予 CI

    權限進行部署
  12. CI/CD Platform

  13. Github Action Github CI/CD platform open source action model Support

    service
  14. None
  15. None
  16. Gitlab CI Open source Self hosted Support service

  17. None
  18. None
  19. Gitlab x JIRA

  20. Gitlab x ClickUp

  21. Container Management

  22. Without container management Not easy to manage container Use docker

    run or docker-compose Not easy to scale
  23. Easy to transfer environment to different cloud Interface of infrastructure

    yaml or helm Kubernetes
  24. Nomad Jar / shell script ... Secret management: Vault Service

    Mesh: Consul Light
  25. Cloud solution Google Cloud Run Google App Engine Aws Elastic

    Container Service
  26. Deploy Process Push docker image to docker registry Authentication Update

    config of deployment Update Strategy
  27. Let Run It

  28. Implement CI/CD 決定每個 Stage 要做的事情 決定要在 CI 中跑哪些檢查 開始撰寫 Config

    File 放上 CI platform
  29. None
  30. Sending Merge Request Develop Review & Merge Request Run CI

    Pipeline 1. Install Project 2. Unit Test Build Docker Image Docker Hub / Private Docker Registry Continuous Integration Continuous Deployment
  31. Conclusion

  32. None
  33. Continuous Integration (CI) 安裝 套件相依性、應用程式 檢查 Coding Style 、 Syntax

    Error 測試 Unit Test 、 Integration Test 、 E2E Testing
  34. Continuous Integration (CI) 將繁瑣的事情全部自動化 可以更快速的發掘問題 更放心的提交程式碼

  35. Container Management Kubernetes Nomad

  36. Best Practice with CI/CD 敏感資訊不要放在 code base 中 善用 Environment

    Variable / dotenv 給 CI Runner 適量的權限
  37. Thank You!