Top Banner
XŲÃě¿Ɵì 33ƆXŲÁ2«VgXŲÃ
89

持续交付软件之路 - Continuous Delivery

May 08, 2015

Download

Technology

mingjin

This slides introduce the concept of continuous delivery and relevant strategies for SCM/dependency/release plan/testing/db/environment to archive
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 持续交付软件之路 - Continuous Delivery

XŲÃ�ě¿Ɵì33ƆXŲ�Á2«VgXŲÃ�

Page 2: 持续交付软件之路 - Continuous Delivery

�(-,���

Èù�!(- !,�(*$+�¯ƶŴĤ

&#"'�,!(- !,/(*$+��(&"&"' #"'�+"'�

Page 3: 持续交付软件之路 - Continuous Delivery

ě¿ÒxįĨó:

Page 4: 持续交付软件之路 - Continuous Delivery

r©ûĭhě¿Òx

Page 5: 持续交付软件之路 - Continuous Delivery

şĩƨ8ŒŒįƚŷ

Page 6: 持续交付软件之路 - Continuous Delivery

XŲ«V

Kent Beck

Page 7: 持续交付软件之路 - Continuous Delivery

XŲ«VëW

�������

����

����

Page 8: 持续交付软件之路 - Continuous Delivery

XŲ«VëW

ÒxĔƌĊYgCk�ƾĎ

Page 9: 持续交付软件之路 - Continuous Delivery

XŲ«VëW

ÒxĔƌńÃdðg>CÙ

Page 10: 持续交付软件之路 - Continuous Delivery

XŲ«VëW

���řĈ»Qgdð�o8ĊYg

Ck�ƾĎ

Page 11: 持续交付软件之路 - Continuous Delivery

XŲ«VëW

���řĈ�Á2QIJ2«V

Page 12: 持续交付软件之路 - Continuous Delivery

XŲ«VëW

���řĈxKÕMĵ?8�ËūMĵ

Page 13: 持续交付软件之路 - Continuous Delivery

XŲ«VëW

���řĈ�>CÙhdðbĞGĊ

Page 14: 持续交付软件之路 - Continuous Delivery

XŲ«VëW

���řĈňƞōs�ÁV�8Ģ

V@H

Page 15: 持续交付软件之路 - Continuous Delivery

XŲ«VëW

ę��Áĥ=8���řĈ�ōs

xY�

Page 16: 持续交付软件之路 - Continuous Delivery

XŲ«VëW

ÒxĔƌ¬ħŭ�ĐŠ8IƑ_ńÃ

Page 17: 持续交付软件之路 - Continuous Delivery

XŲ«VhŐƛzÚ¥

Page 18: 持续交付软件之路 - Continuous Delivery

¬ħzÚ

Page 19: 持续交付软件之路 - Continuous Delivery

ŢüÀÓq

Page 20: 持续交付软件之路 - Continuous Delivery

XŲ«V�Ñ

Page 21: 持续交付软件之路 - Continuous Delivery

ĩĦXŲ«V

� >C�â

� mſ�ƾĎ

� Ƹo�Á

� ōs�Ī

Page 22: 持续交付软件之路 - Continuous Delivery

DŮĩ½

� �Áĥ=JÿńÃŦdð

� ńÃċƒCkƐūľƇhńÃ�Á

� ińÃ�Áň��Ƒ³Ų�ƾ

� ¦´Ɵċ8�ÁDŰ\ƈV�ƲŁ

� ħÖƳBƵ¦�gċź�>C

� JŸÂĥ=hQIJưı

� ŔƸ±fƤhŗŅ�Ɠ

� QIJďoÒx

Page 23: 持续交付软件之路 - Continuous Delivery

Ŏ¼ĩ½

� īƅćĿøÆĩ½8ęƫ�

� ĜœA¸�ƋƔ8Ɣē�Áĥ=

� ĜQIJƐūFñ8Ɣē�Áĥ=

� ĜƇEƀÍ�§ƙdð�Ş8Ɣē�Áĥ=

Page 24: 持续交付软件之路 - Continuous Delivery

�����

����

���

���

���A

���B

ÜƗ��

Page 25: 持续交付软件之路 - Continuous Delivery

õė�ÁÏįXŲ«V:

Page 26: 持续交付软件之路 - Continuous Delivery

XŲ«VįJįÏƺ�é:

Page 27: 持续交付软件之路 - Continuous Delivery

Ƽ�źƃã:

Iteration 0 1 2 3 4

Analysis + Design

Development

Testing + Showcase

Integration + QA Release and operation

Customer

Centralized QA IT Operations

"Agile" team

The "last mile"

Page 28: 持续交付软件之路 - Continuous Delivery

Ƽ�źƃã:

Iteration 0 1 2 3 4

Analysis + Design

Development

Testing + Showcase

Integration + QA Release and operation

Customer

Centralized QA IT Operations

"Agile" team

The "last mile"

��!���"�#���%����

Page 29: 持续交付软件之路 - Continuous Delivery

��!���"�#���%����

Ƽ�źƃã:

Iteration 0 1 2 3 4

Analysis + Design

Development

Testing + Showcase

Integration + QA Release and operation

Customer

Centralized QA IT Operations

"Agile" team

The "last mile"

�#������ �������$�

Page 30: 持续交付软件之路 - Continuous Delivery

Řöƕóƹ�4Ƽ�źƃã5:

Iteration 0 1 2 3 4

Analysis + Design

Development

Testing + Showcase

Integration + QA Release and operation

Customer

Centralized QA IT Operations

"Agile" team

The "last mile"

Page 31: 持续交付软件之路 - Continuous Delivery

yļžahij�Mĵ

Page 32: 持续交付软件之路 - Continuous Delivery

ÒxÇķNMĵgàĢS¥Î

Page 33: 持续交付软件之路 - Continuous Delivery

¥ÎŨśôƇĂƥ�â

Page 34: 持续交付软件之路 - Continuous Delivery

Mary Poppendieck Tom Poppendieck

你的� 将一行代�修改部署到�品境需要多���?你�是否可以重复、可靠地�行部署�程?

ƬĆħº6�1�%���"&�7

Page 35: 持续交付软件之路 - Continuous Delivery

Product opportunity assessment

Product discovery Development Final testing

and approval ReleaseProduct

planning and estimation

Elapsed time

Value-added time3 days 1 week 10 days 7 weeks 1 week 2

hours

1 week 10 days 3 days 5 days 2 days

·ƠëŌ

Page 36: 持续交付软件之路 - Continuous Delivery

Product opportunity assessment

Product discovery Development Final testing

and approval ReleaseProduct

planning and estimation

Elapsed time

Value-added time3 days 1 week 10 days 7 weeks 1 week 2

hours

1 week 10 days 3 days 5 days 2 days

·ƠëŌ

�ĝMĵëĹš8`v�ĝŹř9ƅ¢·ƠhÃ�

Page 37: 持续交付软件之路 - Continuous Delivery

MĵëĹš

ě¿`>C×ƦÙgÕ�ƾhě¿33?Û�Á2»R2QIJ2Mĵ2xKiƛ�ëW

Page 38: 持续交付软件之路 - Continuous Delivery

Delivery team Version control Build & unit tests

Automated acceptance tests

User acceptance tests

Release

Check in

Feedback

Trigger

Check in

Feedback

Trigger

Trigger

Check inTrigger

Trigger

ApprovalApproval

Feedback

Feedback

FeedbackFeedback

MĵëĹšhħűŌ

Page 39: 持续交付软件之路 - Continuous Delivery

Commit stageCompileUnit testAnalysis

Build installers

Acceptance test stage

User acceptance

testing

Performance testing

Production

Increasing confidence in build's production readiness

Environments become more production-like

Faster feedback

MĵëĹšhą�

Page 40: 持续交付软件之路 - Continuous Delivery

lũhMĵëĹšÇ�

Page 41: 持续交付软件之路 - Continuous Delivery

MĵëĹšhåƷ6ź7

Page 42: 持续交付软件之路 - Continuous Delivery

MĵëĹšhåƷ6w7

Page 43: 持续交付软件之路 - Continuous Delivery

� ƢĢVź_wËƦ?

� tJʼn¥ÎīƅŊźMĵ{ĭ

� õ_F�pŸæ®Ì�ëĹš

� ƢŸƇ¥Åĥ=8æ®ŇơëĹš

MĵëĹšĩ½

Page 44: 持续交付软件之路 - Continuous Delivery

Customer

Delivery teamConstant flow of new features into production

� ě¿ĬƩ\ƈÕÃ�ƲŁ

� <ƘŹřŮŸËūxK8v~Ɛŕƍķ

XŲÃ�

Page 45: 持续交付软件之路 - Continuous Delivery

� Õƫ�ČÕÔhxK�W

� ° ľƇĮčƸo¤

� ° ľƇnŚýĚ>C�â

� ńċČăy»QēōsŋØhĮč

� þÁƧè

� 4��� 5�ÕxK

� Ã��Wįõ��ņhƓĕ

� XŲ�Ë

XŲÃ�ƋƔ

Page 46: 持续交付软件之路 - Continuous Delivery

� �ÁƸo¤

� QIJPî

� >C�âPî

� ŻÝ�âPî

� ĸÐ�âPî

� ĞšPî

� ¥ÎĂƥ�â

ĩĦXŲÃ�

Page 47: 持续交付软件之路 - Continuous Delivery

� ��.���',����.�'�������*��%���-"%�*

� �� �����',�����-"%�

� �-�1����$�

� ���������$���'&�$�

T¾h�Á�Ñ

Page 48: 持续交付软件之路 - Continuous Delivery

�判�品

面向技�面向��

功能��收�

功能演示探索性�可用性�

性能�安全�

�元� �件�系��

QIJ�àƉPî

支撑�程

Page 49: 持续交付软件之路 - Continuous Delivery

P1 P2

G2 G3G1 G4

P3 P4 P5

G5 G6

B1 B2

G1

G1

P1

P1B1

P2

B1

P1-2

G2

G2

P3

G2

P3

B2

P4

B2

G3

P3G3

G3

P4

P4 P5

P4-5

G4

G4 G5 G6

P2

Professor Plum

Reverend Green

Mainline

P1 P2

G2G1

B1

B1

B1

P1-2

G1-2

G3 G4

P4

B2

P5

G5 G6

B2

P3-4

G3

B2

P3

Professor Plum

Reverend Green

Mainline

G1-6

P1-5

P1-5

G1-6

>C�âPî

Page 50: 持续交付软件之路 - Continuous Delivery

P1 P2

G2G1

B1

B1

B1

P1-2

G1-2

G3 G4

P4

B2

P5

G5 G6

B2

P3-4

G3

B2

P3

Professor Plum

Reverend Green

Mainline

ŃŬ�Ɲ

Page 51: 持续交付软件之路 - Continuous Delivery

P1 P2

G2G1

B1

B1

B1

P1-2

G1-2

G3 G4

P4

B2

P5

G5 G6

B2

P3-4

G3

B2

P3

Professor Plum

Reverend Green

Mainline

G1-6

P1-5

P1-5

G1-6

ŃŬ�Ɲ

Page 52: 持续交付软件之路 - Continuous Delivery

P1 P2

G2G1

B1

B1

B1

P1-2

G1-2

G3 G4

P4

B2

P5

G5 G6

B2

P3-4

G3

B2

P3

Professor Plum

Reverend Green

Mainline

G1-6

P1-5

P1-5

G1-6

ŃŬ�Ɲ

Page 53: 持续交付软件之路 - Continuous Delivery

P1 P2

G2G1

B1

B1

B1

P1-2

G1-2

G3 G4

P4

B2

P5

G5 G6

B2

P3-4

G3

B2

P3

Professor Plum

Reverend Green

Mainline

G1-6

P1-5

P1-5

G1-6

ŃŬ�Ɲ

Page 54: 持续交付软件之路 - Continuous Delivery

ŃŬ�Ɲ

xK�Ɲ

łĽŬ�Ɲ

ōs�Ɲ

°ƪ�ƝŪĭ

Page 55: 持续交付软件之路 - Continuous Delivery

P1 P2

G2 G3G1 G4

P3 P4 P5

G5 G6

B1 B2

G1

G1

P1

P1B1

P2

B1

P1-2

G2

G2

P3

G2

P3

B2

P4

B2

G3

P3G3

G3

P4

P4 P5

P4-5

G4

G4 G5 G6

P2

Professor Plum

Reverend Green

Mainline

Ư�Òx2XŲ«V

Page 56: 持续交付软件之路 - Continuous Delivery

[featureToggles]wobblyFoobars: trueflightyForkHandles: false

Config File

<toggle name=wobblyFoobars> ... various UI elements</toggle>

some.jsp

forkHandle = (featureConfig.isOn(‘flightlyForkHandles)) ? new FlightyForkHander(aCandle) : new ForkHandler(aCandle)

other.java

ŃŬÒ�6���,-*��,( %�7

Page 57: 持续交付软件之路 - Continuous Delivery

� �ħ[x�Á

� Êġß�Ưſ

� ų¥ŻÝ

ŻÝ�âPî

Page 58: 持续交付软件之路 - Continuous Delivery

CDS pricing library

Framework

1.3.1

2.2.12

Pricing engine

2.2.13

1.3.2

1.0.3

1.0.4

Framework

CDS pricing library

1.3.1

2.2.12

1.0.3

Pricing engine

fluid

static

ƻ¿>CŻÝ

活�型

静止型慎用型

Page 59: 持续交付软件之路 - Continuous Delivery

� ğvjŤh�ƾ

� ôƇƫ�8ôƇ�ĝ

� Ƽ�źÖh«V

ĸÐÙ�âzúĭ

Page 60: 持续交付软件之路 - Continuous Delivery

ĸÐÙ�âPî

� ĸÐÙŭ�ÄC¤8>C�â

� ĸÐÙŕ¡ĸÐÙģ¯ƊĸÐH

� ƖèEťţhĸÐÙĉżÄC

� XŲËūĸÐÙƫ�

� ÂĸÐÙĉżƉƄƅģ¯�á8ę�0)�'�9�(',*��,úĭ

Page 61: 持续交付软件之路 - Continuous Delivery

001_create_initial_tables.sql:

CREATE TABLE customer (id BIGINT GENERATED BY DEFAULT AS IDENTITY (START WITH 1) PRIMARY KEY,firstname VARCHAR(255),lastname VARCHAR(255)

);

002_add_customer_date_of_birth.sql

ALTER TABLE customer ADD COLUMN dateofbirth DATETIME;

--//@UNDO

ALTER TABLE customer DROP COLUMN dateofbirth;

ĸÐÙģ¯ÄChåƷ

Page 62: 持续交付软件之路 - Continuous Delivery

Baseline Database

ĸÐÙXŲ«V

Page 63: 持续交付软件之路 - Continuous Delivery

Baseline Database

ĸÐÙXŲ«V

Page 64: 持续交付软件之路 - Continuous Delivery

Baseline Database

Apply Deltas

DB Metadata

ĸÐÙXŲ«V

Page 65: 持续交付软件之路 - Continuous Delivery

Baseline Database

Apply Deltas

Fail Fast

DB Metadata

ĸÐÙXŲ«V

Page 66: 持续交付软件之路 - Continuous Delivery

Baseline Database

Apply Deltas Test!

DB Metadata

ĸÐÙXŲ«V

Apply DeltasApply DeltasApply Deltas

Page 67: 持续交付软件之路 - Continuous Delivery

app v230compatible with db

v14

DB version

15

DB version

14

app v205compatible with db

v13 and v14

app v234compatible with db

v14

app v241compatible with db

v14 and 15

DB version

13

app v248compatible with db

v15

Time

app v205deployed

migratedb to v14

app v230deployed

app v234deployed

app v234deployed

app v248deployed

migratedb to v15

ĸÐÙģ¯ƉƄƅģ¯�á

Page 68: 持续交付软件之路 - Continuous Delivery

xK8J�įêź_4Mĵ5

Page 69: 持续交付软件之路 - Continuous Delivery

� xKëWLƭ

� ę�tƄƅŜŊƉćŻÝ�řòŵQIJ

� ¶ęxKĥ=8ę�¦�§ŭ�ŗŅ

� DŸhĸÐB�Ɖĉż

� ėƣŖ¿Ž¬¹×

xK²£

Page 70: 持续交付软件之路 - Continuous Delivery

�ŞƼjhxK{ĭįƖèĭ

Page 71: 持续交付软件之路 - Continuous Delivery

ìƆĈ

őï�řĈ

Ƅƅ�řĈ

ĸÐÙ�řĈ

ÞíxK

Page 72: 持续交付软件之路 - Continuous Delivery

v1.1 v1.1 v1.1

ìƆĈ

őï�řĈ

Ƅƅ�řĈ

ĸÐÙ�řĈ

ÞíxK

Page 73: 持续交付软件之路 - Continuous Delivery

v1.1 v1.1 v1.1

ìƆĈ

őï�řĈ

Ƅƅ�řĈ

ĸÐÙ�řĈ

ÞíxK

Page 74: 持续交付软件之路 - Continuous Delivery

v1.1 v1.1 v1.1

v1.2 v1.2 v1.2ìƆĈ

őï�řĈ

Ƅƅ�řĈ

ĸÐÙ�řĈ

ÞíxK

Page 75: 持续交付软件之路 - Continuous Delivery

v1.1 v1.1 v1.1

v1.2 v1.2 v1.2ìƆĈ

őï�řĈ

Ƅƅ�řĈ

ĸÐÙ�řĈ

ÞíxK

Page 76: 持续交付软件之路 - Continuous Delivery

v1.1 v1.1 v1.1

v1.2 v1.2 v1.2ìƆĈ

őï�řĈ

Ƅƅ�řĈ

ĸÐÙ�řĈ

ÞíxK

Page 77: 持续交付软件之路 - Continuous Delivery

ÈĺđxK

Page 78: 持续交付软件之路 - Continuous Delivery

ÈĺđxK

Page 79: 持续交付软件之路 - Continuous Delivery

ÈĺđxK

� ÕŽËū9QIJ

� |ŗ\âÿçÕŽƮLƖµ

� tƈƴ÷;Ʊũě¿§ƙ��8ÕŽƂĚƸoģ¯

Page 80: 持续交付软件之路 - Continuous Delivery

É­xK

� JŸź�ĔŐV

� Ƅ�ƽųÌ�ŶƜhÉ­xKëW

� ŻĒŮŸƒIJƐū¥ÎÌ�QIJ

� Ƈħ�8¦�į��hPî

� Ƈħ�8}Ěŝź_>CxK��İ

Page 81: 持续交付软件之路 - Continuous Delivery

ę�ƇĔÂźŀ�řĈĖY]ŏ

uUħºāÿ�ƫŦ^Áźŀ:

Page 82: 持续交付软件之路 - Continuous Delivery

� >C�â

� ƫ�

� QIJ

� �ÁëĹš

� ƸŖe

¨ZĠĦ®dð

Page 83: 持续交付软件之路 - Continuous Delivery

� ^ÁàSĄ¥ÎhQIJ¥Î8�ÕIxhQIJ

� �Ťäƅ²Ļÿç8<ŮÜĘ

� cuĸŜŊĶƈƁ�ŜŊ

� )-))�,��!����� *�',i�Ñ

ůĀ¤

Page 84: 持续交付软件之路 - Continuous Delivery

¨ƈƏh¥ÎĂƥ

Page 85: 持续交付软件之路 - Continuous Delivery

¥ÎĂƥ2MĵƸo¤

Page 86: 持续交付软件之路 - Continuous Delivery

XŲ«Vƨŧ

Page 87: 持续交付软件之路 - Continuous Delivery

XŲ«VƏ

Page 88: 持续交付软件之路 - Continuous Delivery

OƎĴª

Page 89: 持续交付软件之路 - Continuous Delivery

?�����