jman21

3 years ago

Can DevOps Engineer explain to me of your day to day role in depth

Hi guys I am a beginner currently studying linux to become DevOps engineer and as the question stated above I just wanted to know what is the daily routine of DevOps Engineer . Also in term of linux, how much linux do you use as part of your devops role, can you please provide an example, again a noob here so im just trying get many info as possible thank you

Image of rilindo
rilindo
3 years ago
At my current role, I ensure agility and compliance through infrastructure code, release management automation and public cloud security. For the pass six months, I was able to: • Create a scalable service discovery platform powered by Consul. • Deploy an ELK stack into production using Chef and Docker. • Stabilize corporate internal network infrastructure. • Fabricate a new automation platform based on Ansible and Rundeck. • Setup continuous build environment with Jenkins to speed up deployments. • Architect and established an API gateway in front of our micro-services. • Enhance user experienced by developing a web caching service. • Align AWS infrastructure towards best practices. It may be different for other DevOps engineers. :)
Image of rmward
rmward
2 years ago
This is an interesting question- I think the "daily routine" of a DevOps Engineer is going to vary widely and will largely be dependent upon a particular engineer's company culture and where both they and DevOps itself fit within that culture. 

I think at the heart of it, you need to meet the needs of the business and you need to constantly think about value streams and analyze those practices which are not contributing value to the product itself. Anything which is not should be considered operational waste. As such, I think the role of a DevOps engineer is to put the tools in place which help to reduce operational waste and optimize the value steams which feed the product you are releasing. 

Personally, I work for a company that has been around for about 25 years and has a lot of "Cultural Debt" (practices which lead to waste and "Technical Debt") . A good chunk of my job is reminding Developers and Management that some of these practices are anti-practices and lead to problems which reduce throughput. To properly do this, I try to keep up on current best practices and pay close attention to how those best practices can be put in place at my company. 

Maintaining the DevOps toolchain is of course my primary responsibility. I maintain all of the build servers and development support systems such as the issue tracking system, Nagios server, Jenkins server and nodes, Finalbuilder configurations, I am also the DBA for the Development databases, and I oversee the script and system interop development effort for all of these systems. I also handle dev software licensing a purchasing as well as acting as the liason between Development and IT overseeing the requesting and provisioning of virtual machines from IT. I also oversee new developer training and dev toolchain documentation.

On a typical day, I play firefighter/operations dude for about 40% of my day (this is down from about 80%). This time might be spent fixing issues with the build servers, helping to diagnose build failures, helping new developers with issues and getting their environments set up. I oversee all development user account administration (e.g. Issue tracking accounts and group policies, source control accounts and source control repo maintenance). 

The other 60% of my day is spent on toolchain engineering and architecture. 

As far as Linux, I work for a Windows based company but the DevOps system is primarily Linux based. Ostensibly, you could build a DevOps system using Windows without too much trouble but I think Linux is a much better platform for this so I prefer it. Doing things like getting everything working under Chef or Puppet will be easier because the support for Linux is much stronger. Also, a lot of DevOps tools were created for Linux. 

I think if you want to get into DevOps, my suggestion would be this:
- Learn at least one platform independent scripting language fairly well (e.g. Python). 
- Learn at least one build/automation platform really well (e.g. Jenkins)
- Learn at least one Infrastructure as Code platform- perferably one with support for all of the major OSes (e.g. Puppet, Chef, Ansible)
- Learn at least one monitoring system (e.g. Nagios)
- Familiarize yourself with at least one cloud platform (e.g. AWS), at the very least, it would be good to get familar with at least one hypervisor like Virtualbox
- It would be a good idea to learn a containerization platform like Docker as well
- Knowing Linux is a pretty dang good idea. While you can do DevOps in Windows, I think it will limit your career prospects as a good chuck of the DevOps toolchains out there are built on Linux. 
- Most important, I think it is important to understand the basic philopophical ideas behind DevOps like team communication, automation, avoidance of business silos, etc...

IMO, DevOps is probably at least 60% about cultural change and 40% about having the right tools in place. It is one thing to fire up a Jenkins server but if people ignore their build failure emails and do stuff like check in bad code without vetting out their changes locally that toolchain is not going to be as useful. As a DevOps person, you need to remind people that everyone is responsible for the pipeline and this means taking steps to ensure stuff does not fail- or when it does, make sure it fails early and said failures are comminicated to the right people so steps can be taken to get everything up and running again quickly.