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.
用 Docker 改善團隊合作模式
Bo-Yi Wu
2016.07.05
1
關於我
• 聯發科技工程師
• Node.js
• PHP
• Golang
• DevOps
2
https://blog.wu-boy.com/
DevOps
開發與維運
環境建置
3
Embedded System
BSP
(Board Support Package)
4
Porting
BuildPorting
Build
5
Docker 還沒出來以前
6
需要建置一台 Build Server
7
各專案所需要的工具不同
gcc version
8
5.x
4.x
3.x
9
各專案所需要的作業系統不同
Ubuntu version
10
12.04
14.04
15.04
11
不同作業系統不同套件管理
12
14.04
15.04
13
傳統架構缺陷
• 維護成本提高 (機器硬體維修汰換)
• 建置機器複雜 (雖然有寫 Shell Script)
• 24 小時 on call (公司隨時都有人加班)
• 系統資源常常不夠
14
換另一種架構 (省錢)
15
沒有共同的 Build Server
16
14.04
15.04
17
各專案維護 .vdi 檔案
18
缺陷
• 吃個人系統記憶體資源
• 切換多重專案浪費時間
• 浪費個人電腦硬碟空間
• 更新 vdi 檔案後,團隊全部要重抓
19
Docker 改變了生態
20
Docker 今年三歲
正式宣布支援 Mac 及 Windows
21
Dockerfile
Dockerfile
22
優勢
• 不需要額外的機器及人力維護成本
• 各專案維護 Dockerfile (可進行版本控制)
• 任何作業系統都可執行 (不需要VirtualBox)
23
來看 linkit smart 7688 開發版
24
25
linkit-smart-7688-golang
https://github.com/appleboy/linkit-smart-7688-golang
docker build –t 7688:v1 .
26
27
程式開發
frontend vs. backend
Single Page Application
28
http://blog.opus.com.pk/2015/09/04/importance-of-backend-developer/
29
VS.
30
開發環境部署
傳統前後端合作模式
31
Develop Server
(API)
Backend Developer
Backend Developer
Backend Developer
Frontend Developer
Frontend Developer
QA Engine...
如何部署 Develop Server
33
Develop
Commit
Testing
Deploy
單一環境部署
34
多重環境部署
Develop Branch
Staging Branch
Production Branch 35
缺陷
• 團隊非常依賴開發環境
• 不管前端後端都需要互相等待
• QA 需要等待前後端完成才可測試
• 多重分支讓開發者非常困擾
• 多一種環境伺服器成本提高
• 想搶先看其他 feature 分支功能呢?
36
如何用 Docker 改善合作模式
37
用 Docker 取代團隊開發環境
docker-compose.yml
38
個人開發環境
docker-compose.yml
39
RD
QA
PM
團隊成員必學
QA, PM, Sales, RD 40
Git
• 如何更新程式
– $ git pull origin master
• 如何切換分支
– $ git checkout –b xx origin/feature-xx
41
Docker
• 啟動 Service
– $ docker-compose -p $(PROJECT) up –d
• 關閉 Service
– $ docker-compose -p $(PROJECT) stop
• 移除 Service...
優勢
• 大家都是獨立運作,互不影響
• 減少 Develop 環境建置
• 降低建置環境門檻
• 可以到處 Demo
• QA 可以隨時進行測試
43
獨立運作
全部服務都跑在 localhost 127.0.0.1
QA RD PM
44
減少 Develop 環境建置
Staging Branch
Production Branch
從三種環境建置變成兩種 (Staging, Production) 45
降低建置環境門檻
一行指令搞定環境部署
docker-compose up -d 46
在客戶面前不怕 Demo 失敗
47
QA 可以隨時進行測試
Feature
Bugs
Success
Fail
透過 git checkout origin/xxxx 測試功能 48
用 Docker 跑測試
49
Docker + Jenkins
Node.js
50
API Server
OAuth Server
npm install && npm test
Node.js Testing
51
Postgres is not started
Docker 執行後
務必等相關 Container 啟動完成
52
https://blog.wu-boy.com/2016/06/server-monitoring-mysql-postgres-daemon-in-docker/53
54
Node.js Testing 問題
測試時間太長
55
npm install 太慢
用一行指令改善套件安裝速度
2 min -> 30 sec
56
一行指令
• tar xf ../module_cache.tar
• npm prune
• npm install
• tar cf ../module_cache.tar node_modules
57
Build
Docker
start
npm install
Database
migration
npm test
Coverage
Docker stop
Deploy
58
59
60
從圖像可以觀察每個
build 及 testing time
61
軟體開發流程
Git flow vs Github flow
可以從分支數量來區分
62
影響團隊部署還流程
Git flow vs Github flow
63
64
Git flow 部署流程 (用分支)
Staging
production 65
Github flow (Master + Tag)
Master
Tag: v1.0, v2.0 66
Git tips and flow
http://www.slideshare.net/appleboy/git-flow-61442567
67
找出一個方法適合團隊
Git flow vs Github flow
68
CI Server?
69
Docker 基礎介紹與實戰
http://www.slideshare.net/appleboy/docker-61214768
70
Any Question?
71
Upcoming SlideShare
Loading in …5
×

用 Docker 改善團隊合作模式

6,369 views

Published on

網站: http://devopssummit.ithome.com.tw/

Blog: https://blog.wu-boy.com/
Github: https://github.com/appleboy

Published in: Technology
  • Dating for everyone is here: ❤❤❤ http://bit.ly/2F4cEJi ❤❤❤
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Dating direct: ♥♥♥ http://bit.ly/2F4cEJi ♥♥♥
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

用 Docker 改善團隊合作模式

  1. 1. 用 Docker 改善團隊合作模式 Bo-Yi Wu 2016.07.05 1
  2. 2. 關於我 • 聯發科技工程師 • Node.js • PHP • Golang • DevOps 2 https://blog.wu-boy.com/
  3. 3. DevOps 開發與維運 環境建置 3
  4. 4. Embedded System BSP (Board Support Package) 4
  5. 5. Porting BuildPorting Build 5
  6. 6. Docker 還沒出來以前 6
  7. 7. 需要建置一台 Build Server 7
  8. 8. 各專案所需要的工具不同 gcc version 8
  9. 9. 5.x 4.x 3.x 9
  10. 10. 各專案所需要的作業系統不同 Ubuntu version 10
  11. 11. 12.04 14.04 15.04 11
  12. 12. 不同作業系統不同套件管理 12
  13. 13. 14.04 15.04 13
  14. 14. 傳統架構缺陷 • 維護成本提高 (機器硬體維修汰換) • 建置機器複雜 (雖然有寫 Shell Script) • 24 小時 on call (公司隨時都有人加班) • 系統資源常常不夠 14
  15. 15. 換另一種架構 (省錢) 15
  16. 16. 沒有共同的 Build Server 16
  17. 17. 14.04 15.04 17
  18. 18. 各專案維護 .vdi 檔案 18
  19. 19. 缺陷 • 吃個人系統記憶體資源 • 切換多重專案浪費時間 • 浪費個人電腦硬碟空間 • 更新 vdi 檔案後,團隊全部要重抓 19
  20. 20. Docker 改變了生態 20
  21. 21. Docker 今年三歲 正式宣布支援 Mac 及 Windows 21
  22. 22. Dockerfile Dockerfile 22
  23. 23. 優勢 • 不需要額外的機器及人力維護成本 • 各專案維護 Dockerfile (可進行版本控制) • 任何作業系統都可執行 (不需要VirtualBox) 23
  24. 24. 來看 linkit smart 7688 開發版 24
  25. 25. 25
  26. 26. linkit-smart-7688-golang https://github.com/appleboy/linkit-smart-7688-golang docker build –t 7688:v1 . 26
  27. 27. 27
  28. 28. 程式開發 frontend vs. backend Single Page Application 28
  29. 29. http://blog.opus.com.pk/2015/09/04/importance-of-backend-developer/ 29
  30. 30. VS. 30
  31. 31. 開發環境部署 傳統前後端合作模式 31
  32. 32. Develop Server (API) Backend Developer Backend Developer Backend Developer Frontend Developer Frontend Developer QA Engineer Deploy Deploy Deploy Testing API API 32
  33. 33. 如何部署 Develop Server 33
  34. 34. Develop Commit Testing Deploy 單一環境部署 34
  35. 35. 多重環境部署 Develop Branch Staging Branch Production Branch 35
  36. 36. 缺陷 • 團隊非常依賴開發環境 • 不管前端後端都需要互相等待 • QA 需要等待前後端完成才可測試 • 多重分支讓開發者非常困擾 • 多一種環境伺服器成本提高 • 想搶先看其他 feature 分支功能呢? 36
  37. 37. 如何用 Docker 改善合作模式 37
  38. 38. 用 Docker 取代團隊開發環境 docker-compose.yml 38
  39. 39. 個人開發環境 docker-compose.yml 39 RD QA PM
  40. 40. 團隊成員必學 QA, PM, Sales, RD 40
  41. 41. Git • 如何更新程式 – $ git pull origin master • 如何切換分支 – $ git checkout –b xx origin/feature-xx 41
  42. 42. Docker • 啟動 Service – $ docker-compose -p $(PROJECT) up –d • 關閉 Service – $ docker-compose -p $(PROJECT) stop • 移除 Service – $ docker-compose -p $(PROJECT) down 42
  43. 43. 優勢 • 大家都是獨立運作,互不影響 • 減少 Develop 環境建置 • 降低建置環境門檻 • 可以到處 Demo • QA 可以隨時進行測試 43
  44. 44. 獨立運作 全部服務都跑在 localhost 127.0.0.1 QA RD PM 44
  45. 45. 減少 Develop 環境建置 Staging Branch Production Branch 從三種環境建置變成兩種 (Staging, Production) 45
  46. 46. 降低建置環境門檻 一行指令搞定環境部署 docker-compose up -d 46
  47. 47. 在客戶面前不怕 Demo 失敗 47
  48. 48. QA 可以隨時進行測試 Feature Bugs Success Fail 透過 git checkout origin/xxxx 測試功能 48
  49. 49. 用 Docker 跑測試 49
  50. 50. Docker + Jenkins Node.js 50
  51. 51. API Server OAuth Server npm install && npm test Node.js Testing 51
  52. 52. Postgres is not started Docker 執行後 務必等相關 Container 啟動完成 52
  53. 53. https://blog.wu-boy.com/2016/06/server-monitoring-mysql-postgres-daemon-in-docker/53
  54. 54. 54
  55. 55. Node.js Testing 問題 測試時間太長 55
  56. 56. npm install 太慢 用一行指令改善套件安裝速度 2 min -> 30 sec 56
  57. 57. 一行指令 • tar xf ../module_cache.tar • npm prune • npm install • tar cf ../module_cache.tar node_modules 57
  58. 58. Build Docker start npm install Database migration npm test Coverage Docker stop Deploy 58
  59. 59. 59
  60. 60. 60
  61. 61. 從圖像可以觀察每個 build 及 testing time 61
  62. 62. 軟體開發流程 Git flow vs Github flow 可以從分支數量來區分 62
  63. 63. 影響團隊部署還流程 Git flow vs Github flow 63
  64. 64. 64
  65. 65. Git flow 部署流程 (用分支) Staging production 65
  66. 66. Github flow (Master + Tag) Master Tag: v1.0, v2.0 66
  67. 67. Git tips and flow http://www.slideshare.net/appleboy/git-flow-61442567 67
  68. 68. 找出一個方法適合團隊 Git flow vs Github flow 68
  69. 69. CI Server? 69
  70. 70. Docker 基礎介紹與實戰 http://www.slideshare.net/appleboy/docker-61214768 70
  71. 71. Any Question? 71

×