YOU ARE DOWNLOADING DOCUMENT

Please tick the box to continue:

Transcript
Page 1: 用 Docker 改善團隊合作模式

1

用 Docker 改善團隊合作模式Bo-Yi Wu

2016.07.05

Page 2: 用 Docker 改善團隊合作模式

2

關於我• 聯發科技工程師• Node.js• PHP• Golang• DevOps

https://blog.wu-boy.com/

Page 3: 用 Docker 改善團隊合作模式

DevOps開發與維運

環境建置

3

Page 4: 用 Docker 改善團隊合作模式

Embedded SystemBSP

(Board Support Package)

4

Page 5: 用 Docker 改善團隊合作模式

Porting

BuildPorting

Build

5

Page 6: 用 Docker 改善團隊合作模式

6

Docker 還沒出來以前

Page 7: 用 Docker 改善團隊合作模式

7

需要建置一台 Build Server

Page 8: 用 Docker 改善團隊合作模式

8

各專案所需要的工具不同gcc version

Page 9: 用 Docker 改善團隊合作模式

5.x

4.x

3.x 9

Page 10: 用 Docker 改善團隊合作模式

10

各專案所需要的作業系統不同Ubuntu version

Page 11: 用 Docker 改善團隊合作模式

12.04

14.04

15.04 11

Page 12: 用 Docker 改善團隊合作模式

12

不同作業系統不同套件管理

Page 13: 用 Docker 改善團隊合作模式

14.04

15.0413

Page 14: 用 Docker 改善團隊合作模式

傳統架構缺陷• 維護成本提高 ( 機器硬體維修汰換 )• 建置機器複雜 ( 雖然有寫 Shell Script)• 24 小時 on call ( 公司隨時都有人加班 )• 系統資源常常不夠

14

Page 15: 用 Docker 改善團隊合作模式

15

換另一種架構 ( 省錢 )

Page 16: 用 Docker 改善團隊合作模式

16

沒有共同的 Build Server

Page 17: 用 Docker 改善團隊合作模式

14.04

15.0417

Page 18: 用 Docker 改善團隊合作模式

18

各專案維護 .vdi 檔案

Page 19: 用 Docker 改善團隊合作模式

19

缺陷• 吃個人系統記憶體資源• 切換多重專案浪費時間• 浪費個人電腦硬碟空間• 更新 vdi 檔案後,團隊全部要重抓

Page 20: 用 Docker 改善團隊合作模式

20

Docker 改變了生態

Page 21: 用 Docker 改善團隊合作模式

21

Docker 今年三歲正式宣布支援 Mac 及 Windows

Page 22: 用 Docker 改善團隊合作模式

22

Dockerfile

Dockerfile

Page 23: 用 Docker 改善團隊合作模式

23

優勢• 不需要額外的機器及人力維護成本• 各專案維護 Dockerfile ( 可進行版本控

制 )• 任何作業系統都可執行 ( 不需要

VirtualBox)

Page 24: 用 Docker 改善團隊合作模式

24

來看 linkit smart 7688 開發版

Page 25: 用 Docker 改善團隊合作模式

25

Page 26: 用 Docker 改善團隊合作模式

26

linkit-smart-7688-golanghttps://github.com/appleboy/linkit-smart-7688-golang

docker build –t 7688:v1 .

Page 27: 用 Docker 改善團隊合作模式

27

Page 28: 用 Docker 改善團隊合作模式

28

程式開發frontend vs. backend

Single Page Application

Page 29: 用 Docker 改善團隊合作模式

29http://blog.opus.com.pk/2015/09/04/importance-of-backend-developer/

Page 30: 用 Docker 改善團隊合作模式

30

VS.

Page 31: 用 Docker 改善團隊合作模式

31

開發環境部署傳統前後端合作模式

Page 32: 用 Docker 改善團隊合作模式

32

Develop Server(API)

Backend Developer

Backend Developer

Backend Developer

Frontend Developer

Frontend Developer

QA Engineer

Deploy

Deploy

DeployTesting

API

API

Page 33: 用 Docker 改善團隊合作模式

33

如何部署 Develop Server

Page 34: 用 Docker 改善團隊合作模式

34

Develop

Commit

Testing

Deploy

單一環境部署

Page 35: 用 Docker 改善團隊合作模式

35

多重環境部署

Develop Branch

Staging Branch

Production Branch

Page 36: 用 Docker 改善團隊合作模式

36

缺陷• 團隊非常依賴開發環境• 不管前端後端都需要互相等待• QA 需要等待前後端完成才可測試• 多重分支讓開發者非常困擾• 多一種環境伺服器成本提高• 想搶先看其他 feature 分支功能呢?

Page 37: 用 Docker 改善團隊合作模式

37

如何用 Docker 改善合作模式

Page 38: 用 Docker 改善團隊合作模式

用 Docker 取代團隊開發環境

docker-compose.yml38

Page 39: 用 Docker 改善團隊合作模式

39

個人開發環境

docker-compose.ymlRD

QA

PM

Page 40: 用 Docker 改善團隊合作模式

40

團隊成員必學

QA, PM, Sales, RD

Page 41: 用 Docker 改善團隊合作模式

41

Git

• 如何更新程式– $ git pull origin master

• 如何切換分支– $ git checkout –b xx origin/feature-xx

Page 42: 用 Docker 改善團隊合作模式

42

Docker• 啟動 Service– $ docker-compose -p $(PROJECT) up –d

• 關閉 Service– $ docker-compose -p $(PROJECT) stop

• 移除 Service– $ docker-compose -p $(PROJECT) down

Page 43: 用 Docker 改善團隊合作模式

43

優勢• 大家都是獨立運作,互不影響• 減少 Develop 環境建置• 降低建置環境門檻• 可以到處 Demo• QA 可以隨時進行測試

Page 44: 用 Docker 改善團隊合作模式

44

獨立運作

全部服務都跑在 localhost 127.0.0.1

QA RD PM

Page 45: 用 Docker 改善團隊合作模式

45

減少 Develop 環境建置

Staging Branch

Production Branch

從三種環境建置變成兩種 (Staging, Production)

Page 46: 用 Docker 改善團隊合作模式

46

降低建置環境門檻

一行指令搞定環境部署docker-compose up -d

Page 47: 用 Docker 改善團隊合作模式

47在客戶面前不怕 Demo 失敗

Page 48: 用 Docker 改善團隊合作模式

48

QA 可以隨時進行測試

Feature

Bugs

Success

Fail

透過 git checkout origin/xxxx 測試功能

Page 49: 用 Docker 改善團隊合作模式

49

用 Docker 跑測試

Page 50: 用 Docker 改善團隊合作模式

50

Docker + JenkinsNode.js

Page 51: 用 Docker 改善團隊合作模式

51

API Server

OAuth Server

npm install && npm test

Node.js Testing

Page 52: 用 Docker 改善團隊合作模式

52

Postgres is not startedDocker 執行後

務必等相關 Container 啟動完成

Page 54: 用 Docker 改善團隊合作模式

54

Page 55: 用 Docker 改善團隊合作模式

55

Node.js Testing 問題測試時間太長

Page 56: 用 Docker 改善團隊合作模式

56

npm install 太慢用一行指令改善套件安裝速度

2 min -> 30 sec

Page 57: 用 Docker 改善團隊合作模式

57

一行指令• tar xf ../module_cache.tar • npm prune• npm install• tar cf ../module_cache.tar

node_modules

Page 58: 用 Docker 改善團隊合作模式

58

Build

Docker start

npm install

Database migration

npm test

Coverage

Docker stop

Deploy

Page 59: 用 Docker 改善團隊合作模式

59

Page 60: 用 Docker 改善團隊合作模式

60

Page 61: 用 Docker 改善團隊合作模式

61

從圖像可以觀察每個 build 及 testing time

Page 62: 用 Docker 改善團隊合作模式

62

軟體開發流程Git flow vs Github flow

可以從分支數量來區分

Page 63: 用 Docker 改善團隊合作模式

63

影響團隊部署還流程Git flow vs Github flow

Page 64: 用 Docker 改善團隊合作模式

64

Page 65: 用 Docker 改善團隊合作模式

65

Git flow 部署流程 ( 用分支 )

Staging

production

Page 66: 用 Docker 改善團隊合作模式

66

Github flow (Master + Tag)

Master

Tag: v1.0, v2.0

Page 67: 用 Docker 改善團隊合作模式

67

Git tips and flowhttp://www.slideshare.net/appleboy/git-flow-61442567

Page 68: 用 Docker 改善團隊合作模式

68

找出一個方法適合團隊Git flow vs Github flow

Page 69: 用 Docker 改善團隊合作模式

69

CI Server?

Page 70: 用 Docker 改善團隊合作模式

70

Docker 基礎介紹與實戰http://www.slideshare.net/appleboy/docker-

61214768

Page 71: 用 Docker 改善團隊合作模式

71

Any Question?


Related Documents