Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Continuous Delivery - 敏捷開發的最後一哩路

Laravel Conf Taiwan 2017 議程

  • Be the first to comment

Continuous Delivery - 敏捷開發的最後一哩路

  1. 1. Continuous Delivery 敏捷開發的最後⼀哩路 Miles @ LaravelConf Taiwan 2017 (2017/7/1)
  2. 2. About Me CURRENT Senior Developer @ 104 Corp. Volunteer @ DevOps Taiwan EXPERIENCE Speaker @ PHPConf 2016 TAG PHP, Docker, DevOps jangconan@gmail.com MilesChou
  3. 3. Outline • 什麼是 Continuous Delivery • 案例分享 • 總結
  4. 4. 什麼是 Continuous Delivery
  5. 5. Delivery?
  6. 6. 硬體的 Delivery 圖⽚來源:https://www.youtube.com/watch?v=RWlfzzQ-dkg
  7. 7. 軟體的 Delivery
  8. 8. Continuous?
  9. 9. App 的 CD
  10. 10. 開發⼈員的 CD
  11. 11. Scrum 的 CD 圖⽚來源:http://agilemanifesto.org/iso/zhcht/manifesto.html
  12. 12. LaravelConf 粉絲團的 CD
  13. 13. 我所知道的 CD
  14. 14. Developer Production Customer Feedback Backlog SSH
  15. 15. Continuous? Delivery?
  16. 16. Delivery
  17. 17. Continuous
  18. 18. Bug 常常出現
  19. 19. Developer Backlog Feedback Production Customer
  20. 20. Feedback Developer Production CustomerBacklog Lab Tester
  21. 21. 上線常常失敗
  22. 22. Feedback Production Customer Lab Tester Developer Backlog
  23. 23. Feedback Developer Production CustomerBacklog Lab Tester SysAdminSysAdmin
  24. 24. 上線不符合企劃需求
  25. 25. Feedback CustomerBacklog Tester Developer LabOperator ProductionOperator
  26. 26. Feedback CustomerBacklog Tester Developer LabOperator ProductionOperatorStagingSysAdmin Planner
  27. 27. 最後,流程變落落長
  28. 28. Feedback CustomerBacklog Tester Developer LabOperator ProductionOperatorStagingOperator Planner
  29. 29. 上線速度太慢
  30. 30. 先別提驗證了,你有聽過 CD 嗎︖
  31. 31. Developer Production
  32. 32. CD 不能解決問題 解決問題之後才能 CD
  33. 33. 問題 • 沒有測試就上線 • 沒有⾃動化上線 • 開發與上線的差異越來越⼤ • 新進⼈員難以了解專案全貌
  34. 34. 案例分享 - 會員中⼼ (既有專案) https://accounts.104.com.tw
  35. 35. 改造既有專案 • 整合 CI server • 寫測試與⽂件 • 寫建置與打包腳本 • 寫佈署與驗證腳本 • 打造接近線上環境的開發環境
  36. 36. CI ⼯具
  37. 37. CI ⼯具 • 從簡單、有效的驗證開始 • composer install • phpcs
  38. 38. 測試⼯具
  39. 39. 測試⼯具 • 先測試︖先重構︖ • 整合測試︖ Mock / Fake ︖
  40. 40. 各種腳本
  41. 41. 各種腳本 • build • package • clean • deploy • health-check
  42. 42. 環境建置⼯具
  43. 43. 環境建置⼯具 • 環境的依賴 • 規劃測試階段的服務
  44. 44. CD ⼯具 S3 CodeDeploy
  45. 45. Developer S3 CodeDeploy IDC Staging Production LabAgent Agent Agent
  46. 46. 打包腳本 .travis.yml (TravisCI)
  47. 47. 佈署與驗證腳本 appspec.yml (CodeDeploy)
  48. 48. Trigger Condition GitHub .travis.yml
  49. 49. Git Workflow (TBD)
  50. 50. Pull Request
  51. 51. 困境 • 技術包袱 • 跨團隊的溝通
  52. 52. 案例分享 - 全新專案x2 Resume API OpenJob API AWS IDC Common Service Database Direct Connect Internal Network
  53. 53. 開發框架與⼯具 Framework ORM Migration Console
  54. 54. 開發過程 • 導入 CI server • 導入單元測試與整合測試 • 導入 Docker 與 Migration 建置環境 • 使⽤ Console 與 Makefile 簡化複雜操作 • 撰寫開發⽤⽂件
  55. 55. Symfony Console
  56. 56. ⽂件撰寫 Guideline
  57. 57. 成果 • 測試+佈署時間 3min vs 1hr ~ 1week • 最常看⽂件反⽽是⾃⼰ • 建置測試環境簡單快速
  58. 58. Conclusion
  59. 59. 如何建置可 CD 的專案
  60. 60. Review 問題 • 沒有測試就上線 • 沒有⾃動化上線 • 開發與營運環境越來越遠 • 新進⼈員難以了解專案全貌
  61. 61. Bug 常常出現 • 盡可能提⾼測試的完整性 • 不把壞掉的程式分享給其他⼈
  62. 62. 上線常常失敗 • 寫佈署與驗證腳本,甚至是⾃動還原腳本 • 讓佈署變成很「平常」,也很安全的任務
  63. 63. 環境不⼀致 • 開發者不了解營運環境,要如何驗證︖ • 使⽤ Docker / Vagrant 同步環境
  64. 64. 將知識傳承下去 • 撰寫技術⽂件,讓任何⼈都能快速進入狀況 • 唯有每個成員都了解專案,才有可能加速開發
  65. 65. 問題 解決藥⽅ • 沒有測試就上線 寫測試 • 沒有⾃動化上線 寫腳本 • 開發與營運環境越來越遠 Infra. as Code • 新進⼈員難以了解專案全貌 寫⽂件
  66. 66. CD 到底有什麼好處 • 快速產⽣軟體價值 • 更快獲得使⽤者回饋 • ⼤幅降低佈署風險(當解決前述問題之後)
  67. 67. 那 CD 有什麼壞處 • 既有專案導入需要投資,且不保證成功 • 流程持續調整的過程,可能讓團隊無所適從
  68. 68. 參考資料
  69. 69. ⼯商服務
  70. 70. DevOps Culture Open Space 9/4~9/6 台大社科院 Hello! DevOps
  71. 71. 資料科學家
 機器學習
 ⾃自然語⾔言處理理 資料⼯工程師
 AWS, Spark
 Python, Scala Web ⼯工程師 Laravel, Node, React techjob@104.com.tw
  72. 72. 7/29 華山西五館
  73. 73. Q&A

×