Joe Ferguson discusses how small development teams can implement DevOps practices. He recommends using version control for all code and configurations, developing on the same environments that are deployed (using Vagrant), implementing continuous integration and testing, and automating common tasks through aliases, scripts, and cron jobs. The talk provides many specific tools and resources for setting up version control, continuous integration, testing, and automation for small teams.
4. My first “dev” job
Hired to convert PSDs to HTML
Ended up building / hacking at web
apps
5. My first “dev” job
Hired to convert PSDs to HTML
Ended up building / hacking at web apps
We had no DevOps (was it even a thing then?)
6. My first “dev” job
Hired to convert PSDs to HTML
Ended up building / hacking at web apps
We had no DevOps (was it even a thing then?)
We invested in metal
7. My first “dev” job
Hired to convert PSDs to HTML
Ended up building / hacking at web apps
We had no DevOps (was it even a thing then?)
We invested in metal
Just started using “the cloud”
36. Scaling a team
Test your code!
Testing was the hardest part for us.
The payoffs in catching regression bugs
and confidence in our deployments was
well worth it
37. Is your code testable?
If unit testing is hard, your code may not
have been written to be testable.
41. Continuous Integration
Frequently integrate code changes into the
existing code repository
Merging branches to master/production
Automated build tests to ensure issues found
quickly
Does not have to be deployed
42. Continuous Delivery
Produce valuable changes in code in short
cycles to be released at any time.
AKA: Continuous Deployment
Automated build tests to ensure issues
found quickly
Deployment happens on successful build
43. Which is right for you?
Your goal should be Continuous
Integration (at least!)
Strive for Continuous Delivery if it makes
sense
Applications with a live event component
may not be suited for Continuous
Delivery
51. Make use of aliases
alias gs=“git status”
alias gpm=“git pull origin master”
alias gsu=“git branch —set-upstream-to=origin/master”
alias vgr=“vagrant global-status | grep running”
alias startredis=“redis-server /usr/local/etc/redis.conf”
alias startphp=“php -S localhost:8000”
alias irc=“ssh svpernova@joeferguson.me -t screen -dR irc"
52. Use Screen for long
running processes
https://www.mattcutts.com/blog/a-quick-tutorial-on-screen/
53. Think of screen as a
detachable window that
contains your console
66. Automate Common Tasks
Alias long commands
Shell script sequential commands
Use cron to run your scripts at specific times
Create installers for your settings
70. Recap
Version Control everything you can
Create a process that works for your team
Practice how you play
Test everything you can
Automate everything you can