11

Searching "how to start with devops" didn't really help as, many of them like this and this as well as many others don't really point me in the right way. Every youtube video I have seen so far hasn't helped either (as I don't need videos explaining to me what IS devops), this video being the only true exception so far (that shows how things integrate with each other).

I am a CCNA and also highly proficient with DBMS-s (currently learning parallelism execution as well as other stuff).

But I have no idea what I am supposed to learn first (or where to find the correct resources for that matter).

I am about to graduate, so I have no access to real world experience.

Any advice or help?

0

7 Answers 7

6

Devops relate to the execution of software. It is all about how to run an application or service. So server configuration tools, virtual machines and containers are the next steps. I suggest looking at the documentation of those tools and learning from them things like discovery, observability, scalability and redundancy. Just to name some examples:

Server config:

  • PXE
  • Ansible
  • Puppet

VM:

  • Vagrant
  • QEMU

Container:

  • Docker
  • Kubernetes

EDIT: Cloud technologies overview:

When your software architecture is about microservices, then containers are a good choice. When you are using old monolithic applications then VMs are not a bad option. So it always depends on the context what you need to learn specifically. The topic is rather broad to summarize it. A book might help with that but sadly I cannot suggest a good broad one. "Kubernetes in Action" gives you a good start in Kubernetes though.

5
  • Would also add something about ci/di, for instance bamboo, jenkins, teamcity or similar. Jul 25, 2019 at 10:27
  • 1
    One thing I forgot and which might help. An overview for cloud technologies: CNCF landscape
    – jhamfler
    Jul 25, 2019 at 11:31
  • Well edit you post and add more information =) I actually stared this. Jul 25, 2019 at 12:26
  • @Cyclonecode you are right. done
    – jhamfler
    Jul 25, 2019 at 12:57
  • sorry if this is a stupid question, if EC2 is already running inside a virtual machine, why do I need Docker?
    – PirateApp
    Aug 12, 2019 at 5:59
4

First of all, I would like to emphasize that DevOps is a culture and not a role. In my opinion one could compare it with a team of commandos that have their own expertise, e.g. sniper, marine, sapper (think about the commandos series). The combination of these expertises, basically working together, makes it possible to accomplish missions or creating business value as soon as possible.

LowOps and NoOps

Since a couple of weeks I found that after lot's of conversations with people, that a rather talk about LowOps these days. If I implement a solution then this means that it is completely automated and that a colleague can deploy machines themselves rather than asking me. Sometimes it is not immediately possible to automate it completely, but then I ensure that it is automated for myself to ensure that I only have to run one command in order to get the work done (LowOps), instead of wasting a couple of hours. If I have created such solution, I ensure that a ticket has been created for a colleague to automate my personal solution for everybody. Example: a collegue of mine transformed one of my bash script in a bot that it now run every night. This means that the knowledge has been transferred and that a NoOps solution has been created and we can both focus on new tasks.

enter image description here

Figure 1: https://www.gslab.com/blog-post/what-is-noops/

"how to start with devops"

Ensure that you are part of a team with mixed competences and that the team has to deploy the software themselves. Talk with all team members and start with tasks that nobody wants to do as there is a lack of knowledge or willingness. If you start with a task then you will bump into things you do not know. Start to watch videos, attend meetups, buy and read books, read blogs and official documentation about tooling, ask colleagues to review your pull requests and communicate and listen well to people, document things well and prepare and demonstrate solutions to colleagues (knowledge sharing). The last suggestion is to keep an eye on the work-life balance.

3

Other answers here have focussed on tools. In my opinion, gaining competence in a toolkit is of course a good thing, but will not make you a good fit in a DevOps culture. DevOps is first a set of practices, or methods.

Understanding why thes practices and methods are useful comes with experience, but you don't have that luxury. I would therefore point you to

as a foundational texts.

The Continuous Delivery website also has a set of Principles and Foundations which give you the relevant grounding when starting.

Starting from these, you will learn practice and methods, which will inform how you collaborate and use tools.

2

All you need to learn is Linux, Docker, Networking, Git, Jenkins etc. You can learn them interactively here

If you are looking for video tutorials then pluralsight has something good for you.

1

This is the kind of question I have been asking myself many times, and that tends to follow me (now that I am barely out of "beginner", I am wondering where to learn more advanced topics). Sadly, as you pointed out, asking those questions on search engine tends to flood with websites targeting executives and trying to explain What is devops? and Why should we industrialize the software cycle with devops?

That being said, to try and answer your question, I can only speak from personal experience: I started my learning journey with the excellent Docker Get started guide.

1

"Learning DevOps" strikes me as too broad a query, as you also found out, but I can remember having to google the same thing.

To add to @jhamfler's answer: Ask yourself, why do you want to learn about it? Which context are you coming from? DevOps usually has to do with breaking down manual hurdles, or also silo structures in teams (everyone just doing their own task and relying on somebody else to think about integrating the results). Are there such "gaps" in your project (I assume you have one)? What parts of it could benefit from automation?

Typical problems I could suggest are:

  • manual server maintenance VS scripted solutions
  • reliability and backups
  • automating integration tests
  • automating continuous deployment (e.g. of a web service)
  • ...

Perhaps a search for "continuous deployment" and "continuous integration" (CI/CD) could also help you.

1

The very first things you need to learn and get comfortable with:

  • unix (file system, permissions, processes, services, logs, networking, etc…)
  • ssh & reverse tunneling
  • nano/vim
  • python
  • git

Then you could move on to more specific topics:

  • containerization (e.g. docker)
  • configuration management (e.g. ansible)
  • continuous deployment (e.g. jenkins)
  • monitoring (e.g. prometheus/grafana)

Not the answer you're looking for? Browse other questions tagged or ask your own question.