持续交付软件之路 - continuous delivery

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

Upload: mingjin

Post on 08-May-2015

1.227 views

Category:

Technology


19 download

DESCRIPTION

This slides introduce the concept of continuous delivery and relevant strategies for SCM/dependency/release plan/testing/db/environment to archive

TRANSCRIPT

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

�(-,���

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

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

ě¿ÒxįĨó:

r©ûĭhě¿Òx

şĩƨ8ŒŒįƚŷ

XŲ«V

Kent Beck

XŲ«VëW

�������

����

����

XŲ«VëW

ÒxĔƌĊYgCk�ƾĎ

XŲ«VëW

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

XŲ«VëW

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

Ck�ƾĎ

XŲ«VëW

���řĈ�Á2QIJ2«V

XŲ«VëW

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

XŲ«VëW

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

XŲ«VëW

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

V@H

XŲ«VëW

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

xY�

XŲ«VëW

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

XŲ«VhŐƛzÚ¥

¬ħzÚ

ŢüÀÓq

XŲ«V�Ñ

ĩĦXŲ«V

� >C�â

� mſ�ƾĎ

� Ƹo�Á

� ōs�Ī

DŮĩ½

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

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

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

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

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

� JŸÂĥ=hQIJưı

� ŔƸ±fƤhŗŅ�Ɠ

� QIJďoÒx

Ŏ¼ĩ½

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

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

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

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

�����

����

���

���

���A

���B

ÜƗ��

õė�ÁÏįXŲ«V:

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

Ƽ�źƃã:

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"

Ƽ�źƃã:

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"

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

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

Ƽ�źƃã:

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"

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

Řöƕóƹ�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"

yļžahij�Mĵ

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

¥ÎŨśôƇĂƥ�â

Mary Poppendieck Tom Poppendieck

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

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

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

·ƠëŌ

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Ã�

MĵëĹš

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

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ħűŌ

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ą�

lũhMĵëĹšÇ�

MĵëĹšhåƷ6ź7

MĵëĹšhåƷ6w7

� ƢĢVź_wËƦ?

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

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

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

MĵëĹšĩ½

Customer

Delivery teamConstant flow of new features into production

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

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

XŲÃ�

� Õƫ�ČÕÔhxK�W

� ° ľƇĮčƸo¤

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

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

� þÁƧè

� 4��� 5�ÕxK

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

� XŲ�Ë

XŲÃ�ƋƔ

� �ÁƸo¤

� QIJPî

� >C�âPî

� ŻÝ�âPî

� ĸÐ�âPî

� ĞšPî

� ¥ÎĂƥ�â

ĩĦXŲÃ�

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

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

� �-�1����$�

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

T¾h�Á�Ñ

�判�品

面向技�面向��

功能��收�

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

性能�安全�

�元� �件�系��

QIJ�àƉPî

支撑�程

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î

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

ŃŬ�Ɲ

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

ŃŬ�Ɲ

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

ŃŬ�Ɲ

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

ŃŬ�Ɲ

ŃŬ�Ɲ

xK�Ɲ

łĽŬ�Ɲ

ōs�Ɲ

°ƪ�ƝŪĭ

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

[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

� �ħ[x�Á

� Êġß�Ưſ

� ų¥ŻÝ

ŻÝ�âPî

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ŻÝ

活�型

静止型慎用型

� ğvjŤh�ƾ

� ôƇƫ�8ôƇ�ĝ

� Ƽ�źÖh«V

ĸÐÙ�âzúĭ

ĸÐÙ�âPî

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

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

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

� XŲËūĸÐÙƫ�

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

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åƷ

Baseline Database

ĸÐÙXŲ«V

Baseline Database

ĸÐÙXŲ«V

Baseline Database

Apply Deltas

DB Metadata

ĸÐÙXŲ«V

Baseline Database

Apply Deltas

Fail Fast

DB Metadata

ĸÐÙXŲ«V

Baseline Database

Apply Deltas Test!

DB Metadata

ĸÐÙXŲ«V

Apply DeltasApply DeltasApply Deltas

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

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

xK8J�įêź_4Mĵ5

� xKëWLƭ

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

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

� DŸhĸÐB�Ɖĉż

� ėƣŖ¿Ž¬¹×

xK²£

�ŞƼjhxK{ĭįƖèĭ

ìƆĈ

őï�řĈ

Ƅƅ�řĈ

ĸÐÙ�řĈ

ÞíxK

v1.1 v1.1 v1.1

ìƆĈ

őï�řĈ

Ƅƅ�řĈ

ĸÐÙ�řĈ

ÞíxK

v1.1 v1.1 v1.1

ìƆĈ

őï�řĈ

Ƅƅ�řĈ

ĸÐÙ�řĈ

ÞíxK

v1.1 v1.1 v1.1

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

őï�řĈ

Ƅƅ�řĈ

ĸÐÙ�řĈ

ÞíxK

v1.1 v1.1 v1.1

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

őï�řĈ

Ƅƅ�řĈ

ĸÐÙ�řĈ

ÞíxK

v1.1 v1.1 v1.1

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

őï�řĈ

Ƅƅ�řĈ

ĸÐÙ�řĈ

ÞíxK

ÈĺđxK

ÈĺđxK

ÈĺđxK

� ÕŽËū9QIJ

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

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

É­xK

� JŸź�ĔŐV

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

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

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

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

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

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

� >C�â

� ƫ�

� QIJ

� �ÁëĹš

� ƸŖe

¨ZĠĦ®dð

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

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

� cuĸŜŊĶƈƁ�ŜŊ

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

ůĀ¤

¨ƈƏh¥ÎĂƥ

¥ÎĂƥ2MĵƸo¤

XŲ«Vƨŧ

XŲ«VƏ

OƎĴª

?�����