CONTINUOUS INTEGRATION
PRACTICES
24
■ One component, one
repository
■ Everyone commits to
trunk every day
■ No branches
Slide 25
Slide 25 text
25
CD Tools
IAAS
PAAS
Mobile Systems
Delivering
software
CONTINUOUS DELIVERY
IN DIVERSE CONTEXTS
Slide 26
Slide 26 text
CD IN PRACTICE
26
Slide 27
Slide 27 text
MANAGING LARGE CODE BASES
27
■ Dependency
management
■ Service Oriented
Architectures
■ Microservices
Slide 28
Slide 28 text
RELEASING INCOMPLETE WORK
28
[featureToggles]
wobblyFoobars: true
flightyForkHandles: false
Config File
... various UI elements
some.jsp
forkHandle =
(featureConfig.isOn(‘flightlyForkHandles)) ?
new FlightyForkHander(aCandle) :
new ForkHandler(aCandle)
other.java
Pattern: Feature toggles
Slide 29
Slide 29 text
GUIDELINES FOR FEATURE
TOGGLES
29
■ Use them only when
needed
■ Prefer feature hiding
■ Remove toggles
once feature is live
Slide 30
Slide 30 text
MAKING BIG CHANGES
30
Application
New
Library
Library
Pattern: Branch by abstraction
Slide 31
Slide 31 text
31
Interface implements
Application
New
Library
Library
MAKING BIG CHANGES
Slide 32
Slide 32 text
32
Interface implements
Application
New
Library
Library
MAKING BIG CHANGES
Slide 33
Slide 33 text
33
Interface implements
Application
New
Library
Library
MAKING BIG CHANGES
Slide 34
Slide 34 text
34
Interface implements
Application
New
Library
MAKING BIG CHANGES
Slide 35
Slide 35 text
35
Application
New
Library
MAKING BIG CHANGES
Slide 36
Slide 36 text
WRAPPING UP
36
Slide 37
Slide 37 text
WHAT WE COVERED
37
■Fast feedback, and short release cycles
■Keeping WIPs to a minimum
■If it’s hard, do it more often
■Trunk-based development
■The need for automation
■Feature toggles
■Branch by abstraction
Slide 38
Slide 38 text
SO MUCH MORE TO EXPLORE
38
■Deployment strategies
■Automated deployments
■Configuration management
■Infrastructure provisioning
■Cloud deployments
■Virtualization
■Tooling support