You might have heard about this term before since the advent of cloud computing. So let’s delve deeper into what exactly is DevOps
1. What was it like before DevOps?
So that’s a great question. Back in the day operators and developers had a lot of contention. Developers used to throw their code over the metaphorical wall and operators were responsible for keeping that code running in production.
Operators had little understanding of the code bases and developers had little understanding of operational practices but developers were concerned with shipping code and operators were concerned with reliability. This misalignment often caused tension within the organization. In a nutshell, developers wanted to move faster to get new features out faster and the operators wanted to move slower to keep things stable and one can easily see how this would cause a lot of tension.
2. DevOps As a Solution
DevOps = Development + Operations
In comes DevOps, which is a set of practices and a culture designed to break down those barriers between developers operators, and other parts of the organization. I break DevOps down into five key areas.
- Reduce organizational silos: By breaking down barriers across teams we can increase collaboration and throughput.
- Accept failure as normal: Computers are inherently unreliable so we can’t expect perfection and when we introduce humans into the system we get even more imperfection.
- Implement gradual change: Not only are small incremental changes easier to review but in the event that a gradual change does make a bug in production it allows us to reduce our mean time to recover and make it simple to rollback incase of a failure.
- Leveraging tooling and automation: Automation is a key aspect of DevOps. It is always better to automate stuff when dealing with heavy loads.
- Measuring everything: Measurement is a critical gauge for success and without a way to measure if our first four pillars were successful or not, we would have no way of knowing if they were.
The five key areas essentially encompass the field of DevOps.
3. Overview/Roadmap
As we have discussed DevOps is just a set of practices that combine software development and IT operations. There are so many steps when it comes to making software and deploying software and collecting all these sets of practices together is called DevOps
— What does a DevOps Engineer actually do?
Their role is to introduce some tools and processes to make the life cycle of the entire software development and deployment easy from coding to deployment to maintenance and updates.
the cycle looks like this :
the cycle moves from planning -> coding -> build -> test -> release -> deployment -> operations -> monitoring and the process keeps on continuing itself.
The roadmap looks something like this :
Coding Language
Python or Golang you can learn either of them. But If you want to master DevOps, you should definitely know how to use Bash.
Server Administration
It’s one of the most important steps. Linux and Unix would always be your dearest friends in DevOps.
Networking and Security
How do your applications talk to each other and if the application is secure or not?
The most significant thing to learn: TCP/IP fundamentals
How the internet works: Learn different Protocols (DNS, SSL, FTP, HTTP, HTTPS, etc)
Servers
Starting and maintaining servers is key for a DevOps Engineer:
- Web Servers
Learn about Apache, Nginx, and Tomcat (Optional)
2. _Caching
Redis (Most Important) and Memcached
3. Databases
databases are of two types SQL and NoSQL
In SQL you can learn about MySQL, and PostgreSQL.
In NoSQL, you can learn about MongoDB, and some cloud databases like Amazon dynamo DB, and Google Cloud Datastore; depending upon the cloud service provider you choose to follow.
Infrastructure As Code
In Simple terms, you are defining what your infrastructure which runs the website looks like in a file.
It will take that file/recipe from you and create the infrastructure according to the specification that you have thrown in that file.
- In Infrastructure as code first, you have to look into configuration management and then you can use tools like Ansible by RedHat and Terraform.
- Containers: A DevOps Engineer should know the ins and outs of Docker.
- Container Orchestration: let’s say that you have lots of containers running and after some time it becomes difficult for you to manage it manually so you need to automate the task. Basically you have to scale up your container, if your container dies you have to restart those containers, etc. For all these things you can learn kubernetes or K8s or DockerSwarm.
- Infrastructure provisioning: There is a tool for this called terraform. It’s a tool for implementing infrastructure as code. Some other options include Google Deployment Manager and AWS Cloudformation.
CI/CD
They are abbreviations for Continous Integration and Continous Delivery.
Popular tools for this are Jenkins, Circle CI, Travis CI, and GitHub Action help you maintain your code. There are also tools like GitLab CI, Big Bucket Pipelines, and there is also AWS Coding Pipeline other than that there is Google Cloud Built.
Monitoring and Logging
If there is some bug or something that is not working correctly then we need to see what went wrong, how it went wrong, and which place it went wrong. We need some kind of way to monitor and log your application. For this, we need to learn tools like P*rometheus, grafana* or Elasticsearch logstash, and Kibana stack (ELK Stack).
Cloud
Google Cloud Provider (GCP)
Amazon Web Services (AWS)
Microsoft Azure
This concludes over overview/Roadmap. Hope it helps the budding engineers.
5. Benefits of DevOps
- Faster time to market.
- Increase Productivity. As most of the parts are automated team focuses more on innovation and improvement.
- Continuous Feedback Loop from customers keeps running, which results in continuous improvement of the product quality.
Top comments (0)