The Technical skill you need to master to Become Devops based on My Experiences
Tags: devops, productivity, career, learning
Published: 2020-04-26 07:30:34

## Introduction
In the previous post (part [1](https://dev.to/iilness2/how-s-devops-engineer-develop-so-far-from-my-experiences-perspective-2bf8)), I talk about devops engineer from my experiences until now. 
In this part, I want to talk about the technical skill you need to know/master when you want become a good practical Devops Engineer. Let's talk about it!

## Software Development Life Cycle(SDLC)
![SDLC](https://dev-to-uploads.s3.amazonaws.com/i/7cdli4bqvso64fxsj3wu.jpg)
SDLC is the first thing you need to know when you want become a good Devops Engineer.

The most famous model for SDLC are *Agile* and *Waterfall*. Those model will give you the most benefit when you can implement it correctly on the right process.

When you come to the company, you need to understand their flow/process. Every company has a unique process, It got influenced by the organization structure, their purpose, who is people behind it, vision, mission, etc. Understanding SDLC will help you to choose the best solution for compliment the process. 
> Yes, Compliment the process not against them!

## GIT
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/6hr1fzj8qatu7meaghop.png)
GIT is the version control most widely used in modern development. GIT help us enables non-linear workflows in a distributed way by offering data assurance when develop application. With this model, we can have a distributed team for working on another task/feature without worries anything about history/track/timeline of the main code later. 

If you want to know more, you can follow my other series talk about GIT [here](https://dev.to/iilness2/practical-git-command-for-working-with-the-project-part-1-4nce).

## YAML
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/f09dp5az5i51cm92wtdu.jpg)
YAML is a human-readable language that mostly used for configuration file. Yaml is understandable and easy to use at the same time. You just need to carefully follow the rules like indentation (YAML indentation sensitive) when using it. 

Recently, most of the CI tools also already support YAML as a language for their configuration file. Some of them even migrating their existing configuration language to YAML so many people more familiar when use their service (I already talk and review about it [here](https://dev.to/iilness2/6-ci-tools-review-by-me-l10))

## Scripting language
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/pjpmfzogfu16nnl7w1c2.png)
Scripting still the most favorite basic tool to interact with our server. But, since deployment more happens in the cloud, many new tools for answering this necessity comes and arise for replacing the old scripting way.

These tools offer easiness to interact with the modern cloud. Some of them, offer interesting features like maintain the state, versioning, configuration management, declarative language, etc..

So, as a person who architect/do the operation for deployment, you need to be wise to choose which scripting language need to choose when do the job since we have more option right now. 

## Application Installation & Configuration
![Installation](https://dev-to-uploads.s3.amazonaws.com/i/rnn0dusqnw9gdazypmbf.jpg)
Every code language has their characteristic when you want implement it. Some of them can upload directly, some of them need to be build, some of them need to got compile with their dependency.

To answer these needs, some new tools/ways were introduced for standardizing the process installation. The popular way is build one big immutable VM with all the environments that needed for application. with this way, you can do deployment (rollback/rollout) with ease. The other way is with empowering container with the most popular tool to do which the tool name known as *Docker*.

You need to choose which one is suitable for your organization application process and needs.

## Cloud & Orchestration
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/jng8ym6k4ei8tcvn4xdt.jpeg)
Cloud orchestration is of interest to many IT organizations and DevOps adopters as a way to speed the delivery of services and reduce costs. A cloud orchestrator automates the management, coordination and organization of complicated computer systems, services, and middleware.

Many vendors offer cloud orchestrator products. DevOps teams can also implement cloud orchestration in numerous ways via automation and management tools to fit with their processes and methodologies.

When evaluating cloud orchestration products, it is recommended that administrators first map the workflows of the applications involved. This step will help the administrator visualize how complicated the internal workflow for the application is and how often information flows outside the set of app components. This, in turn, can help the administrator decide which type of orchestration product will help automate workflow best and meet business requirements in the most cost-effective manner.
 
So if you want to learn more, you can follow my other articles on [here](https://dev.to/iilness2) or on other platforms [here](https://community.alibabacloud.com/users/5246280492402877?spm=a2c65.11461447.0.0.662f15f51xm6yq)

## Monitoring / Debugging / Logging & alerting
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/gvabp6o9tgpbyysyfccl.png)
Monitoring the service performance is the task usually we do after the deployment process finish.

Monitoring itself divided into 4 main parts. 

The first part is server/host monitoring which we will monitor the host that hosting our application environment. 

The second part is Application Monitoring and Application profiling which monitor our application performance when got actual traffic from time to time. 

The third part is logging. Logging is several events that are recorded on files by a software application. Usually, it contains errors, informational events, and warnings.

The last part which arises recently because of the automation trend is alert. Alerts are typically delivered through a notification system and usually combine with other monitoring system to made an automation prevention based on application performance.

## Conclusion
In the profesional world where everything needs to have high standard, deep understanding on what you do is needed. 

Since Devops still developing until now, many new theory and new skill arise for complement Devops positions. With this article, I hope you can choose which skill you really need to know/ just nice to have for complement your journey as a Devops in professional work.

I think that's it for now for this article. Leave a comment below about your thoughts! Thanks.