Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
Signed-off-by: Ahmed AbouZaid <[email protected]>
  • Loading branch information
aabouzaid committed Oct 5, 2024
1 parent ab9b576 commit 361940c
Show file tree
Hide file tree
Showing 42 changed files with 15,828 additions and 196 deletions.
45 changes: 45 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# https://docusaurus.io/docs/deployment#triggering-deployment-with-github-actions
name: Deploy to GitHub Pages

on:
push:
branches:
- dev

jobs:
build:
name: Build Docusaurus
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-node@v4
with:
node-version: 18
cache: npm
- name: Install dependencies
run: npm ci
- name: Build website
run: npm run build
- name: Upload Build Artifact
uses: actions/upload-pages-artifact@v3
with:
path: build

deploy:
name: Deploy to GitHub Pages
needs: build
# Grant GITHUB_TOKEN the permissions required to make a Pages deployment
permissions:
pages: write # to deploy to Pages
id-token: write # to verify the deployment originates from an appropriate source
# Deploy to the github-pages environment
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
20 changes: 20 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Dependencies
/node_modules

# Production
/build

# Generated files
.docusaurus
.cache-loader

# Misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local

npm-debug.log*
yarn-debug.log*
yarn-error.log*
10 changes: 3 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ The project follows the `Learning by Doing` method (aka `Problem-based Learning`
</a>
</p>

> [!NOTE]
> **NOTE**
> Each phase of this project is tackled gradually, part of the roadmap modules. But it's also **standalone**, and you can work on it if you have the required knowledge for each phase.
### 3. Mentorship Program
Expand Down Expand Up @@ -153,18 +153,14 @@ A plus point in the mentorship is that you will get access to the roadmap board
Visit [![Hive Box Project](https://img.shields.io/badge/HiveBox_Project-f39200?style=flat-square&logo=artifact-hub&logoColor=white)](projects/hivebox/README.md)
if you are interested in the DevOps hands-on project **only**. Continue if you want the full roadmap.

<p align="center">
<a href="https://devopshive.net/" style="display: block; padding: 1em 0; text-align: center;">
<img alt="DevSecOps Loop" border="0" width="600" data-original-height="602" data-original-width="1046" src="https://devopshive.net/images/devsecops.png"/>
</a>
</p>


---

### [Overview](./content/00-overview)

- [Introduction](./content/00-overview#introduction)
- [BSET Model and Focus Areas](./content/00-overview#bset-model-and-focus-areas)
- [BSETO Model and Focus Areas](./content/00-overview#bset-model-and-focus-areas)
- [How to use this roadmap?](./content/00-overview#how-to-use-this-roadmap)

### [Module 1: Welcome to the DevOps World](./content/01-module/)
Expand Down
3 changes: 3 additions & 0 deletions babel.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
module.exports = {
presets: [require.resolve('@docusaurus/core/lib/babel/preset')],
};
3 changes: 0 additions & 3 deletions content/06-module/README.md

This file was deleted.

3 changes: 0 additions & 3 deletions content/07-module/README.md

This file was deleted.

3 changes: 0 additions & 3 deletions content/08-next-steps/README.md

This file was deleted.

7 changes: 7 additions & 0 deletions docs/content/_category_.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
label: Modules
position: 2
collapsed: false
link:
type: generated-index
description: Dive into DevOps world with a plan!
Original file line number Diff line number Diff line change
@@ -1,73 +1,40 @@
# Overview

[🗂 Back to the Roadmap Index](../../README.md#roadmap-index)
---
title: "Introduction"
description: ""
---

## Table of Content
[🗂 Back to the Roadmap Index](../../getting-started)

- [Introduction](#introduction)
- [BSET Model and Focus Areas](#bset-model-and-focus-areas)
- [How to use this roadmap?](#how-to-use-this-roadmap)
<p align="center">
<a href="https://devopshive.net/">
<img alt="DevSecOps Loop" border="0" width="600" data-original-height="602" data-original-width="1046" src="https://devopshive.net/images/devsecops.png"/>
</a>
</p>

## Introduction
## Overview

<a href="../img/devops-roadmap-dynamic.png" imageanchor="1">
<img alt="Linear DevOps roadmap is broken by default" align="right" width="30%" src="../img/devops-roadmap-dynamic.png" />
</a>
Starting a DevOps engineer role is challenging because the DevOps model has various implementations and patterns. It's even more complicated (but still possible) if that's your first job without previous software industry experience. Yet, many learning roadmaps like [roadmap.sh/devops](https://roadmap.sh/devops) still follow a linear path (i.e., learn some topic to the end, then move to another, and so on) which doesn't work well with the DevOps role because a skilled DevOps engineer is a T-Shaped skilled.

Starting a DevOps engineer role is challenging because the DevOps model has various implementations and patterns. It's even more complicated (but still possible) if that's your first job without previous software industry experience. Yet, many learning roadmaps like [roadmap.sh/devops](https://roadmap.sh/devops) still follow a linear path (i.e., learn some topic to the end, then move to another, and so on) which doesn't work well with the DevOps role because a skilled DevOps engineer is a T-Shaped skilled. Adopting a dynamic MVP learning roadmap increases your chances of entering the market and starting your first job as a DevOps engineer without previous software hands-on experience.
Adopting a dynamic MVP learning roadmap increases your chances of entering the market and starting your first job as a DevOps engineer without previous software hands-on experience.

Hence, this roadmap comes to fill that gap using the same Agile methodologies using a `dynamic MVP-style roadmap` with hands-on projects designed by an experienced DevOps engineer has been highly successful.

That means **first, understand the problem instead of just learning a bunch of tools** then **using iterative style, each iteration will cover most DevOps areas used in the job** to build a T-shaped skills profile from day one! It's also essential to set the targeted market and organizations because, with different DevOps topologies, the DevOps engineer role requirements vary a lot.

## BSET Model and Focus Areas
## Learning Strategy

This roadmap is designed as a hands-on and progressive project. It's not just about tech aspects of the DevOps, but also end-to-end software production as you will do in your daily job. For that reason, the roadmap mainly follows a modified version of the [SET model](https://morethandigital.info/en/set-model-for-business-strategy-planning-survive-expand-transform/). But instead of `survive, expand, transform` it's `basics, start, expand, transform`. So even though SET model is more about business, but here we are using the same notion to build a roadmap like real-world.

## Focus Areas

Technical-wise, the roadmap focuses on typical DevOps Engineer who is part of a software company, yet, it still shares at least 90% of the needed skills with the other roles like Cloud Engineer, Platform Engineer, and SRE.

The roadmap has a [multiphase industry-grad project](../projects/hivebox/) follows `Learning by Doing` method (aka `Problem-based Learning`) which is also done in iterative phases where you learn as you go and cover the whole DevOps cycle like Code, Containers, Testing, Continuous Integration, Continuous Delivery, Observability, and Infrastructure. Each phase of this project is tackled gradually, part of the roadmap modules. But it's also **standalone**, and you can work on it if you have the required knowledge for each phase.

Finally, this roadmap is designed for the cloud-native post-container era, which means it will mainly focus on modern practices like Cloud, Docker, and Kubernetes. That doesn't mean everything should be complex, but just about [treating your servers like cattle, not pets](https://www.hava.io/blog/cattle-vs-pets-devops-explained). For example, using Kubernetes doesn't always mean you need to create or manage Kubernetes clusters! There are now many serverless Kubernetes solutions like AWS EKS Fargate or GCP GKE Autopilot. So this roadmap doesn't claim there is a one way of doing DevOps, because DevOps already has many [implementations and topologies](https://web.devopstopologies.com/), but as mentioned focus on modern practices and technologies.

## How to use this roadmap?

This roadmap is `polymorphic`, which means it's designed to work in different modes, depending on how fast you want to go.

### 1. Self-Learning Course

This mode is the default and is available for everyone in this repo. In this mode, you are not expected to have DevOps experience, and you want to go from zero to hero, transforming your knowledge to land your first job as a DevOps Engineer.

How to process:
## DevOps Topologies

- Read each module in the roadmap in the same order.
- In each module, you will find two sections:
- `What you need to know`: It emphasizes the most important points and areas you should know about as a DevOps Engineer.
- `Resources`: It provides some learning resources, but you are free to learn from any other resources.
- In this mode, you manage all your learning plans by yourself, and we highly recommend asking a Senior DevOps Engineer (a friend or someone from the community) to review your plans and progress.

### 2. Hands-on Project

In this mode, you already have some experience with DevOps (usually between 1-2 years of work experience). Still, you want to further your skills with a real hands-on industry-grad project to learn DevOps pragmatically. This mode is also available to everyone in this repo.

The project follows the `Learning by Doing` method (aka `Problem-based Learning`), which is done in iterative phases. In this method, you learn as you go and cover the whole DevOps cycle.

How to process:

- [Go to the HiveBox hands-on project](../../projects/hivebox/README.md).
- Read the intro of the project and the goals of it.
- Follow and implement the requests of each phase in the same order.
- Each stage builds on the previous stage (the phases are continued, not separated).

> [!NOTE]
> Each phase of this project is tackled gradually as part of the roadmap modules. But it's also **standalone**, and you can work on it if you have the required knowledge for each phase.
### 3. Mentorship Program

This mode covers the previous two modes (that means it could be only for the project or the whole roadmap) but with support from a `mentor`! [DevOps Hive](https://devopshive.net/) will provide you with a DevOps expert who will guide you in following up on your progress and personalizing your learning plan.

A plus point in the mentorship is that you will get access to the roadmap board, where you can utilize Agile methodologies like Epics and Kanban to implement the plan. This will incorporate real-world scenarios and best practices, which you will use in a real job when working in an Agile environment.
Finally, this roadmap is designed for the cloud-native post-container era, which means it will mainly focus on modern practices like Cloud, Docker, and Kubernetes. That doesn't mean everything should be complex, but just about [treating your servers like cattle, not pets](https://www.hava.io/blog/cattle-vs-pets-devops-explained). For example, using Kubernetes doesn't always mean you need to create or manage Kubernetes clusters! There are now many serverless Kubernetes solutions like AWS EKS Fargate or GCP GKE Autopilot. So this roadmap doesn't claim there is a one way of doing DevOps, because DevOps already has many [implementations and topologies](https://web.devopstopologies.com/), but as mentioned focus on modern practices and technologies.

---

If you are done, [🗂 Back to the Roadmap Index](../../README.md#roadmap-index)
If you are done, [🗂 Back to the Roadmap Index](../../getting-started)
25 changes: 8 additions & 17 deletions content/01-module/README.md → docs/content/module-01/README.md
Original file line number Diff line number Diff line change
@@ -1,19 +1,10 @@
# Module 1: Welcome to the DevOps World

[🗂 Back to the Roadmap Index](../../README.md#roadmap-index)

## Table of Content

- [1.1 Introduction - What and Why DevOps?](#11-introduction---what-and-why-devops)
- [1.2 Software Production - Software Development Life Cycle](#12-software-production---software-development-life-cycle)
- [1.3 Software Production - Agile Software Development](#13-software-production---agile-software-development)
- [1.4 Software Production - Change Management and Golden Triangle](#14-software-production---change-management-and-golden-triangle)
- [1.5 DevOps Methodology - DevOps and DevSecOps Core Pillars](#15-devops-methodology---devops-and-devsecops-core-pillars)
- [1.6 DevOps Methodology - DevOps, Cloud, Platform Engineer, and SRE](#16-devops-methodology---devops-cloud-platform-engineer-and-sre)
- [1.7 DevOps Methodology - T-Shaped Skills DevOps Engineer](#17-devops-methodology---t-shaped-skills-devops-engineer)
- [1.8 Project - HiveBox Phase 1](#18-project---hivebox-phase-1)
---
title: "Module 1: Welcome to the DevOps World"
sidebar_label: "Welcome to the DevOps World"
description: ""
---

## 1.1 Introduction - What and Why DevOps?
[🗂 Back to the Roadmap Index](../../getting-started)

DevOps is a set of `practices`, `cultural`, `tools` and most importantly `mindset` which aims to improving collaboration and communication between software development (Dev) and operations (Ops) teams. It seeks to dismantle the conventional operational silos and promotes a collaborative, automated, and sustainable culture. Which enhances the efficiency of the whole software development lifecycle (starting from planning, coding, testing, deployment, and operations).

Expand Down Expand Up @@ -147,8 +138,8 @@ The Software Development Life Cycle (SDLC) is a process or set of phases that gu

## 1.8 Project - HiveBox Phase 1

Follow the instructions in the [HiveBox project phase 1](../../projects/hivebox/README.md#phase-1).
Follow the instructions in the [HiveBox project phase 1](../../projects/hivebox#phase-1).

---

If you are done, [🗂 Back to the Roadmap Index](../../README.md#roadmap-index)
If you are done, [🗂 Back to the Roadmap Index](../../getting-started)
24 changes: 8 additions & 16 deletions content/02-module/README.md → docs/content/module-02/README.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,10 @@
# Module 2: Basics - DevOps Core

[🗂 Back to the Roadmap Index](../../README.md#roadmap-index)

## Table of Content
---
title: "Module 2: Basics - DevOps Core"
sidebar_label: "Basics - DevOps Core"
description: ""
---

- [2.1 Code - Python Fundamentals](#21-code---python-fundamentals)
- [2.2 Code - Common Development Tools](#22-code---common-development-tools)
- [2.3 Code - Git Basics](#23-code---git-basics)
- [2.4 Operating System - Linux Fundamentals](#24-operating-system---linux-fundamentals)
- [2.5 Operating System - Common Tools and Commands](#25-operating-system---common-tools-and-commands)
- [2.6 Operating System - Bash Scripting Basics](#26-operating-system---bash-scripting-basics)
- [2.7 Containers - Docker Fundamentals](#27-containers---docker-fundamentals)
- [2.8 Containers - Docker CLI Basics](#28-containers---docker-cli-basics)
- [2.9 Project - HiveBox Phase 2](#29-project---hivebox-phase-2)
[🗂 Back to the Roadmap Index](../../getting-started)

## 2.1 Code - Python Fundamentals

Expand Down Expand Up @@ -140,8 +132,8 @@

## 2.9 Project - HiveBox Phase 2

Follow the instructions in the [HiveBox project phase 2](../../projects/hivebox/README.md#phase-2).
Follow the instructions in the [HiveBox project phase 2](../../projects/hivebox#phase-2).

---

If you are done, [🗂 Back to the Roadmap Index](../../README.md#roadmap-index)
If you are done, [🗂 Back to the Roadmap Index](../../getting-started)
24 changes: 8 additions & 16 deletions content/03-module/README.md → docs/content/module-03/README.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,10 @@
# Module 3: Start - Laying the Foundation

[🗂 Back to the Roadmap Index](../../README.md#roadmap-index)

## Table of Content
---
title: "Module 3: Start - Laying the Foundation"
sidebar_label: "Start - Laying the Foundation"
description: ""
---

- [3.1 Planning - Define Goals and Requirements](#31-planning---define-goals-and-requirements)
- [3.2 Code - Modularity and Reusability](#32-code---modularity-and-reusability)
- [3.3 Code - Testing and Quality Assurance](#33-code---testing-and-quality-assurance)
- [3.4 Code - Writing Unit Tests](#34-code---writing-unit-tests)
- [3.5 Containers - Docker Best Practices](#35-containers---docker-best-practices)
- [3.6 Continuous Integration - Introduction and Solutions in the Market](#36-continuous-integration---introduction-and-solutions-in-the-market)
- [3.7 Continuous Integration - GitHub Actions Essentials](./main/content/03-module#37-continuous-integration---github-actions-essentials)
- [3.8 Continuous Integration - Pipelines and Quality Gates](#38-continuous-integration---pipelines-and-quality-gates)
- [3.9 Project - HiveBox Phase 3](#39-project---hivebox-phase-3)
[🗂 Back to the Roadmap Index](../../getting-started)

## 3.1 Planning - Define Goals and Requirements

Expand Down Expand Up @@ -157,8 +149,8 @@

## 3.9 Project - HiveBox Phase 3

Follow the instructions in the [HiveBox project phase 3](../../projects/hivebox/README.md#phase-3).
Follow the instructions in the [HiveBox project phase 3](../../projects/hivebox#phase-3).

---

If you are done, [🗂 Back to the Roadmap Index](../../README.md#roadmap-index)
If you are done, [🗂 Back to the Roadmap Index](../../getting-started)
26 changes: 9 additions & 17 deletions content/04-module/README.md → docs/content/module-04/README.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,10 @@
# Module 4: Expand - Constructing a Shell

[🗂 Back to the Roadmap Index](../../README.md#roadmap-index)

## Table of Content
---
title: "Module 4: Expand - Constructing a Shell"
sidebar_label: "Expand - Constructing a Shell"
description: ""
---

- [4.1 Planning - Review the Goals and Requirements](#41-planning---review-the-goals-and-requirements)
- [4.2 Code - Twelve-Factor App Methodology](#42-code---twelve-factor-app-methodology)
- [4.3 Code - REST API Best Practices](#43-code---rest-api-best-practices)
- [4.4 Continuous Integration - CI Best Practices](#44-continuous-integration---ci-best-practices)
- [4.5 Containers - Kubernetes Overview and Core Concepts](#45-containers---kubernetes-overview-and-core-concepts)
- [4.6 Observability - Monitoring Application and Infrastructure](#46-observability---monitoring-application-and-infrastructure)
- [4.7 Continuous Delivery - Introduction and Solutions in the Market](#47-continuous-delivery---introduction-and-solutions-in-the-market)
- [4.8 Infrastructure - Cloud Computing and Cloud Native Applications](#48-infrastructure---cloud-computing-and-cloud-native-applications)
- [4.9 Project - HiveBox Phase 4](#49-project---hivebox-phase-4)
[🗂 Back to the Roadmap Index](../../getting-started)

## 4.1 Planning - Review the Goals and Requirements

Expand Down Expand Up @@ -114,7 +106,7 @@
- Scalability and modularity are supported efficiently.
- Kubernetes has become the *de facto* standard for container orchestration and is widely adopted in private and public sectors. According to a survey by the [Cloud Native Computing Foundation (CNCF) 2023](https://www.cncf.io/reports/cncf-annual-survey-2023/), **66% of consumers were using Kubernetes in production** and **18% were evaluating it** (84% total).

<img align="right" width="40%" style="margin:0 0 10px 10px" src="./4.5-kubernetes-core-concepts.png">
<img align="right" width="40%" src="./4.5-kubernetes-core-concepts.png"></img>

- Let's have a quick overview about Containers, Docker, and Kubernetes Containers:
- **Containers:** Technology for packaging an application and its Docker runtime dependencies.
Expand Down Expand Up @@ -190,8 +182,8 @@

## 4.9 Project - HiveBox Phase 4

Follow the instructions in the [HiveBox project phase 4](../../projects/hivebox/README.md#phase-4).
Follow the instructions in the [HiveBox project phase 4](../../projects/hivebox#phase-4).

---

If you are done, [🗂 Back to the Roadmap Index](../../README.md#roadmap-index)
If you are done, [🗂 Back to the Roadmap Index](../../getting-started)
Loading

0 comments on commit 361940c

Please sign in to comment.