企業導入
容器經驗分享與
開源技能
培養
Philipz (鄭淳尹)
2017-09-29
迎棧科技
Philipz (鄭淳尹)
Docker.Taipei 共同發起人
歐萊禮《Docker 錦囊妙計》譯者
碁峰《Docker入門與實戰》、
《Kubernetes使用指南》審譯者
2014 COSCUP/iThome Summit 講者
2015 Microsoft Azure 開發者大會 講者
2016 COSCUP Docker 進階工作坊
2016義守大學 2017逢甲大學Docker研習營
Docker 是什麼?
The Martix of Hell
Docker Hub
https://hub.docker.com/
Kubernetes - Helm
A Brief History of Containers
1979: Unix V7 2000: FreeBSD Jails
2005: Open VZ 2008: LXC
2013: LMCTFY 2013: Docker
2016: Windows Container
From: A Brief History of Containers: From 1970s chroot to
Docker 2016
A Brief History of Containers
1979: Unix V7 2000: FreeBSD Jails
2005: Open VZ 2008: LXC
2013: LMCTFY 2013: Docker
2016: Windows Container
From: A Brief History of Containers: From 1970s chroot to
Docker 2016 Windows Container
容器與虛擬化架構差異
Instance實例
Containers vs. VMs
虛擬化架構
容器化架構
容器+虛擬化架構
作業系統容器 vs. 應用程式容器
作業系統容器 vs. 應用程式容器
Container Principle
貨櫃交付原則
● One Container
● One Customer
● One Commodity
軟體貨櫃
● One Container
● One Process
我是航運大王麥
克連,不是終極
警探的麥克連!
I Have a Dream
“Write Onec, Run everywhere”
I Have a Dream
“Write Onec, Run everywhere”
導入容器技術的問題
導入的原因
1. 時間有限 - 五年內淘汰IBM大型主機
2. 能力有限 - 半數仍是傳統大型主機開發人員
3. 解決人的問題 - 逐步拉齊技術水平
4. 管理成本 - 系統作業時效縮短、自動化
5. 進而解決業務面問題
導入的優點
1. 單一責任 - 容器內、容器外
2. 避免 Dev (AP) 跟 Ops (SP) 對立
3. 持續整合 (CI)
4. 自動化流程
5. 微服務、無伺服器架構
6. 系統靈活彈性 (Infra. as Code)
Dev. be like...
When Ops. says:
You can not PASS!!!
進行的方式
Development
1. 內部分享
2. 任務編組
3. 新舊人員組合
4. 教育訓練 - Spring
5. 自主學習
6. Git 學習
7. 軟體工程
Operations
9. 系統架構調整
10. 單一登入(SSO)
11. 監控系統建置
a. System
b. Log collection
c. APM - DynaTrace
12. 容器協同運作平台
(Kubernetes)
容器系統架構規劃
現行架構圖
29
Corosync
Pacemaker
HAproxy
Docker
VM1
Corosync
Pacemaker
HAproxy
Docker
VM2
www.xxxxxx.gov.tw
Active Enable
互相偵測是否活著,
並決定由誰啟動對外連線。
負載平衡,平均分配給兩台
容器協同運作
Kubernetes
Docker Swarm
DC/OS
Rancher
Virtual Machine pool
系統靈活彈性
虛擬化伺服器就是軟體
快速驗證 POC
虛擬機重要資料存放
- SAN Storage (EMC)
- vSphere Docker Volume
奇谈怪论:从容器想到去IOE、去库存和独角兽
*業務系統
無伺服器
微服務架構
Kubernetes
基礎架構
即程式碼
容器式
設計
Auto DevOps
容器化的好處
1. 容器 = 抽象化的單位, 容器化 = 分工問題
2. 解決 JVM、Shared library 等問題
3. AP 只要專心寫 code, CI pipeline 會自動上版
4. Language independent
Java or .NET isn’t important.
Top-down Approach
單一責任
Top-down Approach
土木建築 - 逆打工法
台北101
System architecture
= Organizational architecture
大量自動化、系統人員減少
Conway's Law
DevOps in the Enterprise
Microservices AntiPatterns
Microservices in action
弯道超车:容器技术究竟为云计算带来了什么?
容器化技术构建一个“反脆弱”的交易系统
Open Architecture
容器在軟體開發上的整合
持續整合(Continuous Integration)
● 虛擬機方式
○ Jenkins
○ TravisCI
○ 舊式、肥大
● 容器方式
○ GitLab
○ CircleCI
○ 新式、輕量
解決軟體開發長久以來常見的痛
Docker更容易實現基礎架構程式化
GitHub
GitLab
Jenkins Registry
GitLab-Runner
GitLab-Runner
Container Development Flow
GitLab-Runner
Test Double 測試方法
新 Compose 測試方法
The Same
http://testdriven.io/part-four-intro/
End to End Tests
CI with Docker Compose is easy to implement.
From: Oreilly - Building Microservices
GitLab
Demo
未來容器技術的趨勢
Demo
+
$1700$1429
Microservices(微服務)
Microservices(微服務)
https://developer.ibm.com/code/journey/make-java-microservices-resilient-with-istio/
Container Stack
Microservices
Framework
Serverless
Framework
http://fission.io
Container Stack
Microservices
Framework
Serverless
Framework
http://fission.io
Azure Container Instances
延伸閱讀
開源技術的問題與經驗
權威偏誤 The Authority Bias
在面對權威時,一言一行不自覺就會照單全收。
軟技能(Soft-skill)
● 廣泛閱讀(哲學、經濟)
● 溝通技巧(包含跟異性)
● 業務能力(思考商機)
● 決策與判斷(投入成本)
● 運動與健康(飲食與健檢)
● 職涯規劃(興趣與金錢)
投標廠商案例
開源資訊網站
● http://linux.cn/
● https://www.infoq.com/
● http://dockone.io/
● IFTTT, Wachete
延伸閱讀
Time is more precious than gold.
Thank You

企業導入容器經驗分享與開源技能培養