持续交付软件之路 - continuous delivery
DESCRIPTION
This slides introduce the concept of continuous delivery and relevant strategies for SCM/dependency/release plan/testing/db/environment to archiveTRANSCRIPT
�(-,���
Èù�!(- !,�(*$+�¯ƶŴĤ
&#"'�,!(- !,/(*$+��(&"&"' #"'�+"'�
DŮĩ½
� �Áĥ=JÿńÃŦdð
� ńÃċƒCkƐūľƇhńÃ�Á
� ińÃ�Áň��Ƒ³Ų�ƾ
� ¦´Ɵċ8�ÁDŰ\ƈV�ƲŁ
� ħÖƳBƵ¦�gċź�>C
� JŸÂĥ=hQIJưı
� ŔƸ±fƤhŗŅ�Ɠ
� QIJďoÒx
Ƽ�źƃã:
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"
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Ã�
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ą�
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ŲÃ�ƋƔ
� ��.���',����.�'�������*��%���-"%�*
� �� �����',�����-"%�
� �-�1����$�
� ���������$���'&�$�
T¾h�Á�Ñ
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
ŃŬ�Ɲ
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
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ŻÝ
活�型
静止型慎用型
ĸÐÙ�â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åƷ
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
ĸÐÙģ¯ƉƄƅģ¯�á