SlideShare a Scribd company logo
DevOps For Small Teams
Joe Ferguson
https://joind.in/13966
My first “dev” job
Hired to convert PSDs to HTML
My first “dev” job
Hired to convert PSDs to
Ended up building / hacking at web apps
My first “dev” job
Hired to convert PSDs to
Ended up building / hacking at web apps
We had no DevOps (was it even a thing then?)
My first “dev” job
Hired to convert PSDs to
Ended up building / hacking at web apps
We had no DevOps (was it even a thing then?)
We invested in metal
My first “dev” job
Hired to convert PSDs to
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”
My second dev job
Yay I'm not alone!
My second dev job
Yay I'm not alone!
I was still "the server person"
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
Scaling a team
Version control is NOT renaming files
Version control EVERYTHING
Teaching our team VCS
https://try.github.io
Teaching our team VCS
https://guides.github.com
Trial & Error is ok!
Scaling a team
Stop Editing In Production!
No more edit
& uploading!
Everything goes into
version control!
Disable FTP Access!
# echo troy >> /etc/ftpuser
# echo andy >> /etc/ftpuser
# echo joe >> /etc/ftpuser
Better yet, disable FTP completely
Scaling a team
Development environments
MAMP, LAMP, WAMP,
WAT?
Mac/Linux/Windows Apache MySQL PHP
These are all great tools
Do you deploy to
MAMP/WAMP?
They why dev on it?
Catch those env bugs earlier
Remove the phrase
“…It works on my machine…”
From your team
Stop using WAMP/MAMP
and start using Vagrant!
Vagrant allows you to:
• Create a server
• Configure a server
• Delete a server
…over and over and over..
Not sure how to create a
Vagrant box?
https://puphpet.com
https://puphpet.com
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
Vagrant Cookbook
https://leanpub.com/vagrantcookbook
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
Testing Resources
https://leanpub.com/grumpy-testinghttps://leanpub.com/grumpy-phpunit
http://grumpy-learning.com
Continuous Integration
Continuous Delivery
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
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
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
There are a lot of CI
solutions out there
ServersForHackers.com
What is your process?
Create your workflow
Optimize your time in
the console
Work smarter not harder
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 svpernova@joeferguson.me -t screen -dR irc
gs
gpm
gsu
vgr
startredis
startphp
irc
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"
Use Screen for long
running processes
Think of screen as a
detachable window that
contains your console
Bash isn’t the only shell!
http://ohmyz.sh
Uses zsh
180+ Plugins
700+ Contributors
140+ Themes
Customize your shell
• Local IPs
• Date
• Current time
Green Text
because this is
the local machine
• User
• Hostname
• Current Path
• Current time
Customize your shell
• User
• Hostname
• Current Path
• Current time
• Local IPs
• Date
• Current time
Red Text
because this is
a remote machine
Customize your shell
Tab completion on steroids
+ Git branch info because we are in a repo
.zshrc
Automate Common
Tasks
Alias long commands
Shell script sequential commands
Use cron to run your scripts at specific times
Create installers for your settings
Version Control Configs
Do NOT version control
your SSH keys!
Recap
Version Control everything you can
Create a process that works for you
Practice how you play
Test everything you can
Automate everything you can
Feedback!
https://joind.in/13966
Joe Ferguson
Twitter: @JoePFerguson
Email: joe@joeferguson.me
Freenode: joepferguson
Contact Info:

More Related Content

PDF
Madison PHP 2015 - DevOps For Small Teams
PDF
ZendCon 2015 - Laravel Forge: Hello World to Hello Production
PDF
Web Leaps Forward
PDF
Docker, developers take power
PDF
Webinar - Matteo Manchi: Dal web al nativo: Introduzione a React Native
PPTX
Romulus crisan + radu pascal click'n'deploy
PDF
2016 05-cloudsoft-amp-and-brooklyn-new
PDF
Mobile Library Development - stuck between a pod and a jar file - Zan Markan ...
Madison PHP 2015 - DevOps For Small Teams
ZendCon 2015 - Laravel Forge: Hello World to Hello Production
Web Leaps Forward
Docker, developers take power
Webinar - Matteo Manchi: Dal web al nativo: Introduzione a React Native
Romulus crisan + radu pascal click'n'deploy
2016 05-cloudsoft-amp-and-brooklyn-new
Mobile Library Development - stuck between a pod and a jar file - Zan Markan ...

What's hot (19)

PPTX
Understand immutable infrastructure, what? Why? How? - Meta-Meetup DEVOPS NIGHT
PDF
Using Minikube for Node.js development
PDF
DevOps and Hybrid Applications: What You Need to Know
PPTX
Continuous deployment of Rails apps on AWS OpsWorks
PDF
GreenButton-201502
PPTX
Multi-stage Docker builds to make building easy!
PDF
Docker, Continuous Integration, and You
PDF
Amplifying Docker - Alex Heneveld

PPTX
Engineering Tools at Netflix: Enabling Continuous Delivery
PDF
Rundeck's History and Future
PDF
Removing Environmental Differences - Simon Pearson
PDF
Cross-platform Desktop application with AngularJS and build with Node-webkit
PDF
Enabling Microservices @Orbitz - Velocity Conf 2015
PDF
Understand How Node.js and Core Features Works
PDF
Deploying 3 times a day without a downtime @ Rocket Tech Summit in Berlin
PPTX
WordPress, React, oh my! (DevelCZ 2016)
PDF
Grunt training deck
PDF
node-webkit : Make a magic from your a desktop app to desktop app!
PDF
Best practices for JavaScript RIAs
Understand immutable infrastructure, what? Why? How? - Meta-Meetup DEVOPS NIGHT
Using Minikube for Node.js development
DevOps and Hybrid Applications: What You Need to Know
Continuous deployment of Rails apps on AWS OpsWorks
GreenButton-201502
Multi-stage Docker builds to make building easy!
Docker, Continuous Integration, and You
Amplifying Docker - Alex Heneveld

Engineering Tools at Netflix: Enabling Continuous Delivery
Rundeck's History and Future
Removing Environmental Differences - Simon Pearson
Cross-platform Desktop application with AngularJS and build with Node-webkit
Enabling Microservices @Orbitz - Velocity Conf 2015
Understand How Node.js and Core Features Works
Deploying 3 times a day without a downtime @ Rocket Tech Summit in Berlin
WordPress, React, oh my! (DevelCZ 2016)
Grunt training deck
node-webkit : Make a magic from your a desktop app to desktop app!
Best practices for JavaScript RIAs
Ad

Viewers also liked (6)

PDF
DevOps Con 2015: Radical Agility with Autonomous Teams and Microservices in t...
PPTX
Dev ops con 2015 radical agility with autonomous teams and microservices in...
PPTX
How to Make Your Website Not Ugly: 10 Simple UX Tenets for Non-Designers
PDF
Expressive Microservice Framework Blastoff
PPTX
DevOps Patterns - Team Topologies
PDF
Midwest PHP 2017 DevOps For Small team
DevOps Con 2015: Radical Agility with Autonomous Teams and Microservices in t...
Dev ops con 2015 radical agility with autonomous teams and microservices in...
How to Make Your Website Not Ugly: 10 Simple UX Tenets for Non-Designers
Expressive Microservice Framework Blastoff
DevOps Patterns - Team Topologies
Midwest PHP 2017 DevOps For Small team
Ad

Similar to DevOps For Small Teams (20)

PDF
ZendCon 2015 - DevOps for Small Teams
PDF
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
PPT
Hacking the way you work
PDF
Symfony Live NYC 2014 - Rock Solid Deployment of Symfony Apps
PDF
Pipeline as code for your infrastructure as Code
PPT
Tame Your Build And Deployment Process With Hudson, PHPUnit, and SSH
PDF
Composer at Scale, Release and Dependency Management
PDF
DevOps for Drupal: Why We Cook With Chef
PDF
Continuous Integration: How I stopped guessing if that merge was bad
PDF
Release and-dependency-management memphis python
PDF
Puppet Camp New York 2015: "Safer Puppet" in 4 quick demos (Beginner)
PDF
Consistent Development Environment with Vagrant and Chef
ODP
Devops for drupal
ODP
From Config Management Sucks to #cfgmgmtlove
PDF
How fast can you onboard a new team member with VAGRANT ?
ODP
Enterprise Workflows When You Aren't Enterprise
PDF
OSDC 2015: Kris Buytaert | From ConfigManagementSucks to ConfigManagementLove
PDF
What we talk about when we talk about DevOps
PDF
DevOps introduction with ansible, vagrant, and docker
ZendCon 2015 - DevOps for Small Teams
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Hacking the way you work
Symfony Live NYC 2014 - Rock Solid Deployment of Symfony Apps
Pipeline as code for your infrastructure as Code
Tame Your Build And Deployment Process With Hudson, PHPUnit, and SSH
Composer at Scale, Release and Dependency Management
DevOps for Drupal: Why We Cook With Chef
Continuous Integration: How I stopped guessing if that merge was bad
Release and-dependency-management memphis python
Puppet Camp New York 2015: "Safer Puppet" in 4 quick demos (Beginner)
Consistent Development Environment with Vagrant and Chef
Devops for drupal
From Config Management Sucks to #cfgmgmtlove
How fast can you onboard a new team member with VAGRANT ?
Enterprise Workflows When You Aren't Enterprise
OSDC 2015: Kris Buytaert | From ConfigManagementSucks to ConfigManagementLove
What we talk about when we talk about DevOps
DevOps introduction with ansible, vagrant, and docker

More from Joe Ferguson (20)

PDF
Modern infrastructure as code with ansible cake fest 2021
PDF
Modern infrastructure as code with ansible PyTN
PDF
Slim PHP when you don't need the kitchen sink
PDF
Throwing Laravel into your Legacy App™
PDF
DevSpace Conf 2017 - Making sense of the provisioning circus
PDF
Put an end to regression with codeception testing
PDF
All the Laravel Things – Up & Running to Making $$
PDF
Console Apps: php artisan forthe:win
PDF
Console Apps: php artisan forthe:win
PDF
All the Laravel things: up and running to making $$
PDF
So You Just Inherited a $Legacy Application… NomadPHP July 2016
PDF
So You Just Inherited a $Legacy Application...
PDF
Laravel Forge: Hello World to Hello Production
PDF
MidwestPHP 2016 - Adventures in Laravel 5
PDF
Acceptance & Functional Testing with Codeception - SunshinePHP 2016
PDF
Adventures in Laravel 5 SunshinePHP 2016 Tutorial
PDF
php[world] 2015 Laravel 5.1: From Homestead to the Cloud
PDF
php[world] 2015 Training - Laravel from the Ground Up
PDF
Secure Form Processing and Protection - Devspace 2015
PDF
Acceptance & Functional Testing with Codeception - Devspace 2015
Modern infrastructure as code with ansible cake fest 2021
Modern infrastructure as code with ansible PyTN
Slim PHP when you don't need the kitchen sink
Throwing Laravel into your Legacy App™
DevSpace Conf 2017 - Making sense of the provisioning circus
Put an end to regression with codeception testing
All the Laravel Things – Up & Running to Making $$
Console Apps: php artisan forthe:win
Console Apps: php artisan forthe:win
All the Laravel things: up and running to making $$
So You Just Inherited a $Legacy Application… NomadPHP July 2016
So You Just Inherited a $Legacy Application...
Laravel Forge: Hello World to Hello Production
MidwestPHP 2016 - Adventures in Laravel 5
Acceptance & Functional Testing with Codeception - SunshinePHP 2016
Adventures in Laravel 5 SunshinePHP 2016 Tutorial
php[world] 2015 Laravel 5.1: From Homestead to the Cloud
php[world] 2015 Training - Laravel from the Ground Up
Secure Form Processing and Protection - Devspace 2015
Acceptance & Functional Testing with Codeception - Devspace 2015

Recently uploaded (20)

PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PPTX
A Presentation on Artificial Intelligence
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PPTX
Cloud computing and distributed systems.
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Machine learning based COVID-19 study performance prediction
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PDF
Approach and Philosophy of On baking technology
PDF
KodekX | Application Modernization Development
PDF
cuic standard and advanced reporting.pdf
Diabetes mellitus diagnosis method based random forest with bat algorithm
MYSQL Presentation for SQL database connectivity
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Understanding_Digital_Forensics_Presentation.pptx
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
A Presentation on Artificial Intelligence
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Reach Out and Touch Someone: Haptics and Empathic Computing
Cloud computing and distributed systems.
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
20250228 LYD VKU AI Blended-Learning.pptx
Encapsulation_ Review paper, used for researhc scholars
Review of recent advances in non-invasive hemoglobin estimation
Machine learning based COVID-19 study performance prediction
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
Approach and Philosophy of On baking technology
KodekX | Application Modernization Development
cuic standard and advanced reporting.pdf

DevOps For Small Teams