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.
2. STASH:
TAKING EXPEDIA TO NEW HEIGHTS
DAVID WILLIAMS • SENIOR TECHNICAL PRODUCT MANAGER • EXPEDIA • @EXPEDIA
CHRISTOPHER PEPE • PARTNER & SENIOR SOLUTIONS ARCHITECT • PRAECIPIO CONSULTING • @PRAECIPIO
3. What we’ll cover
DISCOVERY
ROADMAP
PREPARATION
IMPLEMENTATION
MIGRATION
TRAINING
WHAT'S NEXT
4. DISCOVERY
• Perforce VCS
• Remote Productivity Report
• Legacy Build Script
So many options...but how does it work?
• Everybody's doing it!
• Pre-Dev Ops
• Ivy & Jenkins
Centralized
SVN development
Public
Git repo
Public
Git repo
Local
Git repo
Distributed
Git development
SVN
Central
SVN repo
Working
copy
Working
copy
Dev #1 Dev #2
Git Git
Git Git
Local
Git repo
Dev #1 Dev #2
8. ROADMAP
• Expedia, meet Stash: The Human Side of VCS Migration
• Interviews
• Word-of-Mouth Enthusiasm
• Scope Stash servers
9. ROADMAP
Atomic Cut-Over, Piecemeal, or The Atlassian?
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
10. ROADMAP
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
Git Git
Fusion p4d
git push
git clone
git fetch
User git pull
Workstation
Git Fusion
Service
Perforce
Service
p4 commands
12. PREPARATION
Identify Low-Hanging Fruit
• Technology Readiness
• Team Readiness
... and finalize the taxonomy!
Image courtesy of Dilbert by Scott Adams
14. Testing Process
Leverage 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
15. 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
!
16. 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
34. 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?
35. 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.
36. 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?)
37. Key takeaways: #atlassian
• Discovery
• Roadmap
• Preparation
• Implementation
• Migration
• Training
• What’s Next
38. Thank you!
DAVID WILLIAMS • SENIOR TECHNICAL PRODUCT MANAGER • EXPEDIA • @EXPEDIA
CHRISTOPHER PEPE • PARTNER & SENIOR SOLUTIONS ARCHITECT • PRAECIPIO CONSULTING • @PRAECIPIO