By Mitchell Kowalchick, DevOps Engineer at CloudCheckr
DevOps, the figurative Wild West in the software development realm. A relatively new paradigm which requires a diverse set of skills and the will to take on the daily distractions that threaten your products stability. In my DevOps team, I like to think I am Mr. Wolfe from the popular movie Pulp Fiction: a problem solver. The DevOps role is still relatively undefined in the industry and there is quite a bit of disagreement on whether it should be integrated into developer tasks or a speciality. This blog post will simply broach my approach to the position.
Before I get into my understanding of the DevOps sector it’s important to understand my beginnings in the software realm. After graduating with a degree in Game Design & Development with a minor in psychology, I started my career as a Software Engineer. I knew that in order to succeed outside of the entertainment industry I needed to play (pun intended) off of my programming expertise as well as my ability to effectively design systems. I accepted the position as DevOps engineer with the confidence that I could find some sort of focus in this new frontier. In the spirit of understatement, my world quickly turned into the scene from Gravity in which the satellite is smashed into space dust, yet I recovered.
My approach involves categorization and priority of concerns. In my interpretation the important aspects of the DevOps engineer is automation, investigation, streamlining processes, stability, security, and communication (say that five times fast).
When the daily routine begins to take longer than the standard work day something has gone awry. Rapidly, 5 minute tasks and repeated fixes will turn you into a robot if you don’t externalize it. Automation not only allows you to effectively make yourself an army of one, but it frees up your time to perform manual assertion checks or put more time into R&D. The time I have spent in automating procedures at CloudCheckr has allowed me to evolve and move in new directions that otherwise I would not have the time to achieve.
Investigation is a key component of the field. It keeps the product evolving and as technology advances we have more tools to utilize. Investigation can keep you from hitting a plateau in your work and encourages exploration. Typically in the DevOps world I will receive some problem from one of my lines of communication (support, development, sales, management); I will then triage my current tasks and begin investigations. In the rare occurrence that the DevOps realm is quiet, with no high priority changes, I will jump into servers and start investigating potential bottlenecks, new top queries, and index performance. The more information I can get during my downtime means it will be easier for me to spot trends and evaluate the infrastructure in the event of failure. Investigation/analysis is a tool the DevOps engineer should be continually using – prime yourself with all the knowledge about your environment that you can so that you are ready in the event of failure. It is similar to an open book test: The information is there for you and you can get it but if you do not know the page numbers it will take a lot longer. The more time that passes the less chance you have to answer the other questions and in turn your performance will not be as high.
Saving time on repetitive tasks is one of the most important aspects of a DevOps engineer. It serves to free you up so that you may spend your time on more dynamic tasks and it helps to prevent accidents that frequently occur when comfortable with running a particular job. Early on in my DevOps career I made it a point to create DevPortals, Dashboards, and other alerts that packed all the information I needed into one compact screen. The less time I have to search for the data to make educated decisions means more time to get to the root of the problem. It can be quite liberating to look at a dashboard full of information customized to your needs and it makes you more effective. Interestingly enough, seeing multiple sets of data at once can lead you to conclusions that would not have been deduced otherwise. In a realm where so many things can go wrong spotting trends, anticipation, and investigating your hypotheses are key elements that will take you far. Basically, too much time is taken from juggling tabs, resources, and servers to get the information you needed yesterday – consolidate and organize. Provide these resources for your team and watch how much more effective things start running.
Without stability in your application you might as well start looking for another job: utilize your R&D time to investigate performance, hypothesize on infrastructure changes, and find the smaller fixes that give you the best bang for your buck.
The DevOps engineer is a support role which brings awareness, analysis, and stability to the team. The engineer should be mindful of virtually all aspects of the team and the customers themselves. In many ways the DevOps movement acts to fill the voids between teams and delivers information and change in the areas which tended to be out of scope for any other role specifically. The DevOps engineer needs to be aware not only in the app itself but he/she should be actively involved in the other teams and ensure a secure product lifecycle in its entirety. This relates to the stability of the product as well as the reliability. Security should be a top priority which, in the event of an emergency, it takes the cake.
Team communication and awareness is a proactive measure that brings priority into perspective while unifying the visions of each entity. Support, development, and sales all influence the urgency of particular issues and allows us to make more effective decisions. The DevOps engineer acts as a liaison between the groups and it is necessary to understand the user experience, security, performance, and stability of the servers.
The role of CloudCheckr in the DevOps realm ties back to streamlining processes. As a one stop shop for security, cost, inventory, and auditing it serves as a powerhouse for keeping your environment under control. The API gives you the flexibility to automate solutions from our best practice checks. The cost module helps me to sleep at night knowing our automated scaling scripts are not in error driving up our bill. I know that our developers are carefully maintaining the resources they spin up and if not I know just who to contact. CloudCheckr streamlines the DevOps world and puts the important information into one compact solution. Utilization reports and RIs help me to investigate our infrastructure solutions, limitation alerts, and aggregation of CloudWatch helps me to be a more proactive engineer rather than one who runs constantly off of emergencies. Streamline your process, try out CloudCheckr, and give yourself more time to R&D.
Looking to begin your DevOps engineer career?
Ready to start a career in DevOps? Download our white paper, Essential Training for the DevOps Engineer, to get started.
(And see our Careers page
to learn more about working with us at CloudCheckr.)