Madison PHP 2015 - DevOps For Small Teams
-
Upload
joe-ferguson -
Category
Technology
-
view
463 -
download
0
Transcript of Madison PHP 2015 - DevOps For Small Teams
![Page 2: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/2.jpg)
Who Am I?
Joe Ferguson
PHP Developer
Twitter: @JoePFerguson
Organizer of @MemphisPHP
@NomadPHP Lightning Talks
Passionate about Community
![Page 3: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/3.jpg)
My first “dev” job
Hired to convert PSDs to HTML
![Page 4: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/4.jpg)
My first “dev” job
Hired to convert PSDs to HTML
Ended up building / hacking at web apps
![Page 5: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/5.jpg)
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?)
![Page 6: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/6.jpg)
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
![Page 7: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/7.jpg)
My first “dev” jobHired 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”
![Page 8: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/8.jpg)
My second dev job
Yay I'm not alone!
![Page 9: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/9.jpg)
My second dev job
Yay I'm not alone!
I was still "the server person"
![Page 10: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/10.jpg)
Yay I'm not alone!
I was still "the server person”
Scaling a team
We needed to scale up (and skill up) our team
My second dev job
![Page 11: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/11.jpg)
Scaling a team
Version control is NOT renaming files
Version control EVERYTHING
![Page 14: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/14.jpg)
Trial & Error is ok!
![Page 15: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/15.jpg)
Scaling a team
Stop Editing In Production!
![Page 16: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/16.jpg)
No more edit & uploading!
Everything goes into
version control!
![Page 17: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/17.jpg)
Disable FTP Access*!
# echo troy >> /etc/ftpuser
# echo andy >> /etc/ftpuser
# echo joe >> /etc/ftpuser
Better yet, disable FTP completely*
![Page 18: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/18.jpg)
*If you can
![Page 19: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/19.jpg)
Scaling a team
Development environments
![Page 20: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/20.jpg)
MAMP, LAMP, WAMP, WAT?
Mac/Linux/Windows Apache MySQL PHP
These are all great tools
![Page 21: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/21.jpg)
Do you deploy to MAMP/WAMP?
![Page 22: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/22.jpg)
Why develop on a different configuration?
![Page 23: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/23.jpg)
Catch those environment bugs earlier
![Page 24: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/24.jpg)
Remove the phrase “…It works on my machine…”
From your team
![Page 25: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/25.jpg)
Stop using WAMP/MAMP and start using Vagrant!
![Page 26: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/26.jpg)
Vagrant allows you to:• Create a server• Configure a server• Delete a server
…over and over and over..
![Page 27: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/27.jpg)
Not sure how to create a Vagrant box?
![Page 29: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/29.jpg)
Guided path to create your own Vagrant
Supports common Distributions
Customize users, firewall rules, cron jobs
Add databases, virtual hosts
Supports Ruby, PHP, Python, NodeJS, HHVM
Beanstalkd & RabbitMQ
Elastic Search & Apache Solr
PuPHPet.com
![Page 30: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/30.jpg)
PuPHPet.com
Great for learning HOW to build boxes
Especially useful if you’d like to learn Puppet
![Page 31: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/31.jpg)
Other Provisioners
Shell
Chef - use existing Cookbooks
Docker - used if your app is in Docker
SaltStack
![Page 32: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/32.jpg)
Vagrant Cookbook
https://leanpub.com/vagrantcookbook
![Page 33: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/33.jpg)
Ansible for DevOps
https://leanpub.com/ansible-for-devops
![Page 34: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/34.jpg)
Learning Budget
![Page 35: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/35.jpg)
Learning Budget
![Page 36: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/36.jpg)
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
![Page 37: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/37.jpg)
Is your code testable?
If unit testing is hard, your code may not have been written to be testable.
![Page 38: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/38.jpg)
Testing Resources
http://grumpy-learning.com
![Page 39: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/39.jpg)
Testing Resources
https://laracasts.com/collections/testing-in-php
![Page 40: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/40.jpg)
Continuous Integration Continuous Delivery
![Page 41: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/41.jpg)
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
![Page 42: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/42.jpg)
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
![Page 43: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/43.jpg)
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
![Page 44: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/44.jpg)
There are a lot of CI solutions out there
![Page 45: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/45.jpg)
ServersForHackers.com
![Page 46: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/46.jpg)
What is your process?
![Page 47: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/47.jpg)
Create your workflow
![Page 48: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/48.jpg)
Optimize your time in the console
![Page 49: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/49.jpg)
Work smarter not harder
![Page 50: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/50.jpg)
Stop typing the same commands
git status
git pull origin master
git branch —set-upstream-to=origin/master
vagrant global-status | grep running
redis-server /usr/local/etc/redis.conf
php -S localhost:8000
ssh [email protected] -t screen -dR irc
gs
gpm
gsu
vgr
startredis
startphp
irc
![Page 51: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/51.jpg)
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 [email protected] -t screen -dR irc"
![Page 52: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/52.jpg)
Use Screen for long running processes
https://www.mattcutts.com/blog/a-quick-tutorial-on-screen/
![Page 53: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/53.jpg)
Think of screen as a detachable window that contains your console
![Page 54: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/54.jpg)
Screen Demo
![Page 55: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/55.jpg)
Want more Power?
https://tmux.github.io
![Page 56: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/56.jpg)
Bash isn’t the only shell!
![Page 57: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/57.jpg)
http://ohmyz.sh
Uses zsh
180+ Plugins
700+ Contributors
140+ Themes
![Page 58: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/58.jpg)
myZsh
![Page 59: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/59.jpg)
Why do I use myzsh over oh-my-zsh?
![Page 60: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/60.jpg)
Why do I use myzsh over oh-my-zsh?
![Page 61: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/61.jpg)
Customize your shell
• Local IPs• Date
Green Text because this is
the local machine
• User• Hostname• Current Path• Current time
![Page 62: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/62.jpg)
Customize your shell
• User• Hostname• Current Path• Current time
• Local IPs• Date
Red Text because this is
a remote machine
![Page 63: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/63.jpg)
Customize your shell
Tab completion on steroids+ Git branch info because we are in a repo
![Page 64: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/64.jpg)
Tab Completion Demo
![Page 65: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/65.jpg)
.zshrc
![Page 66: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/66.jpg)
Automate Common Tasks
Alias long commands
Shell script sequential commands
Use cron to run your scripts at specific times
Create installers for your settings
![Page 67: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/67.jpg)
Version Control Configs
![Page 68: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/68.jpg)
Do NOT version control your SSH keys!
![Page 69: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/69.jpg)
Do NOT version control your API keys!
![Page 70: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/70.jpg)
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
![Page 71: Madison PHP 2015 - DevOps For Small Teams](https://reader033.fdocuments.us/reader033/viewer/2022052606/58efae2f1a28abe3198b458b/html5/thumbnails/71.jpg)
Feedback!
https://joind.in/16020
Joe FergusonTwitter: @JoePFergusonEmail: [email protected]: joepferguson
Contact Info: