{"id":13581358,"url":"https://github.com/dwyl/learn-devops","last_synced_at":"2025-04-06T07:32:02.382Z","repository":{"id":40633232,"uuid":"91320889","full_name":"dwyl/learn-devops","owner":"dwyl","description":"🚧 Learn the craft of \"DevOps\" (Developer Operations) to Deploy your App and Monitor it so it stays \"Up\"! ","archived":false,"fork":false,"pushed_at":"2025-03-25T12:15:21.000Z","size":186,"stargazers_count":431,"open_issues_count":41,"forks_count":175,"subscribers_count":16,"default_branch":"main","last_synced_at":"2025-03-30T10:35:05.636Z","etag":null,"topics":["automation","aws","azure","deployment","dev-infra","devops","devops-tools","digitalocean","docker","dokku","heroku","linode"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dwyl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-05-15T09:40:01.000Z","updated_at":"2025-03-25T12:39:02.000Z","dependencies_parsed_at":"2025-03-22T07:19:25.736Z","dependency_job_id":"001a96d4-c71c-4622-b125-2a9dbd82c16b","html_url":"https://github.com/dwyl/learn-devops","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dwyl%2Flearn-devops","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dwyl%2Flearn-devops/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dwyl%2Flearn-devops/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dwyl%2Flearn-devops/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dwyl","download_url":"https://codeload.github.com/dwyl/learn-devops/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247450226,"owners_count":20940880,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","aws","azure","deployment","dev-infra","devops","devops-tools","digitalocean","docker","dokku","heroku","linode"],"created_at":"2024-08-01T15:02:00.765Z","updated_at":"2025-04-06T07:32:02.376Z","avatar_url":"https://github.com/dwyl.png","language":"Shell","readme":"\u003cdiv align=\"center\"\u003e\n\n# Learn DevOps\n\nLearn the craft of DevOps (Developer Operations)\nto _reliably_ deploy your App and keep it Up!\n\n![devops-process](https://user-images.githubusercontent.com/194400/28494977-ce74a632-6f36-11e7-9f86-f48abde49479.png)\n\n\u003c/div\u003e\n\n## Why?\n\nYou should learn more \"advanced\" DevOps if:\n\n- You / your team have _out-grown_\n  [**Heroku**](https://github.com/dwyl/learn-heroku)\n  (_e.g: your Heroku bill is more than \\$100/month_)\n- You want **more control** over your infrastructure\n  e.g: to run a specific version of software or database.\n- Your client/boss has instructed you\n  to use a _specific_ cloud provider.\n- **_Curiosity_** to _extend_ your\n  **backend infrastructure knowledge** to be a more\n  _well-rounded_ engineer.\n\n## What?\n\n\u003e \"_DevOps integrates developers and operations teams\n\u003e in order to improve collaboration and productivity\n\u003e by automating infrastructure, automating workflows\n\u003e and continuously measuring application performance._\"\n\u003e from: [\"**What is DevOps**?\"](https://youtu.be/_I94-tJlovg) by RackSpace\n\n## Who?\n\nEveryone that wants to _seriously consider/call_ themself\na \"**_Full Stack_**\" **Developer** **_must_** know how to deploy,\n_secure_ and _monitor_ their app on their chosen infrastructure.\n\n## How?\n\nOver the years we @dwyl have deployed/managed Apps,\nboth our own and those of our clients,\non a wide variety of infrastructure and platform providers.\n\n_Most_ of our Apps have been deployed to **Amazon Web Services** (\"**AWS**\")\ne.g: https://www.sciencemuseum.org.uk \u003cbr /\u003e\nWe have _several_ clients who use (_and **love**_) Heroku e.g:\nhttps://www.ellenmacarthurfoundation.org \u003cbr /\u003e\nFor the National Health Service (NHS) in England,\n(_who have a major contract with Microsoft_)\nwe deployed to Microsoft Azure. \u003cbr /\u003e\nWe have clients who still own their own \"_Bare Metal_\" Servers.\n\n### Provider-Specific Guides\n\nWe have produced a guide for each of our most-used\ninfrastructure/platform providers:\n\n- AWS:\n  [dwyl/learn-amazon-web-services](https://github.com/dwyl/learn-amazon-web-services)\n- AWS Lambda:\n  [dwyl/learn-aws-lambda](https://github.com/dwyl/learn-aws-lambda)\n- Azure:\n  [dwyl/learn-microsoft-azure](https://github.com/dwyl/learn-microsoft-azure)\n- Heroku:\n  [dwyl/learn-heroku](https://github.com/dwyl/learn-heroku)\n- Fly.io:\n  [fly-phoenix-setup.md](https://github.com/dwyl/learn-devops/blob/master/fly-phoenix-setup.md)\n- Linode:\n  [linode-setup.md](https://github.com/dwyl/learn-devops/blob/master/linode-setup.md)\n- DigitalOcean:\n  [nodejs-digital-ocean-centos-dokku.md](https://github.com/dwyl/learn-devops/blob/master/nodejs-digital-ocean-centos-dokku.md)\n\n### `Gogs` Git Server\n\nWe needed to run a our own `Git` server\nfor one of our projects.\nSo we deployed `Gogs`\nboth `locally` and to Fly.io\nand documented it:\n[`/gogs`](gogs/README.md)\n\n### Node.js\n\n- Node.js with Dokku:\n  [nodejs-digital-ocean-centos-dokku.md](https://github.com/dwyl/learn-devops/blob/master/nodejs-digital-ocean-centos-dokku.md)\n- Node.js \"Zero Downtime\" Production Deployment with PM2:\n  [nodejs-pm2-zero-downtime.md](https://github.com/dwyl/learn-devops/blob/master/nodejs-pm2-zero-downtime.md)\n\n\u003e If you would like to see a guide for a _different_ service provider,\n\u003e please open an issue with your suggestion(s):\n\u003e https://github.com/dwyl/learn-devops/issues\n\n### Testing, Continuous Integration \u0026 Delivery\n\nDeployment is what you do with your app once you have\nbuilt, tested and documented it.\n\nIf you are unfamiliar with Test-Driven Development (TDD),\nplease see: https://github.com/dwyl/learn-tdd \u003cbr /\u003e\n\nNext you should be proficient with Continuous Integration.\nFor that we recommend using Travis-CI, see:\n[https://github.com/dwyl/**learn-travis**](https://github.com/dwyl/learn-travis)\n\nhttps://github.com/dwyl/learn-travis/blob/master/encrypted-ssh-keys-deployment.md\n\n\u003c!--\n### _First_ Upgrade Deployment\n\nBuild Upgrade based on the version currently on Staging:\n```\nmix edeliver build upgrade --auto-version=git-revision --from=$(1.0.3) --to=$(git rev-parse HEAD) --verbose --branch=continuous-delivery\n```\n\nGet the version that was created and use it as the `--version` in the next command:\n\n```\nmix edeliver deploy upgrade to production --version=1.0.3+3a4f948 --verbose\n```\n\n\n\u003e _**NOTE**: We have an **Open issue** for deploying an **UPGRADE**\nvia Continuous Integration:_ https://github.com/dwyl/learn-devops/issues/19 \u003cbr /\u003e\n\u003e _We requested help on:_ https://github.com/edeliver/edeliver/issues/234 \u003cbr /\u003e\n\u003e _But sadly, no reply, yet ..._\n_if you have time to help please comment on the issue!_\n--\u003e\n\n## Resources\n\n### Videos\n\n- What is DevOps:\n  [youtu.be/I7vHqXY22gg](https://youtu.be/I7vHqXY22gg)\n- What is DevOps? - In Simple English:\n  [youtu.be/_I94-tJlovg](https://youtu.be/_I94-tJlovg)\n  (_good info but last minute is a RackSpace pitch_)\n- DevOps for Beginners Course Introduction:\n  [youtu.be/v7ZcZfGBFcU](https://youtu.be/v7ZcZfGBFcU)\n\n### Background Reading\n\n- [wikipedia.org/DevOps](https://en.wikipedia.org/wiki/DevOps)\n- [theagileadmin.com/what-is-devops](https://theagileadmin.com/what-is-devops)\n- [newrelic.com/devops/what-is-devops](https://newrelic.com/devops/what-is-devops)\n- [logit.io/blog/post/what-is-devops](https://logit.io/blog/post/what-is-devops)\n\n### Linode-specific How-tos\n\n- SSH with Public Keys:\n  https://www.linode.com/docs/security/use-public-key-authentication-with-ssh\n- Using Vagrant for Environment Management:\n  https://www.linode.com/docs/applications/configuration-management/vagrant-linode-environments\n\n### Using a Different Cloud Infrastructure Provider?\n\nWhile this tutorial has focussed on using Linode,\nwe @dwyl have _experience_ of using _several_ infrastructure providers:\n\n- Amazon Web Services: https://github.com/dwyl/learn-amazon-web-services\n- Azure: https://github.com/dwyl/learn-microsoft-azure\n- Digital Ocean: https://github.com/dwyl/DigitalOcean-Setup\n- Heroku: https://github.com/dwyl/learn-heroku\n\nif you have a question specific to using Linode or one of the _other_\n\"cloud\" providers, please\n[**open an _issue_**](https://github.com/dwyl/learn-devops/issues)\nand we will attempt to help!\n\n\u003c!--\n\n## \u003csup\u003e1\u003c/sup\u003eWhy Not \"_Just Use Heroku_\"?\n\nHeroku is great for _most_ use-cases.\nBut it gets _expensive_ very quickly!\nThe moment you start to pay for an app it's $7/month\n(_which may not sound \"expensive\" on the surface_)\nBut it's the _Database_ that's the _expensive_ part!\n\n### Heroku Database _Extortion_\n\nThe moment you go beyond the \"_hobby_\" plan:\n![heroku-hobby-dev](https://user-images.githubusercontent.com/194400/28563894-543876d8-711f-11e7-9b09-cb548e10ee84.png)\n\n![heroku-hobby-basic](https://user-images.githubusercontent.com/194400/28563938-77966842-711f-11e7-9668-eaa694325a79.png)\n\n![heroku-database-pricing](https://user-images.githubusercontent.com/194400/28563258-4e7628d2-711d-11e7-81e0-b3997d9d05ca.png)\n\nAs you can see, from the pricing, the _resources_ do offer value-for money\nonce the project's database goes above a certain size.\n\n--\u003e\n\u003cbr /\u003e\nThanks for learning with us!\nYour feedback/questions is always welcome.\nPlease star if you found this useful. ⭐ 🙏\n\u003cbr /\u003e\n\n[![contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat-square)](https://github.com/dwyl/learn-devops/issues)\n[![HitCount](http://hits.dwyl.com/dwyl/learn-devops.svg)](http://hits.dwyl.com/dwyl/learn-devops)","funding_links":[],"categories":["Shell"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdwyl%2Flearn-devops","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdwyl%2Flearn-devops","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdwyl%2Flearn-devops/lists"}