You are signed in. Close

You are signed out. Close

Thank you. Your subscription has started. Close

Thank you. You will get an email when a new comic comes out. Close

We could not confirm your payment. If you paid, use the link "Sign in" at the bottom of the page. Close

Something went wrong on our side. Please try again in a moment. Close

How CI/CD works: why releasing code every day is safer than once a month

Integration hell: why weeks of separate work break on merge day

Three developers spend a month on three parts of one app, and each part works. On merge day, the app breaks, and fixing it takes longer than writing the parts did. Software teams have a name for this: integration hell.

  1. 1 You have just joined Miva and Rono, two developers who build a laundry app. Neighbours in big buildings open it on their phone, book a washing machine, and get a message when the wash is done.youMivaRonoa neighbourBook

    You have just joined Miva and Rono, two developers who build a laundry app. Neighbours in big buildings open it on their phone, book a washing machine, and get a message when the wash is done.

  2. 2 The team keeps its code in Git, a program that stores every version of it. For a month, each of you works alone on your own branch, your own copy of the code in Git: Miva on a waiting list, Rono on paying by phone, you on a new booking screen.mainMiva: waiting listRono: pay by phoneyou: booking screen4 weeks

    The team keeps its code in Git, a program that stores every version of it. For a month, each of you works alone on your own branch, your own copy of the code in Git: Miva on a waiting list, Rono on paying by phone, you on a new booking screen.

  3. 3 On Friday, you merge the three branches into main, the shared version of the app that everyone builds on. Git puts the three lines of work together without a single complaint.Friday:release daywaiting listpay by phonebooking screenmainMerged,no conflicts

    On Friday, you merge the three branches into main, the shared version of the app that everyone builds on. Git puts the three lines of work together without a single complaint.

  4. 4 Then the app gives machine 3 to two neighbours at once. Rono changed how a booking is saved, and Miva's waiting list still reads bookings the old way. Each change worked alone, and together they break.3Flat 4Flat 9Rono:a bookingholds a priceMiva:reads bookingsthe old way

    Then the app gives machine 3 to two neighbours at once. Rono changed how a booking is saved, and Miva's waiting list still reads bookings the old way. Each change worked alone, and together they break.

  5. 5 Worse, a month of work holds hundreds of changes, and any of them could be the cause. Each time you fix one bug, a new one shows up. Developers call this integration hell.a monthof changesfixedyouMivaRono

    Worse, a month of work holds hundreds of changes, and any of them could be the cause. Each time you fix one bug, a new one shows up. Developers call this integration hell.

  6. 6 On Sunday night, Rono copies the new version by hand onto production, the servers that the neighbours really use. This is called deploying, and this time it came two days late.Sunday1. copy files2. restart3. checkRonoproduction

    On Sunday night, Rono copies the new version by hand onto production, the servers that the neighbours really use. This is called deploying, and this time it came two days late.

  7. Go further

    The words behind merge day.integrationputting together the workof several people into oneapp: merge day was onemerge conflictGit stops: two brancheschanged the same part ofa file. Here it did not: theclash was in the meaningrelease daythe day a new versiongoes to the users,here once a month

    The words behind merge day.

Next episode Continuous integration: why merging every day hurts less than once a month

Share this comic

More comics