Learn the craft of "DevOps" (Developer Operations) to easily/reliably deploy your App and keep it Up!
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.
"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
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.
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
https://www.healthlocker.uk to Azure.
We have clients who still own their own "Bare Metal" Servers.
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
- Linode: linode-setup.md
- DigitalOcean: nodejs-digital-ocean-centos-dokku.md
- 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
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
- 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
- https://en.wikipedia.org/wiki/DevOps
- https://theagileadmin.com/what-is-devops
- https://newrelic.com/devops/what-is-devops
- 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
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!