DevOps is a large part of a company of any size. In the 9+ years that I have been a professional developer I have always taken an interest in DevOps and have been the "server person" for most of the teams I have been a part of. I would like to teach others how easy it is to implement modern tools to make their everyday development and development processes better. I will cover a range of topics from "Stop using WAMP/MAMP and start using Vagrant", "version control isn't renaming files", "Automate common tasks with shell scripts / command line PHP apps" and "From Vagrant to Production".
2. Who Am I?
Joe Ferguson
PHP Developer
Engineer @ Aol.
Twitter: @JoePFerguson
Organizer of @MemphisPHP
OSMI Board Member
@NomadPHP Lightning Talks
Passionate about Community
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”
50. 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
51. Is your code testable?
If unit testing is hard, your code may
not have been written to be testable.
55. 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
56. 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
57. 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
66. 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"
67. Use Screen for long
running processes
https://www.mattcutts.com/blog/a-quick-tutorial-on-screen/
68. Think of screen as a detachable
window that contains your console
78. Automate Common Tasks
Alias long commands
Shell script sequential commands
Use cron to run your scripts at
specific times
Create installers for your settings
82. 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