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.
從系統思考看 DevOps

以 microservices 為例例
Server Director @ Gogolook
葉秉哲 
DevOps: a system dynamics perspective
2017-10-26
Why this talk?

3 reasons…
❶
2015-06-10
40 min
http://bit.ly/microservices-intro
2015-06-10
40 min
https://www.slideshare.net/williamyeh/elements-of-cloudnative-apps
2017-06-23
2015-06-10 2017-06-23
20 min
https://www.slideshare.net/williamyeh/system-dynamics-model-of-microservices-adoption
2017-07...
❷
System thinking
Microservices
[中略略]
[後略略]
❸
TOC 觀點
Lean 觀點
http://school.soft-arch.net/blog/157917/devops-a-toc-perspective
DevOps Taiwan Meetup #2 (2016-08-17)
DevOp...
TOC 觀點
Lean 觀點
DevOps系統思考觀點
Today
TOC觀點
Lean 觀點
槓桿解
系統思考觀點
效率取向
因果取向
flow
???
POOGI
系統思考
狹義
廣義
以「系統」⾓角度思考
以「系統動⼒力力學」⾓角度思考
System dynamics
狹義
以「系統動⼒力力學」⾓角度思考
System dynamics
在⼤大多數的管理理情況中,真正的槓桿解在於
了了解動態性複雜 (dynamic complexity),

⽽而非細節性複雜 (detail complexity)。
TOC觀點
Lean 觀點
槓桿解
系統思考觀點
效率取向
因果取向
flow
system dynamics
POOGI
真實世界是由許多因果環組成的,但是我們
卻往往只看到線段。

使我們思考⽀支離破碎的原因之⼀一,是我們的
語⾔言。

如果要看整個系統的相互關聯聯,我們便便需要
相互關聯聯的語⾔言。
相互關聯聯的語⾔言
相互關聯聯的語⾔言
causal-loop diagram

(CLD)
stock and flow diagram

(SFD)
相互關聯聯的語⾔言
“Uncle Bob”
Chapter 3 to 6:
• Structured programming

• Object-oriented programming 

• Functional programming
Chapter 3 to 6:

• Structured programming is discipline imposed
upon direct transfer of control.

• Object-oriented progra...
Chapter 3 to 6:

• Structured programming is discipline imposed
upon direct transfer of control.

• Object-oriented progra...
Structured programming allows modules
to be recursively decomposed into
provable units […] using the restricted
control st...
Actions to restrict
control structures
• Structured programming is discipline imposed
upon direct transfer of control.
Act...
Actions to restrict
control structures
• Structured programming is discipline imposed
upon direct transfer of control.
Act...
兩兩種 CLD 圖⽰示法
Actions to restrict
control structures
• Structured programming is discipline imposed
upon direct transfer of control.
Act...
http://bit.ly/2gxQFSA
Actions to restrict
control structures
• Structured programming is discipline imposed
upon direct transfer of control.
Act...
http://bit.ly/2yXLVNk
Actions to restrict
control structures
• Structured programming is discipline imposed
upon direct transfer of control.
Act...
Actions to restrict
control structures
• Structured programming is discipline imposed
upon direct transfer of control.
Act...
http://bit.ly/2l4hjUx
Reluctance to tackle
the problem
Effort needed to
improve
engineering quality
of programs
Complexity of a single
programmin...
http://bit.ly/2zpyuCb
Actions to restrict
control structures
Actions to
decompose modules
Complexity of a single
programming unit
Effort needed t...
Actions to restrict
control structures
Actions to
decompose modules
Complexity of a single
programming unit
同
同
異異
異異
同
Re...
http://bit.ly/2zFox4i
在⼤大多數的管理理情況中,真正的槓桿解在於
了了解動態性複雜 (dynamic complexity),⽽而非
細節性複雜 (detail complexity)。
如果我們關注的只是細節性複雜,研究其中數
以千計的變數和複雜細節,實際上只會分...
Chapter 3 to 6:

• Structured programming is discipline imposed
upon direct transfer of control.

• Object-oriented progra...
Structured programming allows modules
to be recursively decomposed into
provable units […] using the restricted
control st...
OO is the ability, through the use
of polymorphism, to gain
absolute control over every
source code dependency in the
syst...
Well-structured applications will
be segregated into those
components that do not mutate
variables and those that do.

If ...
Complexity of a single
programming unit
Effort needed to
improve
engineering quality
of programs
Actions to impose
restrict...
Complexity of a single
programming unit
Effort needed to
improve
engineering quality
of programs
Actions to impose
restrict...
Dev velocity
Need for improving
architecture
Size of a single
service instance
Stability
# services
Need for proper
coordi...
從 系統思考 看 DevOps:

以 microservices 為例例
http://www.gartner.com/smarterwithgartner/top-10-technology-trends-impacting-infrastructure-operations/
http://www.gartner.com/smarterwithgartner/top-10-technology-trends-impacting-infrastructure-operations/
結論/
Microservices 很夯!
2015 2016
2016 2017
Hardware
Communication
App platform
Microservices Domain-driven design
DevOps:

Jenkins, GitLab, ELK, Prometheus…
Service ...
model around business concepts
adopt a culture of automation
hide internal implementation details
decentralize all the thi...
⼤大秘寶

One Piece
疑點/
很多⼈人嘗試導入 Microservices,
卻困難重重?
我的切入點/
System Dynamics Model of Microservices Adoption
⾯面對
microservices
導入策略略
#2
導入策略略
#1
?System Dynamics
意外的敵⼈人
Accidental Adversaries
捨本逐末
Shifting the Burden
Dev velocity
Need for improving
architecture
Size of a single
service instance
Stability
Actions to increase
operations effi...
Dev velocity
Need for improving
architecture
Size of a single
service instance
Stability
Actions to increase
operations effi...
Dev velocity
Need for improving
architecture
Size of a single
service instance
Actions to
split services
平衡迴路路;
穩定均衡態
Dev velocity
Need for improving
architecture
Size of a single
service instance
Stability
# services
Need for proper
coordi...
Dev velocity
Need for improving
architecture
Size of a single
service instance
Stability
# services
Need for proper
coordi...
Dev velocity
Need for improving
architecture
Size of a single
service instance
Stability
# services
Need for proper
coordi...
Dev velocity
Need for improving
architecture
Size of a single
service instance
Stability
# services
Need for proper
coordi...
Dev velocity
Need for improving
architecture
Size of a single
service instance
Stability
# services
Need for proper
coordi...
Dev velocity
Need for improving
architecture
Size of a single
service instance
Stability
# services
Need for proper
coordi...
Dev velocity
Need for improving
architecture
Size of a single
service instance
Stability
# services
Need for proper
coordi...
Need for improving
architecture
Size of a single
service instance
# services
Need for proper
coordination
Actions to
split...
Need for improving
architecture
Size of a single
service instance
# services
Need for proper
coordination
Actions to
split...
Need for improving
architecture
Size of a single
service instance
# services
Need for proper
coordination
Actions to
split...
Need for improving
architecture
Size of a single
service instance
# services
Need for proper
coordination
Actions to
split...
Stability
# services
Need for proper
coordination
Operation
complexity
Actions to
merge services
Stability
# services
Need for proper
coordination
Actions to
enhance
anti-fragility
Operation
complexity
Actions to
merge ...
林林⼦子裡有兩兩條分歧的路路,⽽而我⋯⋯
Stability
Actions to
enhance
anti-fragility
Actions to
merge services
?Two roads diverged in a wood, ...
Stability
# services
Need for proper
coordination
Actions to
enhance
anti-fragility
Desire to take
fundamental
solutions
O...
Stability
Actions to
enhance
anti-fragility
Desire to take
fundamental
solutions
Actions to
merge services
Near-
sightedne...
Stability
# services
Need for proper
coordination
Actions to
enhance
anti-fragility
Desire to take
fundamental
solutions
O...
# services
Need for proper
coordination
Desire to take
fundamental
solutions
Operation
complexity
Actions to
merge service...
# services
Need for proper
coordination
Desire to take
fundamental
solutions
Operation
complexity
Actions to
merge service...
Actions to
enhance
anti-fragility
Desire to take
fundamental
solutions
Near-
sightedness
逐末
Stability
# services
Need for ...
# services
Need for proper
coordination
Operation
complexity
Stability
Actions to
enhance
anti-fragility
Desire to take
fu...
Stability
# services
Need for proper
coordination
Actions to
enhance
anti-fragility
Desire to take
fundamental
solutions
O...
Stability
# services
Need for proper
coordination
Actions to
enhance
anti-fragility
Desire to take
fundamental
solutions
O...
Dev velocity
Need for improving
architecture
Size of a single
service instance
Stability
# services
Need for proper
coordi...
Dev velocity
Need for improving
architecture
Size of a single
service instance
Stability
# services
Need for proper
coordi...
意外的敵⼈人
Accidental Adversaries
捨本逐末
Shifting the Burden
成長上限
Limits to Growth
⽬目標侵蝕
Eroding Goals
惡惡性競爭
Escalation
富者愈富
Suc...
光是強調要有長遠深廣的觀點是不夠的,領會
基本的系統法則或是看出某⼀一問題背後的結構
也是不夠的。對學習型組織⽽而⾔言,只有當系統
基模 (archetype) 開始成為管理理者思考的⼀一部
分,系統思考才會發揮巨⼤大的功效。



熟習系統基...
從 系統思考 看 解法

以 microservices 為例例
意外的敵⼈人
Accidental Adversaries
捨本逐末
Shifting the Burden
捨本逐末
Shifting the Burden
意外的敵⼈人
Accidental Adversaries
Dev velocity
Need for improving
architecture
Size of a single
service instance
Stability
# services
Need for proper
coordi...
Desire to take
fundamental
solutions
Near-
sightedness
Actions to
merge services
Dev velocity
Need for improving
architect...
Dev velocity Stability
Actions to increase
operations efficiency
# unplanned work
意外的敵⼈人
Accidental Adversaries
Desire to take
fundamental
solutions
Near-
sightedness
Actions to
merge services
Dev velocity
Need for improving
architect...
Lean 觀點
http://school.soft-arch.net/blog/115652/devops-a-lean-perspective
Agile Meetup Taipei 2016五⽉月聚會 (2016-05-03)
TOC 觀...
Lean 觀點
http://school.soft-arch.net/blog/115652/devops-a-lean-perspective
Agile Meetup Taipei 2016五⽉月聚會 (2016-05-03)
TOC 觀...
TOC觀點
Lean 觀點
槓桿解
系統思考觀點
效率取向
因果取向
flow
system dynamics
POOGI
總結
⼤大秘寶

One Piece
意外的敵⼈人
Accidental Adversaries
捨本逐末
Shifting the Burden
嘗試導入前,請先做些系統思考
Dev velocity
Need for improving
architecture
Size of a single
service instance
Stability
# services
Need for proper
coordi...
知道何時該堅持,何時該妥協,
以及為何妥協。
光是強調要有長遠深廣的觀點是不夠的,領會
基本的系統法則或是看出某⼀一問題背後的結構
也是不夠的。對學習型組織⽽而⾔言,只有當系統
基模 (archetype) 開始成為管理理者思考的⼀一部
分,系統思考才會發揮巨⼤大的功效。



熟習系統基...
意外的敵⼈人
Accidental Adversaries
捨本逐末
Shifting the Burden
成長上限
Limits to Growth
⽬目標侵蝕
Eroding Goals
惡惡性競爭
Escalation
富者愈富
Suc...
LOOPY
LOOPY
如果只想讀兩兩本書:
LOOPY
如果只想讀⼀一本書:
從系統思考看 DevOps:以 microservices 為例 (DevOps: a system dynamics perspective)
從系統思考看 DevOps:以 microservices 為例 (DevOps: a system dynamics perspective)
從系統思考看 DevOps:以 microservices 為例 (DevOps: a system dynamics perspective)
從系統思考看 DevOps:以 microservices 為例 (DevOps: a system dynamics perspective)
從系統思考看 DevOps:以 microservices 為例 (DevOps: a system dynamics perspective)
從系統思考看 DevOps:以 microservices 為例 (DevOps: a system dynamics perspective)
從系統思考看 DevOps:以 microservices 為例 (DevOps: a system dynamics perspective)
Upcoming SlideShare
Loading in …5
×

從系統思考看 DevOps:以 microservices 為例 (DevOps: a system dynamics perspective)

Presented at DevOps Taiwan Meetup #8 (2017-10-26).
Recording (about 90 minutes): https://www.youtube.com/watch?v=zMeA3CjOi60

Introduction:
台灣第一次舉辦的 DevOpsDays Taipei,涵蓋許多精彩的文化與技術議題。

大會中,許多講者不約而同提到「系統思考」的概念,這是什麼?許多講者也提到 microservices 的重要性,但為什麼許多人想導入,卻鍛羽而歸?

此演講以系統思考的 causal loop diagram 角度,探討 microservices 常見的導入誤區:意外的敵人 (accidental adversaries) 及捨本逐末 (shifting the burden) ,並根據系統基模角度提出對應的槓桿解。

希望你聽了之後,能夠初步掌握系統思考的切入點,也對於 microservices 導入,多了一分把握。

提醒:建議先複習一下 Andrew Wu 在【DevOps Taiwan Meetup #4 (2017/02/22) - 這一夜讓我們來聊聊 Microservices】的內容:
- https://goo.gl/Drfeiw
- https://goo.gl/zXkESo

  • Be the first to comment

從系統思考看 DevOps:以 microservices 為例 (DevOps: a system dynamics perspective)

  1. 1. 從系統思考看 DevOps
 以 microservices 為例例 Server Director @ Gogolook 葉秉哲  DevOps: a system dynamics perspective 2017-10-26
  2. 2. Why this talk? 3 reasons…
  3. 3.
  4. 4. 2015-06-10 40 min http://bit.ly/microservices-intro
  5. 5. 2015-06-10 40 min https://www.slideshare.net/williamyeh/elements-of-cloudnative-apps 2017-06-23
  6. 6. 2015-06-10 2017-06-23 20 min https://www.slideshare.net/williamyeh/system-dynamics-model-of-microservices-adoption 2017-07-21 不過癮!
  7. 7.
  8. 8. System thinking Microservices
  9. 9. [中略略] [後略略]
  10. 10.
  11. 11. TOC 觀點 Lean 觀點 http://school.soft-arch.net/blog/157917/devops-a-toc-perspective DevOps Taiwan Meetup #2 (2016-08-17) DevOps Summit 2016 (2016-07-05) http://school.soft-arch.net/blog/115652/devops-a-lean-perspective Agile Meetup Taipei 2016五⽉月聚會 (2016-05-03) DevOps
  12. 12. TOC 觀點 Lean 觀點 DevOps系統思考觀點 Today
  13. 13. TOC觀點 Lean 觀點 槓桿解 系統思考觀點 效率取向 因果取向 flow ??? POOGI
  14. 14. 系統思考 狹義 廣義 以「系統」⾓角度思考 以「系統動⼒力力學」⾓角度思考 System dynamics
  15. 15. 狹義 以「系統動⼒力力學」⾓角度思考 System dynamics
  16. 16. 在⼤大多數的管理理情況中,真正的槓桿解在於 了了解動態性複雜 (dynamic complexity),
 ⽽而非細節性複雜 (detail complexity)。
  17. 17. TOC觀點 Lean 觀點 槓桿解 系統思考觀點 效率取向 因果取向 flow system dynamics POOGI
  18. 18. 真實世界是由許多因果環組成的,但是我們 卻往往只看到線段。
 使我們思考⽀支離破碎的原因之⼀一,是我們的 語⾔言。
 如果要看整個系統的相互關聯聯,我們便便需要 相互關聯聯的語⾔言。
相互關聯聯的語⾔言
  19. 19. 相互關聯聯的語⾔言 causal-loop diagram (CLD) stock and flow diagram (SFD)
  20. 20. 相互關聯聯的語⾔言
  21. 21. “Uncle Bob” Chapter 3 to 6: • Structured programming • Object-oriented programming • Functional programming
  22. 22. Chapter 3 to 6: • Structured programming is discipline imposed upon direct transfer of control. • Object-oriented programming is discipline imposed upon indirect transfer of control. • Functional programming is discipline imposed upon variable assignment. Each of these three paradigms has taken something away from us. Each restricts some aspect of the way we write code. None of them has added to our power or our capabilities. What we have learned over the last half-century is what not to do.
  23. 23. Chapter 3 to 6: • Structured programming is discipline imposed upon direct transfer of control. • Object-oriented programming is discipline imposed upon indirect transfer of control. • Functional programming is discipline imposed upon variable assignment. Each of these three paradigms has taken something away from us. Each restricts some aspect of the way we write code. None of them has added to our power or our capabilities. What we have learned over the last half-century is what not to do. 讓我們⽤用「相互關聯聯的語⾔言」 來來重新詮釋吧!
  24. 24. Structured programming allows modules to be recursively decomposed into provable units […] using the restricted control structures. • Structured programming is discipline imposed upon direct transfer of control.
  25. 25. Actions to restrict control structures • Structured programming is discipline imposed upon direct transfer of control. Actions to decompose modules Complexity of a single programming unit Effort needed to prove the correctness of a programs
  26. 26. Actions to restrict control structures • Structured programming is discipline imposed upon direct transfer of control. Actions to decompose modules Complexity of a single programming unit Effort needed to prove the correctness of a program 分解動作
  27. 27. 兩兩種 CLD 圖⽰示法
  28. 28. Actions to restrict control structures • Structured programming is discipline imposed upon direct transfer of control. Actions to decompose modules Effort needed to prove the correctness of a program 同 同 同 Same +
  29. 29. http://bit.ly/2gxQFSA
  30. 30. Actions to restrict control structures • Structured programming is discipline imposed upon direct transfer of control. Actions to decompose modules Complexity of a single programming unit 異異 異異 異異 Opposite -
  31. 31. http://bit.ly/2yXLVNk
  32. 32. Actions to restrict control structures • Structured programming is discipline imposed upon direct transfer of control. Actions to decompose modules Complexity of a single programming unit Effort needed to prove the correctness of a program 同 同 異異 異異 同 Same + 異異 Opposite -
  33. 33. Actions to restrict control structures • Structured programming is discipline imposed upon direct transfer of control. Actions to decompose modules Complexity of a single programming unit Effort needed to prove the correctness of a program 同 同 異異 異異 同 平衡迴路路 (Balancing loop) 穩定均衡態
  34. 34. http://bit.ly/2l4hjUx
  35. 35. Reluctance to tackle the problem Effort needed to improve engineering quality of programs Complexity of a single programming unit What if… reluctant? 同 同 同 滾雪球迴路路 (Reinforcing loop) 正增強 or 負增強
  36. 36. http://bit.ly/2zpyuCb
  37. 37. Actions to restrict control structures Actions to decompose modules Complexity of a single programming unit Effort needed to prove the correctness of a program 同 同 異異 異異 同 Reluctance to tackle the problem 同 同 合併來來看!
  38. 38. Actions to restrict control structures Actions to decompose modules Complexity of a single programming unit 同 同 異異 異異 同 Reluctance to tackle the problem 同 同 合併來來看! ⾯面對抉擇 應對策略略 #2 應對策略略 #1 ?System Dynamics Effort needed to prove the correctness of a program
  39. 39. http://bit.ly/2zFox4i
  40. 40. 在⼤大多數的管理理情況中,真正的槓桿解在於 了了解動態性複雜 (dynamic complexity),⽽而非 細節性複雜 (detail complexity)。 如果我們關注的只是細節性複雜,研究其中數 以千計的變數和複雜細節,實際上只會分散我 們的注意⼒力力,⽽而看不⾒見見那些主要的互動關係 及其他變化型態。
  41. 41. Chapter 3 to 6: • Structured programming is discipline imposed upon direct transfer of control. • Object-oriented programming is discipline imposed upon indirect transfer of control. • Functional programming is discipline imposed upon variable assignment. Each of these three paradigms has taken something away from us. Each restricts some aspect of the way we write code. None of them has added to our power or our capabilities. What we have learned over the last half-century is what not to do.
  42. 42. Structured programming allows modules to be recursively decomposed into provable units […] using the restricted control structures. Building on this foundation, disciplines such as structured analysis and structured design became popular in the late 1970s and throughout the 1980s. • Structured programming is discipline imposed upon direct transfer of control.
  43. 43. OO is the ability, through the use of polymorphism, to gain absolute control over every source code dependency in the system. It allows the architect to create a plugin architecture, in which modules that contain high-level policies are independent of modules that contain low-level details. • Object-oriented programming is discipline imposed upon indirect transfer of control.
  44. 44. Well-structured applications will be segregated into those components that do not mutate variables and those that do. If we have enough storage and enough processor power, we can make our applications entirely immutable—and, therefore, entirely functional. • Functional programming is discipline imposed upon variable assignment.
  45. 45. Complexity of a single programming unit Effort needed to improve engineering quality of programs Actions to impose restriction Each restricts some aspect of the way we write code. 同 異異 同 • Spaghetti • Dependency • Race condition 槓 桿 解 • Structured programming • OOP • FP
  46. 46. Complexity of a single programming unit Effort needed to improve engineering quality of programs Actions to impose restriction 為了了簡化視覺呈現,這次演講採⽤用的特殊箭頭 同 異異
  47. 47. Dev velocity Need for improving architecture Size of a single service instance Stability # services Need for proper coordination Actions to split services Actions to enhance anti-fragility Desire to take fundamental solutions Operation complexity Actions to merge services Near- sightedness 否則,畫⾯面會變成這樣⋯⋯ 同 同 同 同 同 同 同 同 異異 異異 異異 異異 異異 異異 異異 異異
  48. 48. 從 系統思考 看 DevOps:
 以 microservices 為例例
  49. 49. http://www.gartner.com/smarterwithgartner/top-10-technology-trends-impacting-infrastructure-operations/
  50. 50. http://www.gartner.com/smarterwithgartner/top-10-technology-trends-impacting-infrastructure-operations/
  51. 51. 結論/ Microservices 很夯!
  52. 52. 2015 2016
  53. 53. 2016 2017
  54. 54. Hardware Communication App platform Microservices Domain-driven design DevOps: Jenkins, GitLab, ELK, Prometheus… Service infra: ZooKeeper, etcd, Consul, Kafka… Server infra: Ansible, Docker, Kubernetes, Mesos, OpenStack, db… Microservice ecosystem: 4-layer model
  55. 55. model around business concepts adopt a culture of automation hide internal implementation details decentralize all the things deploy independently isolate failure highly observable Domain-driven design CI/CD: Jenkins, GitLab, Docker ecosystem… API-first design: RAML, Swagger, GraphQL… DevOps: Ansible, Docker, Kubernetes… Async choreography: ZooKeeper, etcd, Kafka… Anti-fragility: Akka, Netflix OSS… Monitoring: Prometheus, ELK…
  56. 56. ⼤大秘寶
 One Piece
  57. 57. 疑點/ 很多⼈人嘗試導入 Microservices, 卻困難重重?
  58. 58. 我的切入點/ System Dynamics Model of Microservices Adoption
  59. 59. ⾯面對 microservices 導入策略略 #2 導入策略略 #1 ?System Dynamics
  60. 60. 意外的敵⼈人 Accidental Adversaries 捨本逐末 Shifting the Burden
  61. 61. Dev velocity Need for improving architecture Size of a single service instance Stability Actions to increase operations efficiency # services Need for proper coordination Actions to split services Actions to enhance anti-fragility Desire to take fundamental solutions # unplanned work Operation complexity Actions to merge services Near- sightedness 意外的敵⼈人 Accidental Adversaries 捨本逐末 Shifting the Burden
  62. 62. Dev velocity Need for improving architecture Size of a single service instance Stability Actions to increase operations efficiency # services Need for proper coordination Actions to split services Actions to enhance anti-fragility Desire to take fundamental solutions # unplanned work Operation complexity Actions to merge services Near- sightedness Let’s Begin!
  63. 63. Dev velocity Need for improving architecture Size of a single service instance Actions to split services 平衡迴路路; 穩定均衡態
  64. 64. Dev velocity Need for improving architecture Size of a single service instance Stability # services Need for proper coordination Operation complexity Actions to merge services Actions to split services 平衡迴路路; 穩定均衡態
  65. 65. Dev velocity Need for improving architecture Size of a single service instance Stability # services Need for proper coordination Actions to split services Operation complexity Actions to merge services 雙・穩定均衡態?
  66. 66. Dev velocity Need for improving architecture Size of a single service instance Stability # services Need for proper coordination Actions to split services Operation complexity Actions to merge services
  67. 67. Dev velocity Need for improving architecture Size of a single service instance Stability # services Need for proper coordination Actions to split services Operation complexity Actions to merge services
  68. 68. Dev velocity Need for improving architecture Size of a single service instance Stability # services Need for proper coordination Actions to split services Operation complexity Actions to merge services 滾雪球迴路路; 正增強 or 負增強
  69. 69. Dev velocity Need for improving architecture Size of a single service instance Stability # services Need for proper coordination Actions to split services Operation complexity Actions to merge services
  70. 70. Dev velocity Need for improving architecture Size of a single service instance Stability # services Need for proper coordination Actions to split services Operation complexity Actions to merge services 意外的敵⼈人 Accidental Adversaries
  71. 71. Need for improving architecture Size of a single service instance # services Need for proper coordination Actions to split services Operation complexity Actions to merge services Dev velocity Stability 意外的敵⼈人 Accidental Adversaries
  72. 72. Need for improving architecture Size of a single service instance # services Need for proper coordination Actions to split services Operation complexity Actions to merge services Dev Ops 意外的敵⼈人 Accidental Adversaries 似曾相識?
  73. 73. Need for improving architecture Size of a single service instance # services Need for proper coordination Actions to split services Operation complexity Actions to merge services Coding Testing 意外的敵⼈人 Accidental Adversaries 似曾相識?
  74. 74. Need for improving architecture Size of a single service instance # services Need for proper coordination Actions to split services Operation complexity Actions to merge services Discovery Delivery 意外的敵⼈人 Accidental Adversaries 似曾相識?
  75. 75. Stability # services Need for proper coordination Operation complexity Actions to merge services
  76. 76. Stability # services Need for proper coordination Actions to enhance anti-fragility Operation complexity Actions to merge services model around business concepts adopt a culture of automation hide internal implementation details decentralize all the things deploy independently isolate failure highly observable
  77. 77. 林林⼦子裡有兩兩條分歧的路路,⽽而我⋯⋯ Stability Actions to enhance anti-fragility Actions to merge services ?Two roads diverged in a wood, and I…
  78. 78. Stability # services Need for proper coordination Actions to enhance anti-fragility Desire to take fundamental solutions Operation complexity Actions to merge services Near- sightedness
  79. 79. Stability Actions to enhance anti-fragility Desire to take fundamental solutions Actions to merge services Near- sightedness
  80. 80. Stability # services Need for proper coordination Actions to enhance anti-fragility Desire to take fundamental solutions Operation complexity Actions to merge services Near- sightedness
  81. 81. # services Need for proper coordination Desire to take fundamental solutions Operation complexity Actions to merge services Near- sightedness Stability Actions to enhance anti-fragility 捨本
  82. 82. # services Need for proper coordination Desire to take fundamental solutions Operation complexity Actions to merge services Near- sightedness Stability Actions to enhance anti-fragility model around business concepts adopt a culture of automation hide internal implementation details decentralize all the things deploy independently isolate failure highly observable Domain-driven design CI/CD: Jenkins, GitLab, Docker ecosystem… API-first design: RAML, Swagger… DevOps: Ansible, Docker, Kubernetes… Async choreography: ZooKeeper, etcd, Kafka… Anti-fragility: Akka, Netflix OSS… Monitoring: Prometheus, ELK… 撇 開 microsevices 不 論 , 試 問 : 這 些 是 本 來來 就 該 做 的 嗎 ? 本?
  83. 83. Actions to enhance anti-fragility Desire to take fundamental solutions Near- sightedness 逐末 Stability # services Need for proper coordination Operation complexity Actions to merge services
  84. 84. # services Need for proper coordination Operation complexity Stability Actions to enhance anti-fragility Desire to take fundamental solutions Actions to merge services Near- sightedness 耽溺 ㄉㄢ ㄋㄧˋ
  85. 85. Stability # services Need for proper coordination Actions to enhance anti-fragility Desire to take fundamental solutions Operation complexity Actions to merge services Near- sightedness 逐末 捨本 耽溺
  86. 86. Stability # services Need for proper coordination Actions to enhance anti-fragility Desire to take fundamental solutions Operation complexity Actions to merge services Near- sightedness 捨本逐末 Shifting the Burden
  87. 87. Dev velocity Need for improving architecture Size of a single service instance Stability # services Need for proper coordination Actions to split services Actions to enhance anti-fragility Desire to take fundamental solutions Operation complexity Actions to merge services Near- sightedness
  88. 88. Dev velocity Need for improving architecture Size of a single service instance Stability # services Need for proper coordination Actions to split services Actions to enhance anti-fragility Desire to take fundamental solutions Operation complexity Actions to merge services Near- sightedness 意外的敵⼈人 Accidental Adversaries 捨本逐末 Shifting the Burden
  89. 89. 意外的敵⼈人 Accidental Adversaries 捨本逐末 Shifting the Burden 成長上限 Limits to Growth ⽬目標侵蝕 Eroding Goals 惡惡性競爭 Escalation 富者愈富 Success to Successful 公有地悲劇 Tragedy of the Commons 飲鴆⽌止渴 Fixes that Fail 成長與投資不⾜足 Growth and Underinvestment
  90. 90. 光是強調要有長遠深廣的觀點是不夠的,領會 基本的系統法則或是看出某⼀一問題背後的結構 也是不夠的。對學習型組織⽽而⾔言,只有當系統 基模 (archetype) 開始成為管理理者思考的⼀一部 分,系統思考才會發揮巨⼤大的功效。
 
 熟習系統基模,是組織開始將系統觀點應⽤用於 實務的第⼀一步。
  91. 91. 從 系統思考 看 解法
 以 microservices 為例例
  92. 92. 意外的敵⼈人 Accidental Adversaries 捨本逐末 Shifting the Burden
  93. 93. 捨本逐末 Shifting the Burden
  94. 94. 意外的敵⼈人 Accidental Adversaries
  95. 95. Dev velocity Need for improving architecture Size of a single service instance Stability # services Need for proper coordination Actions to split services Actions to enhance anti-fragility Desire to take fundamental solutions Operation complexity Actions to merge services Near- sightedness 意外的敵⼈人 Accidental Adversaries 捨本逐末 Shifting the Burden
  96. 96. Desire to take fundamental solutions Near- sightedness Actions to merge services Dev velocity Need for improving architecture Size of a single service instance Stability # services Need for proper coordination Actions to split services Actions to enhance anti-fragility Operation complexity 捨本逐末 Shifting the Burden
  97. 97. Dev velocity Stability Actions to increase operations efficiency # unplanned work 意外的敵⼈人 Accidental Adversaries
  98. 98. Desire to take fundamental solutions Near- sightedness Actions to merge services Dev velocity Need for improving architecture Size of a single service instance Stability Actions to increase operations efficiency # services Need for proper coordination Actions to split services Actions to enhance anti-fragility # unplanned work Operation complexity
  99. 99. Lean 觀點 http://school.soft-arch.net/blog/115652/devops-a-lean-perspective Agile Meetup Taipei 2016五⽉月聚會 (2016-05-03) TOC 觀點 http://school.soft-arch.net/blog/157917/devops-a-toc-perspective DevOps Taiwan Meetup #2 (2016-08-17) DevOps Summit 2016 (2016-07-05) DevOps 類似的觀念念,其實去年年也講過⋯⋯
  100. 100. Lean 觀點 http://school.soft-arch.net/blog/115652/devops-a-lean-perspective Agile Meetup Taipei 2016五⽉月聚會 (2016-05-03) TOC 觀點 http://school.soft-arch.net/blog/157917/devops-a-toc-perspective DevOps Taiwan Meetup #2 (2016-08-17) DevOps Summit 2016 (2016-07-05) DevOps 類似的觀念念,其實去年年也講過⋯⋯
  101. 101. TOC觀點 Lean 觀點 槓桿解 系統思考觀點 效率取向 因果取向 flow system dynamics POOGI
  102. 102. 總結
  103. 103. ⼤大秘寶
 One Piece
  104. 104. 意外的敵⼈人 Accidental Adversaries 捨本逐末 Shifting the Burden 嘗試導入前,請先做些系統思考
  105. 105. Dev velocity Need for improving architecture Size of a single service instance Stability # services Need for proper coordination Actions to split services Actions to enhance anti-fragility Desire to take fundamental solutions Operation complexity Actions to merge services Near- sightedness 意外的敵⼈人 Accidental Adversaries 捨本逐末 Shifting the Burden
  106. 106. 知道何時該堅持,何時該妥協, 以及為何妥協。
  107. 107. 光是強調要有長遠深廣的觀點是不夠的,領會 基本的系統法則或是看出某⼀一問題背後的結構 也是不夠的。對學習型組織⽽而⾔言,只有當系統 基模 (archetype) 開始成為管理理者思考的⼀一部 分,系統思考才會發揮巨⼤大的功效。
 
 熟習系統基模,是組織開始將系統觀點應⽤用於 實務的第⼀一步。
  108. 108. 意外的敵⼈人 Accidental Adversaries 捨本逐末 Shifting the Burden 成長上限 Limits to Growth ⽬目標侵蝕 Eroding Goals 惡惡性競爭 Escalation 富者愈富 Success to Successful 公有地悲劇 Tragedy of the Commons 飲鴆⽌止渴 Fixes that Fail 成長與投資不⾜足 Growth and Underinvestment
  109. 109. LOOPY
  110. 110. LOOPY 如果只想讀兩兩本書:
  111. 111. LOOPY 如果只想讀⼀一本書:

×