Skip to main content

What does "DevOps" mean to me?

These opinions are simply opinions. I know that everyone has a different idea of what DevOps is. My hope in this blog post is to help educate others and share with the community.

A few months ago I decided to take a week off and rent a beach house with my son for his first long vacation. As I'm sitting here at 6:30AM, breakfast in front of me and waiting for the little guy to wake up. I got to thinking "what does DevOps mean to me".

What is the role?

What is the role of DevOps? It's a lot different than other technology-related positions. Backend developers write code for the backend application. Sysadmins manage the systems in the environment. Security admins manage the compliance and in most cases blue team for organization. Of course these positions have MUCH more going on than just a simple one sentence. All three of these jobs are incredibly needed throughout all organizations. My point to bringing them up was DevOps isn't just a role. DevOps is practicing a methodology and spreading it across the organization. To me, I don't think you "do a DevOps role". I think you "Practice a DevOps Role".

Ship the product

What does "ship the product" mean? Well this is where A LOT of DevOps practices come in. Shipping the product could be ANY of your products. It could be the software that your organization writes to push out to the world. It could be the application written internally for the finance department. It could be spinning up environments for the database team. DevOps isn't just about making release pipelines and using Infrastructure-As-Code. It's about bringing all teams together to have the fastest way to "ship the product" throughout the organization and for everyone in the organization.

Automation

Automation is something that is a crucial tool to DevOps. How else would we ship our product so fast to ensure we're practicing DevOps methodologies? Automation can come in many flavors. This could be your Infrastructure As Code (for example Ansible). This could be your software development practices with things like PowerShell, Python, the AZ CLI, etc.(I say Software Development practices in the sense of the way you plan a piece of software, how it should be written and how it should be tested). Without automation, your ability to deliver the product would be slower and more of a manual task.

Knowing the business

Knowing the business in my opinion is one of the biggest goals that you should set for yourself. Without knowing the business, you don't know what product you should be shipping and what's the most critical thing to be shipping at that time. There could be technology goals within the department (implementing new tools, updating practices, making things more efficient) but that may not be what the business needs to keep the lights on. The key to practicing DevOps is understanding what your environment needs to thrive and what your organization needs to not only grow, but to keep the engine running.

DevOps is not the tools you use

If someone gives you a hammer, nails, and says to build them a house, what built the house? The hammer and nails or the person using those tools? The person using the tools. Sure the tools were absolutely necessary and perhaps you couldn't do it without those tools, but it's the person wielding those tools that builds the house. Your tools are important but the way you decide to use those tools are more important.

Tooling

Now we're at the tooling. Without the tooling you can't properly ship your product. Without the tools to automate you can't ship the product fast and efficiently. Without knowing the business you don't know what tools will be best suited for your organization. I'm going to provide a list of tools that I believe are the leaders in the industry right now. You're encouraged to research these tools.

1) Infrastructure-As-Code: Terraform, Ansible ARM Templates, and CloudFormation templates are the most popular at the time of writing this. Organizations are also starting to use AZ CLI to replace ARM templates.

2) CI/CD: The most popular at this time is Jenkins. It's the standard at the moment. More and more organizations are moving towards Gitlab CI and Azure DevOps. I also wanted to point out just because Azure DevOps is a Microsoft product doesn't mean you can only use it with Microsoft products. You can use Azure DevOps to push to AWS as well.

3) Scripting/Software Development. I would say for DevOps the three biggest programming languages are Python, PowerShell, and Ruby. This is because of the ease of use to implement for automation. For DevOps in general you should have a basic understanding of software development. You don't have to know how to write an application. You just have to have an understanding of what the code is doing. You should absolutely know how to script though.

4) Cloud based technology: AWS, Azure, or both. You will see at least one of these in your organization. If you don't, you may be using VMWare ESXi or Microsofts Hyper-V which isn't bad to know either. I personally love virtualization and my home server proves that.

5) Containerization: Containers and implementing micro services is growing rapidly. With VM's you still need things like licenses, specific amount of RAM, specific amount of CPU, specific amount of hard drive space, etc. With containers, it shares the kernel of the host and also shares resources at the level that you don't have to specify what hardware resources will go to the container (although you could do this). This biggest containerization platform right now would be Docker. Docker brought an ease-of-use to the world. Containers were around way before that. If you're interested, check out LXC (Linux Containers). It's actually shipped with Linux by default.

6) Orchestration: To manage your containers, you should be using some sort of orchestration. Orchestration is simply the way you manage containers at scale. It still uses the Docker engine underneath (although, there has been talk of a certain orchestration system moving to containerd). The biggest orchestration system in the space is Kubernetes. Docker Swarm is quite good too in my opinion and does many of the things that Kubernetes does. 

7) Source control: Learn Git. Git is the standard in all source control. This essentially allows the ability to manage code in a centralized location and control/monitor how the code is changed. Git flow is also very important to understand. This will allow your organization to be on the same page with how to commit code, where to commit it, and how to review it.

8) Monitoring: Understanding how to monitor not only your infrastructure, but down to an application level. Prometheus and Nagios are very good at monitoring down to the container level and the binaries running within your container. Understanding proper altering is key to your business succeeding. 


Comments

Popular posts from this blog

DevOps tooling in the Microsoft realm

When I really started to dive into automation and practicing DevOps with specific tooling, there were a few key players. At the time Microsoft was not one of them. They were just starting to embrace the open source world, including the art and practice of DevOps. Since then Microsoft has went all in and the tech giant has made some incredible tooling. Recently I switched to a Microsoft-heavy environment and I love it. I went from AWS/Python/Ansible/Jenkins to Azure/PowerShell/ARM/Azure DevOps. My first programming language was PowerShell so being back in the saddle allowed me to do a full circle between all of the different types of tooling in both worlds. Today I want to share some of that tooling with you.

The first thing I want to talk about is ARM. What is ARM? ARM is a configuration management tool that allows you to perform software-defined-infrastructure. Much like Ansible and Terraform, ARM allows you to define what you want your environment to look like at scale. With ARM, yo…

Monitoring your containers in an AKS cluster with Prometheus

Monitoring and alerting is arguably one of the most important thing in Cloud Engineering and DevOps. It's the difference between your clients stack being up and a client being down. Most of us have SLA's to abide by (for good reason). Today we're going to learn how to spin up Prometheus in an AKS cluster to monitor our applications.

Pre-reqs;
1. Intermediate knowledge of Kubernetes
2. An AKS cluster spun up in Azure

Recently AKS supports Prometheus via Helm, so we'll use that for an automated solution to spin this up. This installs kube-prometheus, which is a containerized version of the application. With raw Prometheus, there are a few things that are needed for the operator;

1. Prometheus: Defines a desired deployment.
2. ServiceMonitor: Specifies how groups of services should be monitored
3. Alertmanager: Defines the operator to ensure services and deployments are running by matching the resource

With kube-prometheus, it is all packaged for you. This means configuri…

So, you want to be a Cloud Engineer?

In 2019 one of the biggest pieces of tech is the cloud. Whether it be public cloud or private cloud, cloud technologies are here to stay (for now). I predict that Cloud Engineering will be a very big part of IT (and development) for another 5-10 years. Today I want to share with you my journey in becoming a Cloud Engineer and some helpful tips. A career timeline to be a Cloud Engineer can go like so;

Desktop Support > Junior Sysadmin > Sysadmin > Sysadmin/Technical Lead > Engineer >  Cloud Engineer.

Although our career paths may not align, I believe that this progression is very import. Let me tell you why.



Helpdesk/Desktop Support Helpdesk and desktop support get your feet wet. It allows you to understand technology and how it's used in the workplace from a business perspective. It shows you what technologies may be best in the current environment your in and how to support those technologies. It also teaches you soft skills and how to support people from a technic…