wordcamp belfast devops for beginners
TRANSCRIPT
WordPress DevOps For Beginners
http://poweredbycoffee.co.uk
Stewart Ritchie
@stewartritchie [email protected]
This is NOT a Tutorial
http://poweredbycoffee.co.uk
This is a guide to dev ops for beginners. You’ve probably heard talks about this stuff before. aimed at technical tutorial instead of a 101 - why should you care
This talk is for - beginners to devops, - devs who want to start to improve their productivity and quality- business owners who hear developers talking about stuff the don't understand and want to up their understanding- pm’s who want more control and efficiency
What is Dev Ops anyway?
http://poweredbycoffee.co.uk
Asked my friends Andy, works for Sky on Now TV as a Scrum Master
Dev Ops is a very simple concept at its heart.
Its not a technology.its not a cure all to your problems.
Investment. Spent time now - create development project processes - that save time later- improve efficiency - improve happiness- and improve your over all project outcome. (Quality/Time to market/Profitability)
IE - Devs spend more time developing.
Why is Dev Ops Important?
http://poweredbycoffee.co.uk
why does it provide value? no value - no point1. dev2. bus3. comm
1. DevOps will make you a better developer.
http://poweredbycoffee.co.uk
- You’ll learn to structure your code in more reusable, - your learn how do write code that can be tested- you’ll learn to think about performance and failure of the code you write
1. collaborate with other developers2. reduce the risk of trying new techniques3. improve the quality of your code4. Help developers do more development and less system administration5. bring new people into a project quickly.
2. DevOps will help you deliver better work to your clients
http://poweredbycoffee.co.uk
You will be able to deliver faster, iterate faster, involve your clients in your process more.Talk about deployments/Continuous Integration
-Make it hard or almost impossible to have a bug get in production1. If you do have a problem, your recovery time will be slashed.2. Make everyone on your team more efficient 3. faster iteration cycle4. better data mining and monitoring of systems
3. DevOps helps move WordPress into bigger companies and opportunities
http://poweredbycoffee.co.uk
DevOps bring reliability, repeatability and lowers risk.
WordPress == Wild West - a toy/hobby. DevOps brings respectability.
scaleabilityreliabilitypredicable and repeatable
How Does Dev Ops Help?
http://poweredbycoffee.co.uk
1. Collaboration
2. Code Sharing
3. Automation
1. Collaboration
http://poweredbycoffee.co.uk
Work together better.
teams grow,projects grow, more and more people will need involvedBad collaboration can kill projects deadDeveloper collaboration is hard
Version Control
http://poweredbycoffee.co.uk
Easy for developers to collaborate
A hardened nuclear bunker for your source code
Makes it easy to have more that one version of your project!
Basically a time machine
- version control - gives us a way to manage code and version that gets it off your laptop - code is a shared resource and changes should not be made 'willy nilly" - similar to version on the mac or even time machine you can go back in time to a point in your project
What is a “Commit”?
http://poweredbycoffee.co.uk
- Snapshot of code- the difference since the last snapshot, layer them up and you get a project
- a commit should include a defined piece of work - bug fix - a change that had a purpose - made changes that you dont want to keep? revet to the last commit.
http://poweredbycoffee.co.uk
This layering gives us a log of the project over timeSee how files changed
Merging Version Control
http://poweredbycoffee.co.uk
- Gives you the ability to manage different versions of your software
- Development, Staging & Production
- Approve code to move up the versions into production
The real killer feature is that your code base can exits in different states. This comes from “Branching”1. you can see here every dot is a commit. 2. At this commit you made a deployement3. you keep commiting until some one finds a bug - you;ve been working on the project in the mean time, added half a dozen unfinished features you fix the bug in your
deployed version. Now you need to unpick the new features or download
http://poweredbycoffee.co.uk
http://poweredbycoffee.co.uk
http://poweredbycoffee.co.uk
http://poweredbycoffee.co.uk
http://poweredbycoffee.co.uk
2. Code Sharing
http://poweredbycoffee.co.uk
all projects have code that they didn’t create in them
Dependencies
http://poweredbycoffee.co.uk
- every software project is built on the shoulders of those that came before it. - starting fro scratch again would be irresponsible and wasteful- PHP is a dependency (basically a piece of software written in C), mysql and a webserver- we do not want to have to manage code we didn’t create, do not commit that- multiple kinds of dependencies to manage (production/dev) software
WordPress Has Dependencies
http://poweredbycoffee.co.uk
- Diff by Geoffrey T. Bairiki
- ID3 by James Heinrich
- BackBone & Underscores
The Problem with dependancies is that they can change
http://poweredbycoffee.co.uk
- The problem with dependancies is that they change - Writing software is hard, using extenal dependancies is hard. - they change. Features get added or removed - Building a house with a foundation of sand - the sand/dependency changes and the house can fall down - by targeting a specific version of a library or a dependancy you can stop this happening - then update when you know its safe (SEMVER - FTW) - dependencies can have their own dependencies
What About Your Project?
http://poweredbycoffee.co.uk
- WordPress is a dependancy. Its a library that your are writing software against - So are all your plugins, themes, libraries etc etc - any libraries you add are dependencies (PHP/JS/CSS) - You are creating something that depends on these - that is a risk
Your Dependancies - have dependencies
http://poweredbycoffee.co.uk
- WordPress is a dependancy. Its a library that your are writing software against - So are all your plugins, themes, libraries etc etc - any libraries you add are dependencies (PHP/JS/CSS) - You are creating something that depends on these - that is a risk
- Different kinds of dependencies - production dependencies - stuff needed to make the site run - dev dependencies - helpers and devtool
What About Your Project?
http://poweredbycoffee.co.uk
- Story of Smallbusiness.co.uk - using Timber (with routing) - timber goes v1 all fine - timber goes v1.1 site falls apart - routing was removed - wordpress updates to 4.6 and falls apart - dependencies to blame - installed routes -> installed wpcli -> requests - requests got included in wp 4.6 hence a conflict - site collapses
This Sounds Like a Nightmare
http://poweredbycoffee.co.uk
- managing all this manually shounds like a nightmare - install the librarys/whatever you tell it to in the version you tell it to - install all the things you need to run that thing as well. And the correct versions for it. - This is pretty cool - keeps your team using the same things - recorded in a file so you dont have to store them in your repo
You’ve probably already done something similar installing grunt/gulp/sass etc
getcomposer.org
- composer - composer.json - WordPress and composer are not natural friends - we need to move everything that might change in our repo out of the wordpress folder - htaccess - wp-config.php - wp-content - many good tutorials on the web for this - configure composer to work - get plugins and themes from github, packaginst and wp-packagist - satispress for premium plugins - wordpress maybe becoming a package - composer.json trac ticket
- get plugins and themes from github, packaginst and wp-packagist
- satispress for premium plugins
Composer & WordPress
http://poweredbycoffee.co.uk
https://core.trac.wordpress.org/ticket/23912
https://core.trac.wordpress.org/ticket/36335
WordPress may be becoming a composer package
Can Bite You
http://poweredbycoffee.co.uk
LeftPad
Cache stuff, mirror critical dependancies
Easy Ways To Get Started
http://poweredbycoffee.co.uk
- write stuff as small plugins - version control the plugin and use your repeats in projects - eg - wpmail-mailgun - envswitch - disable xmlrpc - google analytics
Repetition Sucks
http://poweredbycoffee.co.uk
Mistakes Get Made
People Get Bored
Creative people usually don't like to do the same thing over and over again.
Not a good use of skills and talent
anything that has to be done regularly and takes more than 2 minutes is a good candidate
Good Candidates for Automation
http://poweredbycoffee.co.uk
Deployments
Compiling Assets (Sass, CoffeeScript, etc)
Compressing Images
Setting up servers
Installing WordPress
Introduce myself (who I am, what I do)
Introduce the topic - imposter syndrome - creativity in churches - anger and identity
We need to ask a few questions?
I Hate FTP
http://poweredbycoffee.co.uk
- slow, insecure, inaccurate- who has had a site stop working because a file didn't transfer properly over FTP?- initial deploy is slow (huge sites)- updates are slow and error prone- enables bad behaviour and "cowboy coding"
Automated Deployments
http://poweredbycoffee.co.uk
No more slow or failed FTP transfers
Easily tied into your version control
Easily undo a mistake
Get new code into production with a few key stokes or clicks
- faster- use your version control backend- provide an audit trail- can be automated and customised to suit how your team works- version control branches and deployments- allows us to give clients visual updates super fast without having to code on the server
http://capistranorb.com
Introduce myself (who I am, what I do)
Introduce the topic - imposter syndrome - creativity in churches - anger and identity
We need to ask a few questions?
Capistrano
http://poweredbycoffee.co.uk
- Scriptable and self-installed
- Ruby
- Task Based
- Logs in to your server, pulls from your Version Control, runs a series of tasks
you tell it to.
- Super powerful and flexible
- ssh, git pull, run tasks - has role backs, supports multiple servers and roles. - Ruby /shrug - FREE & OpenSource - cap staging deploy - capistrano logs in to seach server and does a git pull - runs and tasks we tell in to eg `composer install` - then creates symlinks for any directories that are shared between releases - run any other tasks we might wants as well (eg assets/image compression etc)
Deploy HQ Deploy Bot Buddy
Introduce myself (who I am, what I do)
Introduce the topic - imposter syndrome - creativity in churches - anger and identity
We need to ask a few questions?
DeployBot (etc)
http://poweredbycoffee.co.uk
- Many of these services exist
- Hard to configure but just works when its done
- $/£/€
- Less control and less flexible but easier to setup
- logins via ssh - has a record of the last commit you deployed - git pulls onto their server - then transfers every files that has been modified since the last deployment
Standardising Environments
http://poweredbycoffee.co.uk
- this seems to create massive complexity - massively not worth it - riiiight up until it save you. - different versions of MySQL and PHP have different features - some of thee things are easy to change, some not - make it impossible to have a problem - pick one a build against it - utf8mb4 and MySQL < 5.5.3 - if you develop on one the try to move into production on another - you have a problem - PHP versions
Use Virtual Machines
http://poweredbycoffee.co.uk
- Virtual Machienes (Parallels etc)
vagrantup.com
not that cleverCLI interface and automation tool for VirtualBoxBecause no one wants to use virtual box
Where To Go Next?
http://poweredbycoffee.co.uk
- Automated Testing (Never ship something broken again)
- Visual Regression Testing (Make CSS changes less painful)
- Code Quality Checks (Stop bad code getting into your repo or near a server)
- Install Software on your servers with a few keystrokes
- Notifications and Integration with your other tools