Development & Operations
Tags: devops, productivity, career
Published: 2020-06-29 17:56:52

*A short and quick guide to dive into the DevOps world.*

In this post I'll tell you what does it mean to be a DevOps engineer in a software factory, how to build the structure to support any app development and, finally, some recommendations and good practices to become a pro.

##My work as DevOps

The DevOps engineer is in charge of implementing best practices to integrate development (Dev) and operations (Ops) by accelerating deliveries through automation, collaboration and iterative improvement and achieving a more efficient way of working throughout the development life cycle.

My work as DevOps engineer in the company involves infrastructure configuration and maintenance tasks, as well as automation of different projects' workflows and the construction of software life cycles, based on CI / CD with AWS, Digital Ocean, Bitbucket Pipelines and Jenkins. In addition to automating and streamlining the procedures and processes of software development, I am also responsible for maintaining implementation and monitoring tools.


![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/5hmp9j4ph4zpwptisk5h.png)


Specializing in DevOps can help you target a growing working market with great opportunities.

##Where to start

Continuous integration servers, containers and tools. These are the three legs needed to structure any development. AWS, Digital Ocean, Docker and Jenkins are the ones we choose. For starters, I recommend using Docker, Jenkins, and any server you have access to, like AWS or Digital Ocean.

###*What is Docker?*

It's a container management service that allows developers to create applications, ship them to containers, and run them anywhere. Thus, it allows you to create your own custom environments that can include a variety of operating systems and development frameworks.

Docker containers are quite light and can be deployed on any physical and virtual machine, even in the cloud. To deepen about this tool, I recommend you read another of our articles with everything you need to know about Docker:

{% medium https://medium.com/eudaimonia-ar/everything-you-need-to-know-about-docker-dedf273cd6d0 %}

###*What is Jenkins?*

Jenkins is an open source, java-based tool that enables CI / CD streams. It is one of the most used at present since, through plugins, it has a wide integrity with different tools (GIT - Nexus - Database - AWS - Azure - etc.). For large developments that require complex architecture, Jenkins has the ability to connect to different environments and orchestrate the development life cycle.

##Good practices and recommendations

As in all tasks, there are good practices to follow. In my opinion, all DevOps engineers should:

- Work together with the different areas / teams to find out their needs. These are the foundation of every DevOps task.

- Know different tools, their strengths and weaknesses, and keep updated on them. Here you can see a [periodic table with all the available DevOps' tools](Opshttps://digital.ai/periodic-table-of-devops-tools), each one has some info so that you can choose the most convenient for your project.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/614oklp7mpnf8kubsekn.png)

- Do not always apply the same formula to all projects. In any development company there usually are several projects and teams working simultaneously. Not all projects are the same, so it's important to be in contact with all of them to carry out an analysis of each particular project, taking into account its scalability to use the appropriate tools.

- Automate everything you can reducing times and errors that can be made in manual implementations.

- Do not uphold the implementation done. Constant monitoring, analyzing logs, metrics or developers feedback are always necessary to make improvements to the flow.

##What differentiates a Junior DevOps from a Senior?

In essence, a senior DevOps engineer analyzes any given problem holistically and trying to understand how changes can be made at an enterprise level, and not simply trying to solve the given problem one time. Frankly, this skill is less technical and more about evaluating and solving problems.

To have a deeper understanding of everything that needs to be learned to become a complete DevOps, you can [see here a roadmap](https://roadmap.sh/devops) with the languages ​​and programs that are recommended take into account. Nothing is accomplished overnight. There is a lot of information available so it's useful to get organized and learn little by little.

On the other hand, the article below is very complete and interesting to delve into the subject. It's based on the same roadmap shared above but with extra suggestions and courses' links:

{% medium https://medium.com/hackernoon/the-2018-devops-roadmap-31588d8670cb %}

To finish, if your are ready, here are [10 online courses](https://javarevisited.blogspot.com/2018/09/10-devops-courses-for-experienced-java-developers.html) to start or keep learning. Thanks for reading till the end! I hope you found this useful and any questions you may have do not hesitate to comment.