learn-devops
learn-devops copied to clipboard
🚧 Learn the craft of "DevOps" (Developer Operations) to Deploy your App and Monitor it so it stays "Up"!
Learn DevOps
Learn the craft of "DevOps" (Developer Operations) to reliably deploy your App and keep it Up!
Why?
You should learn more "advanced" DevOps if:
- You / your team have "out-grown" Heroku (e.g: your Heroku bill is more than $100/month)
- You want "more control" over your infrastructure e.g: to run a specific version of software or database.
- Your client/boss has instructed you to use a specific "cloud" provider.
- Curiosity to extend your "back end infrastructure" knowledge to be a more "well-rounded" developer.
What?
"DevOps integrates developers and operations teams in order to improve collaboration and productivity by automating infrastructure, automating workflows and continuously measuring application performance." from: "What is DevOps?" by RackSpace
Who?
Everyone that wants to seriously consider/call themself a "Full Stack" Developer must know how to deploy, secure and monitor their app on their chosen infrastructure.
How?
Over the years we @dwyl have deployed/managed Apps, both our own and those of our clients, on a wide variety of infrastructure and platform providers.
Most of our Apps have been deployed to Amazon Web Services ("AWS")
e.g: https://www.sciencemuseum.org.uk
We have several clients who use (and love) Heroku e.g:
https://www.ellenmacarthurfoundation.org
For the National Health Service (NHS) in England,
(who have a major contract with Microsoft)
we deployed to Microsoft Azure.
We have clients who still own their own "Bare Metal" Servers.
Provider-Specific Guides
We have produced a guide for each of our most-used infrastructure/platform providers:
- AWS: https://github.com/dwyl/learn-amazon-web-services
- AWS Lambda: https://github.com/dwyl/learn-aws-lambda
- Azure: https://github.com/dwyl/learn-microsoft-azure
- Heroku: https://github.com/dwyl/learn-heroku
- Fly.io: fly-phoenix-setup.md
- Linode: linode-setup.md
- DigitalOcean: nodejs-digital-ocean-centos-dokku.md
Gogs
Git Server
We needed to run a our own Git
server
for one of our projects.
So we deployed Gogs
both locally
and to Fly.io
and documented it:
/gogs
Node.js
- Node.js with Dokku: nodejs-digital-ocean-centos-dokku.md
- Node.js "Zero Downtime" Production Deployment with PM2: nodejs-pm2-zero-downtime.md
If you would like to see a guide for a different service provider, please open an issue with your suggestion(s): https://github.com/dwyl/learn-devops/issues
Testing, Continuous Integration & Delivery
Deployment is what you do with your app once you have built, tested and documented it.
If you are unfamiliar with Test-Driven Development (TDD),
please see: https://github.com/dwyl/learn-tdd
Next you should be proficient with Continuous Integration. For that we recommend using Travis-CI, see: https://github.com/dwyl/learn-travis
https://github.com/dwyl/learn-travis/blob/master/encrypted-ssh-keys-deployment.md
Resources
Videos
- What is DevOps: https://youtu.be/I7vHqXY22gg
- What is DevOps? - In Simple English: https://youtu.be/_I94-tJlovg (good info but last minute is a RackSpace pitch)
- DevOps for Beginners Course Introduction: https://youtu.be/v7ZcZfGBFcU
Background Reading
- https://en.wikipedia.org/wiki/DevOps
- https://theagileadmin.com/what-is-devops
- https://newrelic.com/devops/what-is-devops
- https://logit.io/blog/post/what-is-devops
Linode-specific How-tos
- SSH with Public Keys: https://www.linode.com/docs/security/use-public-key-authentication-with-ssh
- Using Vagrant for Environment Management: https://www.linode.com/docs/applications/configuration-management/vagrant-linode-environments
Using a Different Cloud Infrastructure Provider?
While this tutorial has focussed on using Linode, we @dwyl have experience of using several infrastructure providers:
- Amazon Web Services: https://github.com/dwyl/learn-amazon-web-services
- Azure: https://github.com/dwyl/learn-microsoft-azure
- Digital Ocean: https://github.com/dwyl/DigitalOcean-Setup
- Heroku: https://github.com/dwyl/learn-heroku
if you have a question specific to using Linode or one of the other "cloud" providers, please open an issue and we will attempt to help!
Thanks for learning with us! Your feedback/questions is always welcome.