You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
<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>
<p>From which background are you transitioning into DevOps?</p>
1
+
<p><strong>From which background are you transitioning into DevOps?</strong></p>
6
2
<ol>
7
-
<li>System administrator</li>
8
-
<li>Software developer</li>
3
+
<li>System administrator</li>
4
+
<li>Software developer</li>
9
5
<li>Test automation engineer</li>
10
6
<li>Network engineer</li>
11
7
<li>OR, with just a little IT knowledge</li>
12
8
</ol>
13
-
<p> </p>
14
9
<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> </p>
16
10
<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>
<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>
<h3><strong>1. Concepts of Software Development</strong></h3>
20
17
<p> </p>
18
+
<h3><strong>1. Concepts of Software Development</strong></h3>
21
19
<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
20
<ul>
23
21
<li>How developers work and collaborate (Agile, Jira workflows)</li>
24
22
<li>What Git workflow they use</li>
25
23
<li>How applications are configured (Build & packaging tools)</li>
26
24
<li>Automated testing and test scopes</li>
27
25
</ul>
28
-
<p> </p>
29
26
<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
27
<p> </p>
31
28
<h3>2. OS & Linux Basics</h3>
32
-
<p> </p>
33
29
<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> </p>
35
30
<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
31
<ul>
37
32
<li>Shell Commands</li>
38
33
<li>Linux File System & Permissions</li>
39
34
<li>SSH Key Management</li>
40
35
<li>Virtualization</li>
41
36
</ul>
42
-
<p> </p>
43
37
<p>You also need to know the basics of Networking & Security in order to configure the infrastructure.</p>
44
38
<ul>
45
39
<li>Configure Firewalls to secure access</li>
@@ -50,15 +44,13 @@ <h3>2. OS & Linux Basics</h3>
50
44
</ul>
51
45
<p> </p>
52
46
<h3>3. Containerization - Docker</h3>
53
-
<p> </p>
54
47
<p>Docker is by far the most popular container technology.</p>
55
48
<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
49
<ul>
57
50
<li>Concepts of virtualization</li>
58
51
<li>Concepts of containerization</li>
59
52
<li>How to manage containerized applications on a server</li>
60
53
</ul>
61
-
<p> </p>
62
54
<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>
<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> </p>
77
67
<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>
<li>Pushes the container Image to an image repository</li>
83
73
<li>deploy the new version to a server</li>
84
74
</ol>
85
-
<p> </p>
86
75
<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>
<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> </p>
100
87
<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
88
<p> </p>
102
89
<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> </p>
104
90
<p>Example, for AWS you should know the fundamentals of:</p>
105
91
<ul>
106
92
<li>IAM service - managing users and permissions</li>
<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> </p>
115
99
<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> </p>
117
100
<p>So you need to learn:</p>
118
101
<ul>
119
102
<li>How Kubernetes works</li>
120
103
<li>How to administer and manage the K8s cluster</li>
<h3>7. Monitoring & Observability - Prometheus & Grafana</h3>
132
-
<p> </p>
133
114
<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> </p>
135
115
<p>So one of your responsibilities as a DevOps engineer is to:</p>
136
116
<ul>
137
117
<li>Setup software monitoring</li>
@@ -140,51 +120,36 @@ <h3>7. Monitoring & Observability - Prometheus & Grafana</h3>
140
120
</ul>
141
121
<p> </p>
142
122
<p><strong>Prometheus:</strong> A popular monitoring and alerting tool.</p>
143
-
<p> </p>
144
123
<p><strong>Grafana: </strong>Analytics and interactive visualization tool.</p>
145
-
<p> </p>
146
124
<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> </p>
148
125
<p><strong>ELK Stack:</strong> A popular log management stack.</p>
149
126
<p> </p>
150
127
<h3>8. Infrastructure as Code - Ansible & Terraform</h3>
151
-
<p> </p>
152
128
<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
129
<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> </p>
155
130
<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
131
<ol>
157
132
<li>Infrastructure provisioning</li>
158
133
<li>Configuration management</li>
159
134
</ol>
160
135
<p> </p>
161
136
<p><strong>Terraform:</strong> This is the most popular infrastructure provisioning tool.</p>
162
-
<p> </p>
163
137
<p><strong>Ansible: </strong>This is the most popular configuration management tool.</p>
164
138
<p> </p>
165
139
<h3>9. Scripting Language - Python</h3>
166
-
<p> </p>
167
140
<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
141
<p>Examples: utility scripts like flushing the cache, starting the builds and deployments etc.</p>
169
-
<p> </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> </p>
142
+
<p>This could be an OS specific scripting language like bash or Powershell. But what's more demanded is an OS-independent language like Python, Ruby or Go.</p>
173
143
<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> </p>
175
144
<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
145
<p> </p>
177
146
<h3>10. Version Control - Git</h3>
178
-
<p> </p>
179
147
<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> </p>
181
148
<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>
0 commit comments