CODE
TEST
DEPLOY
REPEAT

CONTINUOUS INTEGRATION

CONTINUOUS DELIVERY

CONTINUOUS DEPLOYMENT

CIAO!

Antonello D'Ippolito

Software engineer, Scrum master

@antodippo

Code

FAST AND TINY PRs

CODE REVIEWS

PAIR PROGRAMMING

FEATURE TOGGLES


						if ($toggleManager->isActive('new_fancy_functionality')) {
							$this->newFancyFunctionality();
						} else {
							$this->oldFunctionality();
						}
					
https://www.martinfowler.com/articles/feature-toggles.html

DECOUPLE TOGGLE FROM DECISION

CENTRALIZE THE LOGIC

AVOID CONDITIONALS

REMOVE TOGGLES

ACTIVE

INACTIVE

CONDITIONALLY ACTIVE

qandidate/toggle

https://github.com/qandidate-labs/qandidate-toggle

In memory - Config file - Redis

TEST

DEPLOY

“IF IT HURTS,
DO IT MORE OFTEN”

EVERYONE CAN DEPLOY

EVERYONE SHOULD DEPLOY

MONITOR EVERYTHING

ERROR LOGS

CRONS EXIT STATUS

EXTERNAL SERVICES CALLS RESPONSE TIME

CONTROLLERS LOADING TIME

DELIVER

DECOUPLE DEPLOY
FROM RELEASE

A/B TESTING

CANARY RELEASES

Yeah, ok, but...
what's in it for me?

IT SHARPENS YOUR DEVOPS SKILLS

STRESS FREE DEPLOYS

FAST FEEDBACK

FROM CI

FROM MONITORING

FROM USERS

YOU'RE GONNA FAIL.
THE PROBLEM IS HOW SOON

“El camino es la recompensa”

Oscar W. Tabarez

“That’s why, even if you can’t actually release every set of changes that passes all your tests,
you should aim to create a process that would let you do so if you choose to.”

Continuous Delivery - Jez Humble, David Farley

THANKS!

These slides are continuously deployed:
https://github.com/antodippo/code-test-deploy-repeat

Antonello D'Ippolito | twitter.com/antodippo | antodippo.com (no canaries were harmed in the making of this talk)