31
@smathieu rainforest Deployment: tips and tricks

Rails meetup deployments tricks

Embed Size (px)

DESCRIPTION

A talk given at the San Francisco Rails Meetup about deployments tips and tricks.

Citation preview

Page 1: Rails meetup   deployments tricks

@smathieurainforest

Deployment:!tips and tricks

Page 2: Rails meetup   deployments tricks

@smathieurainforest

Why?

Deployments are scary

Major cause of downtime

Wasted time

Page 3: Rails meetup   deployments tricks

@smathieurainforest

About

@smathieu

Page 4: Rails meetup   deployments tricks
Page 5: Rails meetup   deployments tricks

“We only deploy 20 times per day”

Page 6: Rails meetup   deployments tricks

@smathieurainforest

Tip #1

Page 7: Rails meetup   deployments tricks

@smathieurainforest

Page 8: Rails meetup   deployments tricks

@smathieurainforest

Tip #2

Page 9: Rails meetup   deployments tricks

@smathieurainforest

Have a staging server

Page 10: Rails meetup   deployments tricks

rainforest @smathieu

Page 11: Rails meetup   deployments tricks

@smathieurainforest

Tip #3

Page 12: Rails meetup   deployments tricks

@smathieurainforest

Page 13: Rails meetup   deployments tricks

@smathieurainforest

Tip #4

Page 14: Rails meetup   deployments tricks

@smathieurainforest

Deploying Without Downtime

Page 15: Rails meetup   deployments tricks

@smathieurainforest

Migrations

Major challenge to get right

It gets harder with data

Page 16: Rails meetup   deployments tricks

@smathieurainforest

ActiveRecord’s Column Cache

Page 17: Rails meetup   deployments tricks

@smathieurainforest

Page 18: Rails meetup   deployments tricks

@smathieurainforest

Don’t delete columns

rename_column :users, :notes, :deprecated_notes_2014_01_01

Page 19: Rails meetup   deployments tricks

@smathieurainforest

Adding Indexes

Slows on large tables

Locks the table

Page 20: Rails meetup   deployments tricks

@smathieurainforest

Postgres

CREATE INDEX CONCURRENTLY

Page 21: Rails meetup   deployments tricks

@smathieurainforest

MySQLPercona Toolkit:

http://www.percona.com/software/percona-toolkit

Facebook’s Online Schema Change:

https://www.facebook.com/notes/mysql-at-facebook/online-schema-change-for-mysql/

430801045932

Page 22: Rails meetup   deployments tricks

@smathieurainforest

Renaming Columns

Don’t do it

Page 23: Rails meetup   deployments tricks

@smathieurainforest

Page 24: Rails meetup   deployments tricks

@smathieurainforest

Tip #5

Page 25: Rails meetup   deployments tricks

@smathieurainforest

Having a staging server is nice, but…

Page 26: Rails meetup   deployments tricks

@smathieurainforest

… on demand staging is better

Page 27: Rails meetup   deployments tricks
Page 28: Rails meetup   deployments tricks

@smathieurainforest

And many more…

Page 29: Rails meetup   deployments tricks

@smathieurainforest

Conclusion

Your CI should be the only thing deploying your code

No-Downtime Deployments are harder, but possible

Invest in your deployment processes

Page 30: Rails meetup   deployments tricks

rainforest @smathieu

Questions?

Page 31: Rails meetup   deployments tricks

@smathieurainforest

Links

https://github.com/jipiboily/fourchette

https://www.facebook.com/notes/mysql-at-facebook/online-schema-change-for-mysql/430801045932

http://www.percona.com/software/percona-toolkit