Skip to content

Commit a5b3055

Browse files
committed
add new devops page
1 parent 4d0118f commit a5b3055

File tree

3 files changed

+228
-62
lines changed

3 files changed

+228
-62
lines changed

docs/images/cicd-pipeline.PNG

305 KB
Loading

docs/pages/devops_intro.html

+190-25
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,190 @@
1-
<!DOCTYPE html>
2-
<html lang="en">
3-
<head>
4-
<meta charset="UTF-8">
5-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
6-
<title>Brief Intro</title>
7-
</head>
8-
<body>
9-
<h2>Hello there!</h2>
10-
<p>I don't know how you stumbled upon my corner of the internet, but I'm glad you're here.</p>
11-
<h2>Brief Intro</h2>
12-
<p>Welcome to my little slice of cyberspace! G-yan isn't my official name, but some friends call me that—long story short, it stuck. I'm a DevOps engineer with an insatiable passion for cutting-edge technologies. I'm in the process of creating this website where I'll study, research, and document all things tech, and then host it on GitHub Pages.</p>
13-
<p>This site is designed to be a treasure trove of knowledge for System Administrators, DevOps aficionados, and SRE professionals. If you’ve accidentally landed here, sit tight. You're in for a ride filled with tech insights, a dash of humor, and perhaps a few surprises. Buckle up and enjoy! Lol!</p>
14-
<h2>Tech Humor Corner</h2>
15-
<p>While you're here, why not enjoy a few tech-themed jokes? After all, even code needs a bit of fun!</p>
16-
<pre>$touch<br>Ever feel like you need to create a new file in your life? Just use touch—no strings attached!</pre>
17-
<pre>$top<br> When people ask me how I manage to stay so productive, I just tell them I’m always on top.</pre>
18-
<pre>$finger<br>Don’t worry, it’s not what you think. Just a friendly way to find out more about someone in Unix.</pre>
19-
<pre>$sleep<br>If only I could sleep 8 hours every night—life would be so much easier.</pre>
20-
<pre>$date<br>Why go on Tinder when you can simply type date and get one instantly?</pre>
21-
<pre>$kill<br>Sometimes, you just need to kill those bad processes—no crime shows required.</pre>
22-
<pre>$man<br>Looking for guidance? Just ask the man. He’s got all the answers.</pre>
23-
<p>So, whether you're here for the laughs, the learning, or a little bit of both, welcome! Feel free to explore, and don’t hesitate to reach out if you have questions or just want to share a joke of your own.</p>
24-
</body>
25-
</html>
1+
<p>DevOps covers the whole software development lifecycle, so you work with lots of different tools and technologies. Plus, DevOps is still evolving and there are lots of new tools being developed all the time.</p>
2+
<p>&nbsp;</p>
3+
<img src="images/cicd-pipeline.png" alt="CI/CD pipeline example">
4+
<p>&nbsp;</p>
5+
<p>From which background are you transitioning into DevOps?</p>
6+
<ol>
7+
<li>System administrator </li>
8+
<li>Software developer </li>
9+
<li>Test automation engineer</li>
10+
<li>Network engineer</li>
11+
<li>OR, with just a little IT knowledge</li>
12+
</ol>
13+
<p>&nbsp;</p>
14+
<p>Depending on which background and pre-knowledge you have, you need to first make sure to get any missing prerequisite knowledge.</p>
15+
<p>&nbsp;</p>
16+
<p>As a system administrator or a network engineer, learn software development workflows. As a developer, learn the basics of infrastructure, virtual servers etc. Of course, with zero or little IT background, you have to get all this prerequisite knowledge from server administration to development first.</p>
17+
<p>&nbsp;</p>
18+
<h2><span style="color:#f44336;"><strong>Start here:</strong></span></h2>
19+
<h3><strong>1. Concepts of Software Development</strong></h3>
20+
<p>&nbsp;</p>
21+
<p>As a DevOps engineer you will not be programming the application, but as you are working closely with the development team to improve and automate tasks for them, you need to understand the concepts of:</p>
22+
<ul>
23+
<li>How developers work and collaborate (Agile, Jira workflows)</li>
24+
<li>What Git workflow they use</li>
25+
<li>How applications are configured (Build &amp; packaging tools)</li>
26+
<li>Automated testing and test scopes</li>
27+
</ul>
28+
<p>&nbsp;</p>
29+
<p>And generally understand what the whole software development lifecycle covers from idea to code, all the way to releasing it to end users.</p>
30+
<p>&nbsp;</p>
31+
<h3>2. OS &amp; Linux Basics</h3>
32+
<p>&nbsp;</p>
33+
<p>As a DevOps engineer you are responsible for preparing and maintaining the infrastructure (servers) on which the application is deployed. So you need to know the basics of how to administer a server and install different tools on it.</p>
34+
<p>&nbsp;</p>
35+
<p>Since most servers use Linux OS, you need to know and feel comfortable using Linux, especially its Command Line Interface. Basic concepts of Operating Systems you need to understand:</p>
36+
<ul>
37+
<li>Shell Commands</li>
38+
<li>Linux File System &amp; Permissions</li>
39+
<li>SSH Key Management</li>
40+
<li>Virtualization</li>
41+
</ul>
42+
<p>&nbsp;</p>
43+
<p>You also need to know the basics of Networking &amp; Security in order to configure the infrastructure.</p>
44+
<ul>
45+
<li>Configure Firewalls to secure access</li>
46+
<li>Understand how IP addresses, ports and DNS works</li>
47+
<li>Load Balancers</li>
48+
<li>Proxies</li>
49+
<li>HTTP/HTTPS</li>
50+
</ul>
51+
<p>&nbsp;</p>
52+
<h3>3. Containerization - Docker</h3>
53+
<p>&nbsp;</p>
54+
<p>Docker is by far the most popular container technology.</p>
55+
<p>As containers have become the new standard of software packaging, you will most probably run your application as a container. This means you need to generally understand:</p>
56+
<ul>
57+
<li>Concepts of virtualization</li>
58+
<li>Concepts of containerization</li>
59+
<li>How to manage containerized applications on a server</li>
60+
</ul>
61+
<p>&nbsp;</p>
62+
<p>A container is a standard unit of software that packages up code and all its dependencies so that the application runs quickly and reliably in any computing environment. Things you should know:</p>
63+
<ul>
64+
<li>Run containers</li>
65+
<li>Inspect active containers</li>
66+
<li>Docker Networking</li>
67+
<li>Persist data with Docker Volumes</li>
68+
<li>Dockerize apps using Dockerfiles</li>
69+
<li>Run multiple containers using Docker-Compose</li>
70+
<li>Work with Docker Repository</li>
71+
</ul>
72+
<p>&nbsp;</p>
73+
<h3>4. CI/CD Pipelines - Jenkins</h3>
74+
<p>&nbsp;</p>
75+
<p>CI/CD is kind of the heart of DevOps. In DevOps, all code changes, like new features or bug fixes, need to be integrated into the existing application and deployed to the end users continuously and in an automated way. Hence, the term: Continuous Integration and Continuous Deployment (CI/CD).</p>
76+
<p>&nbsp;</p>
77+
<p>When the feature or bug-fix is done, a pipeline running on a CI server (e.g. Jenkins) should be triggered automatically, which:</p>
78+
<ol>
79+
<li>Runs the tests</li>
80+
<li>Packages the application</li>
81+
<li>Builds a container Image</li>
82+
<li>Pushes the container Image to an image repository</li>
83+
<li>deploy the new version to a server</li>
84+
</ol>
85+
<p>&nbsp;</p>
86+
<p>There are many CI/CD platforms out there, such as - GitLab, GitHub Actions, Travis CI, Bamboo, TeamCity. The most popular one currently is Jenkins.</p>
87+
<p>&nbsp;</p>
88+
<p>Skills you need to have:</p>
89+
<ul>
90+
<li>Setting up the CI/CD server</li>
91+
<li>Integrate code repository to trigger pipeline automatically</li>
92+
<li>Build Tool &amp; Package Manager Tools to execute the test and package the application</li>
93+
<li>Configuring artifact repositories (like Nexus) and integrate with pipeline</li>
94+
</ul>
95+
<p>&nbsp;</p>
96+
<h3>5. Learn One Cloud Provider - AWS</h3>
97+
<p>&nbsp;</p>
98+
<p>Some popular Cloud platforms are - AWS, Microsoft Azure, Google Cloud. AWS is the most powerful and most widely used IaaS platform, but also a difficult one.</p>
99+
<p>&nbsp;</p>
100+
<p>Nowadays, many companies use virtual infrastructure on the cloud, instead of managing their own infrastructure. These are Infrastructure as a Service (IaaS) platforms, which offer a range of additional services, like backup, security, load balancing etc.</p>
101+
<p>&nbsp;</p>
102+
<p>These services are platform-specific. So you need to learn the services of that specific platform and learn how to manage the whole deployment infrastructure on it.</p>
103+
<p>&nbsp;</p>
104+
<p>Example, for AWS you should know the fundamentals of:</p>
105+
<ul>
106+
<li>IAM service - managing users and permissions</li>
107+
<li>VPC service - your private network</li>
108+
<li>EC2 service - virtual servers</li>
109+
</ul>
110+
<p>&nbsp;</p>
111+
<h3>6. Container Orchestration - Kubernetes</h3>
112+
<p>&nbsp;</p>
113+
<p>Since containers are popular and easy to use, many companies are running hundreds or thousands of containers on multiple servers. This means these containers need to be managed somehow. For this purpose, there are container orchestration tools.</p>
114+
<p>&nbsp;</p>
115+
<p>Kubernetes (also known as K8s) is the most popular container orchestration tool. Kubernetes automates the deployment, scaling and management of containerized applications.</p>
116+
<p>&nbsp;</p>
117+
<p>So you need to learn:</p>
118+
<ul>
119+
<li>How Kubernetes works</li>
120+
<li>How to administer and manage the K8s cluster</li>
121+
<li>How to deploy applications on K8s</li>
122+
</ul>
123+
<p>&nbsp;</p>
124+
<p>Specific K8s knowledge needed:</p>
125+
<ul>
126+
<li>Learn core components like, Deployment, Service, ConfigMap, Secret, StatefulSet, Ingress Kubernetes</li>
127+
<li>CLI (Kubectl) Persisting data with K8s Volumes</li>
128+
<li>Namespaces</li>
129+
</ul>
130+
<p>&nbsp;</p>
131+
<h3>7. Monitoring &amp; Observability - Prometheus &amp; Grafana</h3>
132+
<p>&nbsp;</p>
133+
<p>Once software is in production, it is important to monitor it to track the performance, discover problems in your infrastructure and the application.</p>
134+
<p>&nbsp;</p>
135+
<p>So one of your responsibilities as a DevOps engineer is to:</p>
136+
<ul>
137+
<li>Setup software monitoring</li>
138+
<li>Setup infrastructure monitoring, e.g. for your Kubernetes cluster and underlying servers</li>
139+
<li>Visualize the data</li>
140+
</ul>
141+
<p>&nbsp;</p>
142+
<p><strong>Prometheus:</strong> A popular monitoring and alerting tool.</p>
143+
<p>&nbsp;</p>
144+
<p><strong>Grafana: </strong>Analytics and interactive visualization tool.</p>
145+
<p>&nbsp;</p>
146+
<p>You should also understand how systems can collect and aggregate data with the goal of using it to troubleshoot, gain business insights etc.</p>
147+
<p>&nbsp;</p>
148+
<p><strong>ELK Stack:</strong> A popular log management stack.</p>
149+
<p>&nbsp;</p>
150+
<h3>8. Infrastructure as Code - Ansible &amp; Terraform</h3>
151+
<p>&nbsp;</p>
152+
<p>Manually creating and maintaining infrastructure is time consuming and error prone. Especially when you need to replicate the infrastructure, e.g. for a Development, Testing and Production environment.</p>
153+
<p>In DevOps, we want to automate as much as possible and that's where Infrastructure as Code comes into the picture.</p>
154+
<p>&nbsp;</p>
155+
<p>With IaC we use code to create and configure infrastructure and there are 2 types of IaC tools you need to know:</p>
156+
<ol>
157+
<li>Infrastructure provisioning</li>
158+
<li>Configuration management</li>
159+
</ol>
160+
<p>&nbsp;</p>
161+
<p><strong>Terraform:</strong> This is the most popular infrastructure provisioning tool.</p>
162+
<p>&nbsp;</p>
163+
<p><strong>Ansible: </strong>This is the most popular configuration management tool.</p>
164+
<p>&nbsp;</p>
165+
<h3>9. Scripting Language - Python</h3>
166+
<p>&nbsp;</p>
167+
<p>Since you are closely working with developers and system administrators to also automate tasks for development and operations, you will need to write scripts and small applications to automate them. For that, you will need some scripting or basic programming skills.</p>
168+
<p>Examples: utility scripts like flushing the cache, starting the builds and deployments etc.</p>
169+
<p>&nbsp;</p>
170+
<p>This could be an OSspecific scripting language like bash or Powershell.</p>
171+
<p>But what's more demanded is an OS-independent language like Python, Ruby or Go.</p>
172+
<p>&nbsp;</p>
173+
<p>These languages are more powerful and flexible. If you know one of these, it will make you much more valuable as a DevOps engineer.</p>
174+
<p>&nbsp;</p>
175+
<p>There are many programming languages, but I would recommend starting with Python. Python is widely used, easy to learn and used in many different cases, especially in DevOps.</p>
176+
<p>&nbsp;</p>
177+
<h3>10. Version Control - Git</h3>
178+
<p>&nbsp;</p>
179+
<p>You write all automation logic as code. And just application code, automation code should also be managed and hosted on a version control tool, like Git.</p>
180+
<p>&nbsp;</p>
181+
<p>Git is a CLI Tool, which you install locally. It enables the tracking of changes in the source code and enables better collaboration on code.</p>
182+
<p>&nbsp;</p>
183+
<p>So you need to learn:</p>
184+
<ul>
185+
<li>The core Git commands, like git clone, git branch, git pull/push, git merge etc.</li>
186+
<li>But also how to collaborate on a project, like create pull requests, code reviews, branching.</li>
187+
</ul>
188+
<p>&nbsp;</p>
189+
<p>Your files are stored centrally in a remote Git repository on the web. The most popular Git repositories are GitHub and GitLab.</p>
190+
<p>&nbsp;</p>

0 commit comments

Comments
 (0)