stash – taking expedia to new heights - david williams and christopher pepe
DESCRIPTION
Discover how making the move from Perforce to Git at Expedia lead to standing room-only training sessions abundant with high fives. The move to Git improved Expedia's software development with faster development cycles, deeper integrations, increased transparency, and a more unified development platform.TRANSCRIPT
#atlassian
STASH:TAKING EXPEDIA TO NEW HEIGHTS
DAVID WILLIAMS • SENIOR TECHNICAL PRODUCT MANAGER • EXPEDIA • @EXPEDIA
CHRISTOPHER PEPE • PARTNER & SENIOR SOLUTIONS ARCHITECT • PRAECIPIO CONSULTING • @PRAECIPIO
R O A D M A P
D I S C O V E RY
What we’ll cover
P R E PA R AT I O N
I M P L E M E N TAT I O N
M I G R AT I O N
T R A I N I N G
W H AT ' S N E X T
• Perforce VCS• Remote Productivity Report• Legacy Build ScriptSo many options...but how does it work?
• Everybody's doing it!• Pre-Dev Ops• Ivy & Jenkins
DISCOVERY
Centralized SVN development
Distributed Git development
SVN
CentralSVN repo
Workingcopy
Workingcopy
Dev #1 Dev #2
Git Git
GitGit
PublicGit repo
PublicGit repo
LocalGit repo
Dev #1 Dev #2
LocalGit repo
• “Under desk” implementation• Stash envy• Storing production code
DISCOVERY
• ALM support• Enterprise solution• High Performance• Failover• Disaster Recovery• Not under a desk
DISCOVERY
R O A D M A P
D I S C O V E RY
P R E PA R AT I O N
I M P L E M E N TAT I O N
M I G R AT I O N
T R A I N I N G
W H AT ' S N E X T
• Expedia, meet Stash: The Human Side of VCS Migration• Interviews• Word-of-Mouth Enthusiasm• Scope Stash servers
ROADMAP
Atomic Cut-Over
• No dependency on build tools
Piecemeal
• Devs to git
• Devtools on Perforce
The Atlassian
• Mirror Commits
• Move Devtools to git
• Move Devs to git
ROADMAPAtomic Cut-Over, Piecemeal, or The Atlassian?
Conversion Technology
• Git Fusion
• New Perforce servers
• Sky is the limit!
• Git-p4
• Older Perforce servers
• Limited but powerful
Migrating Builds
• Exercise for each Dev Team
• Expedia = Awesome Technology
• Ivy to Maven Bridge
• Exposed Ivy artifacts to Nexus
• Ivy build.xml to Maven pom.xml conversion tool
ROADMAP
Git Git Fusion p4d
git push
git clone git fetch git pullUser
WorkstationGit Fusion
ServicePerforce Service
p4 commands
R O A D M A P
D I S C O V E RY
P R E PA R AT I O N
I M P L E M E N TAT I O N
M I G R AT I O N
T R A I N I N G
W H AT ' S N E X T
Identify Low-Hanging Fruit • Technology Readiness • Team Readiness
... and finalize the taxonomy!
PREPARATION
Image courtesy of Dilbert by Scott Adams
R O A D M A P
D I S C O V E RY
P R E PA R AT I O N
I M P L E M E N TAT I O N
M I G R AT I O N
T R A I N I N G
W H AT ' S N E X T
Testing ProcessLeverage the fact that VCS is transactional • Start from any point in the past• Pull any diff over later• Just do it - and if it worked, then plan with the dev team to cut over• Have faith in your tools
!
Simple: Compare the commit histories
Simple but slow: Diff each repo (repo size isn’t reliable but contents are)
Validate Builds: Same artifact from Perforce and Git
Challenges
• Inability to write using non-user SSH keys• Resolved in 2.12
• Certificate issue for Windows clients• Could be resolved by using a public signed certificate.
• Needed to build Git from source• OS package not available• Required security exception
• Design concerns over which environments can access• Should we make Stash publicly available for OSS projects?
• Migration concerns with projects dependent upon components build system
!
Disaster Recovery• Currently using a number of tiered backups
• Plan to implement a 3rd• We periodically rsync the Stash home directory to a cold standby.
• Simultaneously logship the DB. • In case of recovery, never more than 15 minutes out of date
• Weekly full backup of Stash • Currently takes 15 min. to complete
• Now that we're on 2.12, we plan to implement DIY backups • Takes more to set up
Before Go-Live
Image courtesy of American Idol
After Go-Live
Image courtesy of American Idol
R O A D M A P
D I S C O V E RY
P R E PA R AT I O N
I M P L E M E N TAT I O N
M I G R AT I O N
T R A I N I N G
W H AT ' S N E X T
Expect the… Expected! • Well-planned• Well-tested• Well-executed
MIGRATION
Image courtesy of Futurama
Expect the… Expected! • Well-planned• Well-tested• Well-executed
MIGRATION
Image courtesy of Futurama
R O A D M A P
D I S C O V E RY
P R E PA R AT I O N
I M P L E M E N TAT I O N
M I G R AT I O N
T R A I N I N G
W H AT ' S N E X T
Training
• Standing Room Only!• Expedia Git Experts Emerged!• Eyes Lit Up!• Atlassian makes Expedia
appealing to graduates!
R O A D M A P
D I S C O V E RY
P R E PA R AT I O N
I M P L E M E N TAT I O N
M I G R AT I O N
T R A I N I N G
W H AT ' S N E X T
Adoption
688 Stash Users
819 Repositories
67 Projects
Well over 15GB of code
Shiny, Happy People
• Didn’t dictate the tool to use• Grassroots initiative• Give the people what they want• Happy, eager users
Dragging people kicking and screaming, or trying to hold back the mob?
What's Next?
• Positive rollout experience• Word of Mouth adoption of Stash• Integration with other Atlassian tools• Traceability from ideation to release is a powerful thing.
What stuck with us
• Stash has been easy both to install and to use • Stable Scalability• Many Migration Strategies:
• Simple to Complex• Meets Developer Needs
• Lots of Community Support• Git is where the industry is going (has gone?)
Key takeaways: #atlassian
• Discovery• Roadmap• Preparation• Implementation• Migration• Training• What’s Next
Thank you!
DAVID WILLIAMS • SENIOR TECHNICAL PRODUCT MANAGER • EXPEDIA • @EXPEDIA
CHRISTOPHER PEPE • PARTNER & SENIOR SOLUTIONS ARCHITECT • PRAECIPIO CONSULTING • @PRAECIPIO