2. Toggle Use Case
• Business Toggle:
๏ A/B Testing
• Low Risk Release and No Downtime
๏ Canary Release, Dark Launch
๏ DB/Schema Migration
• Why μService Need FF
๏ Decouple Feature Rollout from Code Deployment
10. What’s the common part of previous toggling
scenarios in order to achieve continuous delivery?
11. ‘‘Get good with build-flags and toggles’’
‘‘TBD is the best way to implement CI’’
‘‘TBD enable CD’’
~ Paul Hammant
12. ‘‘LinkedIn’s big switch to continuous deployment
has been linked to very concrete and visible
financial success…’’
~ Kevin Scott, the senior VP of engineering
16. Best Practices
• Feature Toggles have a cost
๏ More complex code, more testing, maintenance overhead
• Feature Toggles should be regarded as an investment
• Implement carefully to minimize complexity and technical debt
• Have a good overview over which feature toggles exist, for what
purpose, what state they are in and why
• Have a process for removing unnecessary feature toggles
๏ Most of them should be temporary
• Try to create mutually exclusive toggles and control number of toggles
ref: https://www.slideshare.net/TAlexanderLystad/feature-toggling-61333705
17. Here is the pre-commit verification to rescue!!
19. • Build from local diff, no branch created on git
server required
• Everyone loves fail in private, abandon your
revision and start over as wish
• Encourage to check in often
Pre-Commit Verification
21. Declarative Pipeline
Syntax Checking
• Immediate runtime syntax checking with explicit error messages.
• API endpoint for linting Jenkinsfiles.
• CLI command to lint Jenkinsfiles.
Docker Pipeline Plugin Integration
• Run all stages in a single container.
• Run each stage in a different container.
Easy Configuration
• Quickly define parameters for your pipeline.
• Quickly define environment variables and credentials for your pipeline.
• Quickly define options (such as timeout, retry, and build discarding) for your pipeline.
Conditional Actions
• Send notifications or take actions depending upon success or failure.
• Skip stages based on branches, environment, or other Boolean expressions.