Continuous Delivery - Study Group
Opening
Rick Hwang @ 2018
1
2
3
Software Delivery
你平常怎麼使用別人的軟體?
4
http://cassandra.apache.org/download/
Cassandra:分散式 NoSQL Database
5
https://hub.docker.com/_/cassandra/
Cassandra:分散式 NoSQL Database
6
https://github.com/kubernetes/minikube
minikube: K8s 單機版
7
Apache Spark:分散式大數據分析
8
Software Delivery
Deployment
(Installation, Shipment)
9
Artifacts
(Version, Build, Packing)
Environments
(OS, Network, Security)
Provisioning / Orchestration
Configurations
(Profile, Settings, Key)
Hardware (c4.xlarge)
OS: CentOS / Ubuntu
PHP
Apache
(HTTP)
MySQL Client
ImageMagic
...
Wordpress
(CURRENT)
Provisioning
(Environment)
Storage
(Artifacts)
LATEST Image
(Artifacts)
Deployment
1. Build / Pack
Example: Wordpress
10
Configuration
Someone
(人 or 機器)
11
http://archive.apache.org/dist/cassandra/
12
https://github.com/aws/aws-cli/releases
13
Artifacts 是獨立的
需要的人都可以自行部署、測試
Artifacts 要有 CodeName + Version
14
Again
你平常怎麼使用別人的軟體?
15
16
Configuration
好的 Config 代表系統的 Interface,可以看出以下:
● 架構性
● 可測性
● 可維運
Cost、Provisioning、Observaiblity、Deployment
Testability、Functional and Non-Functional
Architectual、Security、Available、Reliability、Scalability、Performance
● 用途:團隊溝通使用,可以創造獨特的團隊文化
● 不要跟公司、產品名稱、部門 … 有直接關係
○ 也就是 namespace / package / module / id 不要有這些字
○ Source Code Repos 也不要用
● Code Name 舉例:
○ Android 用糖果代號
○ Elasticsearch Node Name 預設漫威電影人物名稱
○ Docker Container 亂數命名
○ 最近我都用 三體 相關的 XD
名字很重要 - 代號篇 (CodeName)
17
● 用途:業務行銷用
● 象徵性大於實質
● 跟程式邏輯無關
○ 不要放在程式裡面當 module, package, namespace 使用
● 舉例:
○ Windows Server 2016
○ iPhone X
○ macOS high sierra
名字很重要 - 產品名稱 (Product Name)
18
名字很重要
讓團隊有靈魂!
讓團隊有想像力
平衡團隊的溝通
19
App1
App2
App3
App4
Artifacts
(產出物)
Build
Build
Build
Build
App5
Build
Development Teams QA
Pipeline
OPS
Infra as Code
InstancesInfra
1. provision
2. deploy
LB, CDN,
Storage, RDBMS
...
master, or develop.
depends on QA
21
Source: Microservice Prerequisites
22
23
聽說這五本是
DevOps 五虎將?
24
25
https://pivotal.io/cloud-native
軟體交付的核心概念
26
● 任何人都可以部署任意版本,到特定環境
○ 任何人:開發、測試、支援、維運、業務、老闆、老闆的老闆、掃地的
○ 可以部署:be able to -- one button
○ 任意版本:Artifacts、Configure
○ 特定環境:包含 Prod、Staging、Test、Dev、Lab …
■ 有自己的名稱,包含 Infra,像是 DNS, Storage, Network ...
● 部署流水線 (Pipeline) 也要被測試、優化、監控、維護 (Ops
Pipeline)
○ 部署程式也是程式,要可以在 Local 開發、測試
○ Pipeline: Build, Provisioning, Deployment, AutoTasks (Test, Backup …)
任何人都可以
27
到特定環境 (包含建置)
部署任意版本
思 考
28
導入 CI/CD 的第一步
怎樣的 CI/CD 才夠 Quality?
如果要 Open Source,需要做什麼?
期待
29
● 反思 Continuous Delivery 這件事情的本質
● 反思自動化的本質與目的性
● 了解自己公司的現況,好的、不好的、適合的、不適合的,怎麼做比較適合?
● 透過討論、問問題、經驗分享
30
31
你平常怎麼使用別人的軟體?
32
你們公司的軟體怎麼給別人用?
歡迎參加 SRE 讀書會
DevOps Taiwan
SRE Taiwan、痞客邦 場地贊助
33
相關文章
34
● 你的靈魂 - 談產品名稱
● Version Control
● 導入 CI/CD 的第一步
● 怎樣的 CI/CD 才夠 Quality?
● Resource Provisioning and DevOps
● Software Development Lifecycle

Continuous Delivery - Opening