3. ➔ Social Casino Startup
➔ Web and Mobile
➔ 250K DAU
➔ ~20 Technical Staff
➔ No QA
@Plumbee_Games
http://www.plumbee.com
Engineering Manager at Plumbee Ltd
@mserranom
miguel@plumbee.com
5. Mission + People
BUILD TEST DEPLOY
Any organisation’s pipeline is shaped by:
● The requirements to achieve its mission
● The views of the team on Software Development
11. Trunk vs Branching
● Fast
● Minimises merge pain
● Old Fashioned
● Safe
● Asynchronous
● Git is cool!
12. Trunk
“The most direct way to improve as a
software developer is to be absolutely fearless
when it comes to changing your code”
Jeff Atwood
Stack Exchange/Discourse founder
13. Trunk
“Don’t be scared of changing your code.
Pave your way to not to break things”
Miguel Serrano
The guy talking right now
18. Versioning
Rules
● Every artifact is assigned a new version at build time
● Every artifact gets its dependencies versions updated to
the latest version in every build
● Every artifact is ready to be deployed
JAR
1.0
WAR
1.4
JAR
1.4
28. Build Explosion!
#Builds grow exponentially when the graph grows
...but computing power is cheap (linux)
Option: ignore intermediate results
… while wasting resources
Test
#1
#2
#3
the only one with
changeset applied to all
nodes
29. #Builds
B
C
D
C
A
WAR Test
● Join: Build doesn’t start until all the previous one have
succeeded
● #Build = #Modules
● Test runs once per changeset
34. BUILD TEST STAGING PRODUCTION
Continuous Delivery
BUILD TEST PRODUCTION
Continuous Deployment
35. BUILD TEST
PRODUCTION
DEPLOY
RELEASE
Release and Deploy are decoupled
● Changes in Production are incremental -> Less risky
● Bug Fixes are the sole responsibility of the Engineers
Engineering Business
Continuous Deployment
36. BUILD TEST
PRODUCTION
DEPLOY
RELEASE
Feature Toggles allow decoupling Release from Deployment
Also helpful for:
● Canary Releases (release features to subset of users)
● A/B Tests
Engineering Business
Continuous Deployment
37. BUILD TEST PRODUCTION
Continuous Deployment
Limitations:
➔ Legal & Regulatory
➔ Distribution (App Stores!)
➔ Not suitable for critical software