1 of 86

Paying Technical Debt at Scale: Migrations @ Stripe

Will Larson

@lethain

QCon SF

11/6/2018

2 of 86

3 of 86

4 of 86

Tech debt:

core constraint on your velocity.

5 of 86

Migration:

fully replacing a tool, system or library.

6 of 86

Approach:

treat every migration like a product.

7 of 86

What is a migration?

Do migrations matter?

Effective migrations!

8 of 86

CC image courtesy of harshilshah on Flickr

9 of 86

Migration:

fully replacing a tool, system or library.

10 of 86

11 of 86

12 of 86

13 of 86

14 of 86

Migration:

fully replacing a tool, system or library.

15 of 86

What is a migration?

Do migrations matter?

Effective migrations!

16 of 86

17 of 86

18 of 86

19 of 86

20 of 86

21 of 86

22 of 86

23 of 86

24 of 86

25 of 86

26 of 86

27 of 86

So now you’re busy...

28 of 86

...and it gets worse!

29 of 86

30 of 86

Hyperbahn.

31 of 86

32 of 86

Teams bet on migrations.

33 of 86

34 of 86

Digg v4.

35 of 86

36 of 86

So... do migrations matter?

37 of 86

Yes.

38 of 86

Quick aside: interfaces!

39 of 86

40 of 86

What is a migration?

Do migrations matter?

Effective migrations!

41 of 86

Every migration is a product.

42 of 86

Effective migrations!

Derisk.

Enable.

Finish.

43 of 86

Place good bets.

44 of 86

1) Is this worth doing?

45 of 86

Find sponsor.

46 of 86

Opportunity cost.

47 of 86

Not invented here.

48 of 86

Not invented here.

49 of 86

Hammer looking for a nail.

50 of 86

Hammer looking for a nail.

51 of 86

2) Will it work?

52 of 86

Design document.

53 of 86

Prototype.

54 of 86

Embed with early adopters.

55 of 86

56 of 86

One easy, then hard.

57 of 86

58 of 86

Effective migrations!

Derisk.

Enable.

Finish.

59 of 86

User testing.

60 of 86

User testing: interfaces.

61 of 86

User testing: documentation.

62 of 86

User testing: operations.

63 of 86

User testing: debugging.

64 of 86

Slow down to go fast.

65 of 86

Self-service.

66 of 86

Automate the migration.

67 of 86

68 of 86

Incremental and reversible tools.

69 of 86

Dark launch.

70 of 86

Interfaces.

Interfaces.

Interfaces.

71 of 86

Effective migrations!

Derisk.

Enable.

Finish.

72 of 86

100%

73 of 86

Stop the bleeding.

74 of 86

µContainer.

75 of 86

Tracking.

76 of 86

Tracking: tickets.

77 of 86

Tracking: reports.

78 of 86

Tracking: nudges.

79 of 86

Finish it yourself.

80 of 86

81 of 86

Celebrate when it’s over.

82 of 86

What is a migration?

Do migrations matter?

Effective migrations!

83 of 86

Tech debt:

core constraint on your velocity.

84 of 86

Migration:

only way to pay tech debt at scale.

85 of 86

Approach:

treat every migration like a product.

86 of 86

Q&A

@lethain

https://lethain.com