========================
1. Course Info(Content)
========================
Module-1 : Introduction (SDLC)
Module-2 : Linux OS
Module-3 : Shell Scripting
Module-4 : AWS Cloud
Module-5 : DevOps Tools (15+ )
Module-6 : Real-Time Projects
Module-7 : Interview Guidance
===================
DevOps Tools (15+)
===================
1) Maven
2) Gradle
3) Git Hub
4) BitBucket
5) Tomact
6) SonarQube
7) Nexus
8) JFrog
9) Terraform
10) Ansible
11) Docker
12) Kubernetes
13) Jenkins
14) ELK
15) JIRA
16) Grafana
17) Promethues
==========================
AWS Cloud (15+ Services)
==========================
1) EC2 : Virtual Servers
- EBS (Volumes & Snapshots)
- Load Balancing
- Auto Scaling
2) S3 : Unlimited Storage
3) RDS : Relational Database
3) IAM : Identity & Access Management
4) VPC : Virtual Private Cloud (Networking)
5) Lambdas : Serverless computing
6) EKS : Elastic Kubernetes Service
7) Cloud Watch : Monitoring
8) SNS : Simple Notification Service
9) Route 53 : DNS
10) AWS CLI
11) Elastic Bean stack
=========================================
2 : Software Project Introduction
=========================================
Q) What is software project ?
=> Collection of software programs is called as Software Project
=> To develop software programs we will use programming languages
Ex: C, C++, Java, Python, PHP, C#....
==========================================
Q) Why to develop software project ?
==========================================
=> Software projects are used to reduce human efforts and simplify humans life
1) IRCTC for train tickets booking
2) Net banking for banking operations
3) Amazon, Flipkart etc for online shopping
4) Swiggy, Zomato for food orders
============================
Types of software projects
============================
1) Desktop application / stand-alone application
2) Web Application
3) Mobile application
=> Desktop applications will execute only in one system
(only one user can access at a time)
Ex: OS, Calculator, Notepad
=> Web Applications can be accessed by multiple users at a time with internet
Ex: YouTube, Gmail, Facebook, LinkedIn....
=> Mobile applications are used to run in mobiles
Ex : WhatsApp, Facebook messenger, Instagram...
#### Note: Some Project are available for both web and mobile also ###
================================
3. Software Project Architecture
================================
=> Application architecture contains below 3 components
1) Frontend (Presentation Layer)
2) Backend (Business Logic)
3) Database (Storage)
=> Front end contains user interface ( Presentation layer)
Frontend technologies: Html ,CSS ,bootstrap Angular / React JS
=> Backend technologies : Java / Python / Dot Net / Node JS...
=> Database is used for storage
Databases : Oracle , MySQL, SQL Server, Mongo DB, Casandra..
==================================
4. Application(Project) Tech Stack
==================================
App-1 : Angular + Java + Oracle
App-2 : React JS + Java + Mongo DB
App-3 : Angular + Python + MySQL
App-4 : React JS + Dot Net + SQL Server
App-5 : React JS + Node JS + Mongo DB
========================
5. What is SDLC?
========================
- Software Development Lifecycle
- it represent how companies will develop and deliver software product from
starting to ending.
- in SDLC several phases will be available
1. Requirement Gathering
2. Analysis
3. Design / Planning
4. Development
5. Testing
6. Deployment and Delivery
7. Support / Maintenance
- in SDLC we have several models
1. Waterfall model (Outdated)
2. Agile Model (Trending)
======================
6. Waterfall Model
======================
- This is the first SDLC Model that came into market
- It is also known as Linear Model or Sequential Model
- After one stage completed then only we will move to next stage
- It supports only forward direction
- Requirement are fixed
- Budget is fixed
- Client involvement is very less in this model
Note: We can't change project requirement in middle.
======================
7. Agile Model
======================
- It is an iterative approach to develop, test and deliver the application.
- In agile model, "development + testing + delivery" is a continuous process.
- In Agile Model, application will be delivered to client in multiple
releases(sprints).
- Client involvement is very high in agile model.
- client feedback is very critical
- Requirement are not fixed
- Budget is not fixed
==================
8. What is DevOps ?
==================
Development + Operations = DevOps
=> DevOps is a process
=> DevOps is a culture
=> DevOps set of practices
=> It is used to establish collaboration between Developers and Operations team.
=> The main aim of DevOps is to simplify application delivery process to clients
with high quality.
=> DevOps is used to speed up application delivery process.
=================
9. DevOps Life Cycle
=================
=> DevOps life cycle will be represented by 7C's
1) Continues Planning
2) Continues Development
3) Continues Integration
4) Continues Testing
5) Continues Deployment
6) Continues Monitoring
7) Continues Feedback
==================================================================
Infrastructure Setup ===> Terraform => AWS | Azure | GCP
Configuration Management ===> Ansible
Source Code Management ===> Git Hub | Bit Bucket
Code Review ===> SonarQube
Artifactory Server ===> Nexus | JFrog
Build + Deployment ==> Maven/Gradle + Docker + Kubernetes + Jenkins
Monitoring ==> Prometheus + Grafana + ELK (Logs Monitoring) / Splunk
Project Management ===> JIRA
==========================================
10. How to adopt DevOps process in project ?
==========================================
By using set of tools those are called as DevOps tools
Terraform : To create infrastructure in cloud platform
Ansible : To manage configuration
Git Hub : Source Code Management s/w
Maven : Build Tool
SonarQube : For code review
Nexus : Artifactory server
Tomcat : Web Server
Docker : Containerization
Kubernetes : Orchestration
Jenkins : CI CD
Prometheus & Grafana : Monitoring tools
ELK : Log monitoring
JIRA : Project Management
==================================
11. Types of Teams in the project
==================================
1) Business Analysis Team (Functional)
2) Development Team
3) Testing Team
4) Operations Team (DevOps Team)
=> Business Analysis team is responsible to get requirements from the client.
=> Development Team is responsible for coding (develop the project)
=> Testing team is responsible to verify project is working as expected or not.
=> Operations team is responsible for below activities
a) Infrastructure setup
Ex: App servers, Db servers, Storage, Network, Security..
b) Configuration Management
Ex: install required s/w, copy files
c) Build & Deployment
d) Application Release
e) Monitoring
1) Functional Team : Collect requirements from the client.
2) Development Team : Coding (java, python, .NET)
3) Testing Team : Verification & Validation
4) DevOps Team : Build, Deploy & Deliver
=============================
12. Roles & Responsibilities
=============================
1. Roles & Responsibilities of Functional Team
===========================================
=> Understand client business
=> Understand client requirements
=> Gather Requirements from client
=> Prepare Requirements Document (FDD)
=> Explain FDD to Dev & Testing team.
Note: Functional Team is also called as Business Analyst Team.
2. Roles & Responsibilities of Development Team
===============================================
=> Requirements Analysis
=> Design (Prototype)
=> Development (Coding)
=> Unit Testing
=> Code Integration
=> Bug Fixing
3. Roles & Responsibilities of Testing Team
==========================================
=> Requirements Analysis
=> Prepare Test plan
=> Functional Testing
=> Bug Reporting
=> Performance Testing (Load Testing)
4. Roles & Responsibilities of DevOps Team
=========================================
1) Understanding Infrastructure Requirement
- Machines / Servers
- Storage
- Network
- Backup
- Security
- Database
2) Infrastructure creation/provisioning in cloud (AWS) ===> Terraform
3) Configuration Management ===> Ansible
- install required software's (ex: java/python)
- copy files from one machine to another machine
4) Working with Linux Servers
5) Work with Source Code Repository servers ===> git hub & bit bucket
- Setup git hub repo
- user management
- RBAC (Role based access)
6) Code Review / Code Quality Checks =====> SonarQube
7) Application Containerization ===> Docker
- Package (code + libraries + dependencies)
8) Application Orchestration ===> Kubernetes
- Managing containers
9) Create Pipeline ======> Jenkins CI/CD
- Automate build & deployment
10) Monitoring =====> Grafana, Prometheus & ELK
- Pipelines monitoring
- Infrastructure monitoring
- Application logs
============
Summary
============
1) Course Info
2) What is Software Project & Why
3) Project Architecture
4) Project Tech stack
5) What is SDLC & Phases of SDLC
6) Waterfall Model
7) Agile Model
8) What is DevOps
9) DevOps Lifecycle
10) How to adopt DevOps culture
11) Types of Teams in the project
12) Roles & Responsibilities of DevOps Engineer
===============
DevOps Tools
===============
1) Git Hub / Bit Bucket
2) Maven / Gradle
3) SonarQube
4) Nexus / JFrog
5) Tomcat
6) Jenkins
7) Docker
8) Kubernetes
9) Grafana
10) Prometheus
11) ELK
12) Ansible
13) Terraform
14) Trivy
15) JIRA
====================
Git Hub / Bit Bucket
====================
=> Used as version control software's
=> Code Integration at one place
=> Monitored Access (who, when, what, why) - tracking
===============
Maven / Gradle
===============
=> Used as build tools
=> Used for automating build process
- build process = compilation + unit test execution + code package
=> When we build the project we will get project artifact
standalone app ===> jar file
web app ===> war file
===============
SonarQube
===============
=> Code Review Tool
=> It is used for code quality check
=> It will identify developers mistakes in the code
Quality gate is passed ===> Go
Quality gate is failed ===> No Go
==================
Nexus / JFrog
==================
=> Artifactory Servers
=> These are used to store project build artifacts (jar/war)
==============
Tomcat / IIS
==============
=> It is a web server
=> Web servers are used to run web applications
=> The process of running web applications in webserver is called as Deployment.
====================================
JENKINS / Argo CD / Git Hub Actions
===================================
=> It is used as CI CD server
=> It is used to automate project build & deployment process.
CI : Continuous Integration
CD : Continuous Delivery
========
Docker
========
=> Containerization Software
=> It is used to package "app-code + app-libraries + app-dependencies" as single
unit
=> Using docker we can run our application in any machine.
==========
Kubernetes
==========
=> Orchestration software
=> It is used to manage our containers.
Ex : create / delete / scale up / scale down
=====================
Prometheus & Grafana
=====================
=> Monitoring Tools
=> To monitor our servers
======
ELK
======
=> Centralized logging
=> ELK is used for application log monitoring
Note: Monitoring execution details of the application
E => Elastic Search
L => Logstash
K => Kibana
===========
Terraform
===========
=> Infrastructure as a code (IAC)
- servers
- database
- storage
- security
- network
=> Using Terraform we can create infrastructure in cloud platform.
=> Terraform supports multiple clouds (AWS, AZURE, GCP).
========
Ansible
========
=> Configuration Management Tool
=> Using ansible we can automate configuration management.
ex : install software's, OS updates, files transfer...
=====
Trivy
=====
=> Security scans
=======
JIRA
=======
=> Project Management
=> Used for task assignment
=> Used for bug reporting
============================
What is Infrastructure ?
============================
=> let's consider we have function in home
- We need following things
- 500 chairs
- 200 tables
- 1 stage
- 1 generator
=> The resources required to run our company / Project
Ex: Machines, Network, Storage, Database, Monitoring etc...
=> We can maintain infrastructure in 2 ways
1) On-Prem infrastructure
2) Cloud Infrastructure
1) What is On-Prem Infrastructure?
=============================
=> On-Prem means we need to purchase and we need to maintain our resources
=> We have several challenges with On-Prem infrastructure
- Lot of cost
- Scalability issue
- Availability issue
- Security issue
- Network issues etc...
=> To overcome the problems of on-prem infrastructure companies are preferring
Cloud Infrastructure.
What is Cloud Computing?
==========================
=> The process of delivering IT resources over the internet on-demand basis with
"Pay As You Go" Model is called as Cloud Computing.
=> We have below advantages with Cloud Computing....
- Pay as you go
- Less Cost
- Scalability
- Availability
- Security
- Backup etc...
Advantages with Cloud Computing
================================
1) Pay As You Go
2) Low cost
3) Scalability
4) Availability
5) Reliability
6) Security
7) Backup
8) Unlimited Storage
================
Cloud Providers
================
1) Amazon => AWS
2) Microsoft => Azure
3) Google => GCP
4) Salesforce
5) Ali Baba.....
============================
AWS => Amazon Web Services
============================
=> Started in the year of 2006
=> Maintaining global infrastructure
- 36 Regions
- 114 Availability Zones
=> 190+ Countries using AWS cloud
=> Works based on "Pay As You Go" model
Free Tier Account - 1 year access
200+ services available (all are not free)
- [Link]
Account de-activation will happen if we don't pay bill amount
=============================
AWS Services
=============================
=> AWS providing 200+ services to run our businesses
=> As per project requirement we will use 10 to 15 services from AWS
=> Major AWS Services are
1) EC2 (Elastic Compute Cloud)
- To create Virtual Machines in Cloud
Example: Windows VM, Linux VM, Mac VM
2) S3 (Simple Storage Service)
- Unlimited Storage
3) RDS (Relational Database Service)
- Examples: Oracle, MySQL, SQL Server
4) VPC: Virtual Private Cloud
=> Isolated Network For Resources in AWS cloud
5) IAM: Identity & Access Management
=> Users, User Groups, Roles, Policies
6) Cloud Watch
=> Resources Monitoring
7) SNS: Simple Notification Service
8) Beanstack
=> Platform as a Service
9) Lambdas
=> Serverless Computing (run app without thinking about server)
=====================
Interview Questions
=====================
1) What is Software Project ?
2) Roles & Responsibilities of DevOps Engineer
3) What is DevOps & Why ?
4) DevOps Tools
5) Why to use Cloud ?
====================================================
1) What is DevOps why DevOps ?
2) DevOps tools & purpose of each tool
3) Roles & Responsibilities of DevOps engineer
4) What is Cloud computing & why ?
5) What is project & why project & architecture
====================================================