Slide 1

Slide 1 text

Development Best Practices
 for Continuous Deployment Environment! Presented by Akhyar Amarullah
 at Engineering Brownbag Session in Onebit
 on Wednesday, March 17th 2015"

Slide 2

Slide 2 text

What is this Continuous Something stuffs?"

Slide 3

Slide 3 text

Why does it matter?" Centralized source.! Being lazy, automate repetitive tasks. 
 Engineers love automation!! Deploying clean build is a must, 
 but often requires extra time.! Reduce silly mistakes in manual steps.! Higher quality delivery with confidence.!

Slide 4

Slide 4 text

But that’s devops engineer’s job, right? 
 Why should I even care? ! Fine fine, I have heard it before. !

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

Why should I even care?" •  Code requires huge efforts to maintain more than to write.! •  Projects change a lot. Sometimes beyond your sanity can handle.! •  Make changing configurations a breeze.! •  Your code is your responsibility. Continuous Deployment compliance is a standard.!

Slide 7

Slide 7 text

Let’s get started!" Ok, I’m convinced now!

Slide 8

Slide 8 text

Everything on branch “master” (or equivalents) 
 should works and deployable.
 ! •  Incremental/small changes are done on feature branches.! •  Version tag your released commits.! •  Commit in small chunks. But not too small.!

Slide 9

Slide 9 text

Don’t commit files containing 
 sensitive information." •  configs/email.php •  onebit.keystore •  DatabaseConfigs.java •  PASSWORD.txt •  Etc. Basically, files with credentials.! •  These configuration files are kept in your own machine. !

Slide 10

Slide 10 text

Use .gitignore •  Environment-specific configuration files! •  Generated files! – *.apk, *.class, build/, gen/, etc! •  Log files! •  OS’ generated craps! – Thumbs.db! – .DS_Store! •  Tip: Use http://gitignore.io to generate one!!

Slide 11

Slide 11 text

Configuration! Don’t hardcode! Don’t hardcode! Don’t hardcode! Don’t hardcode! Don’t hardcode! Don’t hardcode! Don’t hardcode! !

Slide 12

Slide 12 text

Configuration Files! Separate between different environment
 Local VS staging VS production! Your favorite frameworks might have supported it already. Find it out!! Avoid committing sensitive credentials 
 to public repository.!

Slide 13

Slide 13 text

Laravel Sample!

Slide 14

Slide 14 text

Configuration! •  Must be injectable via either:! –  Configuration files! –  Environment variables (e.g. $SERVER_HOST)! •  Don’t forget to document how to configure your projects!!

Slide 15

Slide 15 text

Recaps" Everything on “master” (or equivalents) should works and deployable." Don’t commit files containing sensitive information.! Use .gitignore Separate configuration based on environments.! Document how to configure the project.!

Slide 16

Slide 16 text

Thanks" Akhyar Amarullah! @akhy"