What is Devops
Devops is not a technology. It's a culture between development and operation teams to deliver the applications faster and efficient. This is a simple definition.
It takes time to understand the meaning of devops.
This article talks about the initial steps for getting into devops. It might look unconventional approach.
Well, few questions comes up immediately.
I am a fresher. I am interested to learn Devops.
What are the basic tools I need to learn for getting Devops ?
I am from Testing/DBA/BI background. How can I switch to Devops ?
I am learning Devops tools currently. But need guidance how to learn step by step.
Well, I am not going to suggest Devops ( as a specalisation) for Freshers. I suggest them to focus on Full stack/Development side.
However, Cloud and CICD would be helpful for deployment knowledge for fullstack engineers.
Linux
Linux is basic building block to get into devops.
Why Linux, why not windows ?
Linux is open source, secure and most reliable operating system.
Make sure to cover this topics initially.
Linux kernel
Shells in linux - bash, ksh
Users Management
Package management - apt/yum
Service management
File management
Find, grep, head, tail.
SSH, SCP
iptables, firewall.
basic shell scripting
Understand the purpose of linux.
Different flavors of linux
Difference between linux and windows.
Open source - GNU license
Tools: Virtualbox, Oracle vmware, WSL - Ubuntu flavour suggested.
GIT
Git is source code management tool.
It enables multiple teams to write code, fix the code and distribute code easily.
It also provides security and review(approval) system.
It provides flexibility to revert any mistakes. Can maintain different branches and different versions of code.
Git commit, git push, git pull, origin and remote.
Branching and merging. Pull requests.
Git revert, git restore using commit ID.
Tools: Github, Bitbucket, Gitlab.
Database basics
Pick database of your choice and complete below steps.
Database creation, schemas
Create a table,Select,Insert, Delete, Update queries.
DML, DCL, DDL
How to connect local and remote to database using database client ?
Tools: mysql, oracledb, sqllite, sqlserver, mongodb.
Task: Create a simple table with student or employees or inventory details
Sample Web Application
In this section, try to understand what is front end and what is backend.
What is static web page and dynamic web page.
Setup a basic hello world web page in plain html
Pick a programming language of your choice from below and write a hello world web page. Python flask, Spring boot, Django, Golang
Write a simple webapp to pull entries from a table in database.
Static web app
Host a static hello world html web page using Nginx. Perform this operation in linux operating system.
Tools: Linux, Apache or Nginx.
Dynamic web app:
Install relative programming language(python) in a EC2 VM.
Write a simple web app to read the student records from database tables.
A Crud app also can be created here and commit the code to git repo.
sample repo: https://github.com/sasidatta/democrudapp/tree/main
Cloud
Cloud provides enormous advantage over onpremise systems
Host the web server in EC2 instance
In next step, setup the database (e.g. mysql) in Relational database service(RDS)
Also setup static webpage in another Ec2 instance.
Connect the both of these services and Setup loadbalancer in front and route the traffic respectively.
If cost isn't a problem, Domain name can be registered and connected via DNS(Route53).
Tools: AWS, GCP, Azure, Digital ocean, IBM cloud.
CI/CD
Continuous integration and continous deployment is core part of devops helps deploy web app in multiple Delivery points( such as EC2)
Task:
Pick up linux and Setup jenkins master and 2 linux agents.
Setup a jenkins pipeline to update the git code in target agent vms
Update git code and check if pipeline success and whether changes are reflecting in target nodes.
Stop here
Stop here for a moment and understand what are all steps you have performed.
Understand the purpose of each step and look for improvements in possible areas.
Take a look at definition of Devops again and introspect.
Tools from below phases can be picked/swapped based on own choice or job profile.
Phase 2
Topics: Docker, Cloud operations, Ansible
Here dockerise application and push to container image library.
Cover Docker-compose. Optionally can cover docker swarm
Pick Cloud of your choice - Cover Cloud basics - Storage S3, EFS,IAM,VPC, Domain registry, Auto Scaling, memcache, Database service.
Monitoring tool - Newrelic or any other basic monitoring tool.
Terraform basic level.
Ansible playbooks
Phase3:
Elastic Container service , Cloud Functions (Lambda )
Kubernetes - Stateful and stateless application deployment.
Fluentd, ELK, Splunk - Logging tool
Prometheus - Monitoring tool.
Terraform cloud, Pipeline.
System Designing.
continuous learning.