Empower Your Learning with Wiley’s AI Buddy

Real-World DevOps Practices: A Case Study Approach

B. Thangaraju

ISBN: 9789357465946

INR 899

For more information write to us at: acadmktg@wiley.com

Description

It is designed to equip readers with the knowledge and practical skills necessary to effectively implement DevOps tools across various industries. It presents a clear, step-by-step method for DevOps adoption, covering tool selection, pipeline architecture, and overcoming growth challenges.

 

The book tests your grasp of DevOps through over 400 questions, including descriptive exercises, lab tasks, and MCQs. These are designed to test your understanding and application of DevOps concepts. Suitable for novices and experts alike, it lays a solid foundation in agile and DevOps principles, with practical applications demonstrated through real-life case studies. It also highlights the critical role of governance in ensuring the sustained improvement of DevOps projects.

 

This accessible, hands-on manual prepares you with the skills to excel in DevOps, regardless of your sector or experience level.

 

 

Preface

About the Book

Organisation of the Book

Who Should Read This Book?

How to Use This Book

About the Author

Acknowledgment

Part 1 Understanding DevOps

1 DevOps Fundamentals

1.1 Introduction to DevOps

1.1.1 History of DevOps

1.1.2 Definition of DevOps

1.1.3 DevOps: Key Components

1.1.4 DevOps: Key Advantages

1.1.5 Enterprise Application Evolving Themes

1.1.6 Why DevOps has Become Essential in Modern Software Development?

1.2 DevOps: Key Principels

1.2.1 Automation: The Role of Automation in Streamlining Processes

1.2.2 Dev and Ops: Collaboration and Integration

1.2.3 Continuous Delivery: The Concept of Continuous Delivery and Its Benefits

1.2.4 Monitoring and Feedback: Real-Time Monitoring and the Feedback Loop in DevOps

1.3 DevOps Toolchains

1.3.1 Robust DevOps Toolchain

1.4 Challenges in Adopting DevOps

1.4.1 Challenges in Adopting DevOps for Legacy Systems

1.4.2 Strategies to Overcome DevOps Challenges in Legacy Systems

1.5 Measuring DevOps Success

1.6 DevOps Myths

1.6.1 Common Myths About DevOps

Summary

Exercise

Further Reading

Part 2 DevOps Tool Chains Overviews

2 DevOps Tools: Version Control to Monitoring

2.1 Version Control System

2.1.1 Introduction

2.1.2 Version Control System: Key Features

2.1.3 Significance of Version Control in Collaborative Development

2.1.4 Global Information Tracker (Git)

2.1.5 Frequently Used Git Commands

2.1.6 Version Control System: A Look at Other Tools

2.2 Continuous Integration (CI) Tools

2.2.1 Introduction

2.2.2 Continuous Integration: Process and Advantages

2.2.3 Establishing Effective Continuous Integration

2.2.4 Exploring Popular CI Tools

2.3 Build Automation Tools

2.3.1 Introduction

2.3.2 Criteria for Choosing Build Automation Tools

2.3.3 Commonly Used Build Automation Tools

2.4 Testing Automation Tools

2.4.1 Introduction

2.4.2 Role of Testing Automation in Software Development

2.4.3 Various Types of Testing

2.4.4 Testing Automation Tools: Key Features and Evaluation Criteria

2.4.5 Test Automation Tools: A Selected List

2.5 Deployment Automation Tool

2.5.1 Benefits and Objectives of Deployment Automation

2.5.2 Deployment Automation: Challenges Addressed

2.5.3 Deployment Automation: Core Elements

2.5.4 Deployment Automation Tools: A Selected List

2.5.5 Auto DevOps

2.5.6 Continuous Delivery vs Continuous Deployment

2.6 DevOps: Monitoring Tools

2.6.1 DevOps Monitoring: Key Components

2.6.2 Monitoring Tools: Enhancing the DevOps Lifecycle

2.6.3 Metrics, Logs, and Traces: Key Concepts in DevOps Monitoring

2.6.4 Why Metrics, Logs, and Traces Matter?

2.6.5 Diverse Monitoring Tools

2.6.6 Application Performance Monitoring (APM) Tools

2.6.7 Log Management Tools

2.6.8 Distributed Tracing Tools

2.6.9 Tool Selection: Essential Factors

2.6.10 Tool Selection for Use Cases and Tech Stacks

2.6.11 Steps for Integrating Monitoring Tools with Existing Infrastructure

2.6.12 Key Considerations for Defining Metrics and Key Performance Indicator (KPIs) in Monitoring

2.6.13 Effective Alerting and Notification Strategies

2.6.14 Implementing Automated Responses to Detected Issues

Summary

Exercise

Multiple Choice Questions

3 Ansible: Configuration Management with Effective Practices

3.1 Introduction

3.2 Configuration Management: Key Features

3.3 Understanding IaC: Two Approaches

3.3.1 Declarative Approach (Functional)

3.3.2 Imperative Approach (Procedural)

3.4 IaC: Push and Pull Methodologies

3.4.1 ‘Push’ Method

3.4.2 ‘Pull’ Method

3.5 Ansible: Simplifying Automation and Configuration Management

3.5.1 Ansible: Key Features

3.5.2 Use Cases for Ansible

3.5.3 Ansible: Key Components

3.5.4 Ansible: Architecture

3.5.5 Ansible: Installation

3.6 Integrate Ansible with Jenkins

3.7 Understanding the Role of the Inventory File in Ansible Automation

3.7.1 Inventory File Creation

3.8 Illustrating Ansible Syntax and Playbooks for Common System Operations

3.8.1 Container Web Server Creation

3.8.2 Advanced Ansible Techniques and Best Practices

3.9 Ansible Debugging

3.9.1 Understanding Ansible Debugging

3.9.2 Key Debugging Techniques

3.10 Ansible Best Practices

3.10.1 List of a Few Other Popular Configuration Management Tools

Summary

Exercise

Multiple Choice Questions

4 Docker Fundamentals and Beyond

4.1 Introduction to Virtualisations

4.1.1 Advantages of Virtualisation

4.1.2 Evolution of the Infrastructure Path

4.2 Introduction to Container

4.2.1 Containerisation: Key Concepts

4.3 Container: Internal Mechanisms

4.4 Docker: A Comprehensive Introduction

4.5 Docker Engine: Core Components and Container Architecture

4.6 Docker: Architecture

4.7 Virtual Machine Vs Docker

4.8 Docker Installation

4.8.1 Basic Docker Commands

4.9 Dockerfile

4.9.1 Why Dockerfile is Essential for Creating Docker Containers?

4.9.2 Exploring Dockerfiles

4.9.3 Docker Buildx: Enhanced Docker Image Building

4.9.4 Using Docker Buildx

4.9.5 Dockerfile for Serving “Hello, World!” with Nginx

4.9.6 Multi-Stage Build

4.9.7 .dockerignore

4.9.8 Alpine Base Image: An Introduction

4.10 Docker Compose: A Comprehensive Introduction

4.10.1 Docker Compose: Key Features

4.10.2 Why Use Docker Compose?

4.10.3 Docker Compose: Key Elements

4.10.4 Docker Compose: Installation

4.10.5 Docker Compose YAML Configuration

4.10.6 Defining Services

4.10.7 Docker Compose: Network Integration

4.10.8 Managing Volumes

4.10.9 Environment Variables and Secrets

4.10.10 Scaling Services

4.10.11 Docker Compose Commands

4.10.12 Best Practices and Tips

4.11 Containerisation Tools Similar to Docker

4.12 Docker Compose vs. Kubernetes

Summary

Exercise

Multiple Choice Questions

Further Reading

5 Kubernetes in DevOps: Managing Containerised Applications

5.1 Kubernetes: A Historical Overview

5.2 Kubernetes: An Introduction

5.2.1 Kubernetes: Advantages and Key Features

5.3 Kubernetes Architecture

5.3.1 Synchronisation and Interaction of the Various Components of Kubernetes Worker Node

5.3.2 Kubernetes Installation

5.4 Minikube

5.4.1 Minikube: Architecture

5.4.2 Minikube: Advantages

5.4.3 Installing Minikube in Ubuntu Virtual Machine

5.4.4 Kubernetes YAML Files and Commonly Used Instructions

5.5 Exploration of Kubernetes Concepts and Practical Implementations

5.5.1 Namespaces in Kubernetes

5.5.2 Kubernetes Deployment

5.5.3 Kubernetes Services: Concepts, Features, and Management

5.5.4 Pod Replica in Kubernetes

5.5.5 Updating the Deployment: Changing the Image and Rollback Mechanism

5.5.6 LoadBalancer Service Type

5.5.7 Kubernetes Networking

5.5.8 Persistent Volume in Kubernetes

5.5.9 ConfigMaps in Kubernetes

5.5.10 Secrets

5.5.11 Pod Lifecycle Management

5.5.12 Init Containers in Kubernetes: An Overview

5.5.13 Sidecar Containers in Kubernetes

5.5.14 CronJobs in Kubernetes

5.5.15 Kubernetes: Live Updates

5.5.16 Failover Mechanisms in Kubernetes

5.5.17 Resource Quotas and Resource Limits in Kubernetes

5.5.18 Horizontal Pod Autoscaler (HPA) in Kubernetes

5.6 Debugging Kubernetes

5.6.1 Pod Debugging

5.6.2 Service Debugging

5.6.3 Node Debugging

5.6.4 Network Debugging

5.6.5 Resource Management Debugging

5.6.6 Storage Debugging

5.6.7 Security Debugging

5.6.8 Using Logs and Metrics

5.7 Integrating Kubernetes with Jenkins

5.8 Popular Container Orchestration Tools

Summary

Exercises

Multiple Choice Questions

Further Reading

6 Jenkins Unleashed: Features, Configuration, and Implementation Mastery

6.1 Jenkins: History and Introduction

6.1.1 Jenkins: Configuration

6.1.2 Jenkins: Architecture

6.1.3 Jenkins: Key Features

6.2 Jenkins: Installation and Configuration

6.2.1 Jenkins: Accessing and Initialising

6.3 Build Triggers

6.3.1 Build Periodically

6.3.2 Custom Workspace

6.3.3 Demonstrating Custom Workspace Setup in Jenkins

6.3.4 Parameterised Job

6.3.5 Trigger Builds Remotely

6.3.6 Using Poll SCM to Monitor Source Code Management

6.3.7 GitHub Hook Trigger for GITScm Polling

6.3.8 Orchestrating Job Dependencies in Jenkins

6.4 Email Notification

6.4.1 Email Notification: Configuring

6.4.2 Types of Email Notifications

6.4.3 Email Notifications: Advantages

6.4.4 Illustrating Email Notification in Jenkins

6.5 Role-Based Authentication Strategy

6.5.1 Key Features

6.5.2 Advantages of Role-Based Authentication Strategy

6.5.3 Setting Up Role-Based Authentication

6.5.4 Example Scenarios of Role-Based Authentication

6.5.5 Implementation of Role-Based Authentication for User Management in Jenkins

6.6 Jenkins Distributed Architecture

6.6.1 Jenkins Distributed Architecture: Configuration

6.6.2 Jenkins Distributed Architecture: Advantages

6.6.3 Configuring a Jenkins Distributed Architecture with Docker Containers

6.7 Jenkins Pipeline

6.7.1 Jenkins Pipeline: Architectures

6.7.2 Creating and Visualising a Jenkins Pipeline Demo

6.8 Debugging in Jenkins

Summary

Exercise

Multiple Choice Questions

Further Reading

Part 3 Real-World Case Study Approach

1 Transforming Theory into Practice: A DevOps Journey with a Calculator Program

C1.1 Introduction

C1.2 Objective

C1.3 DevOps Solution

C1.4 Getting Started with Project Creation and Maven

C1.4.1 Executing Maven Commands

C1.5 Integrating the XML into pom.xml

C1.6 Integrating Version Control with Git and GitHub

C1.7 Setting up Version Control and Preparing for Commit

C1.8 Pushing Local Changes to the Remote Repository

C1.9 Jenkins Integration

C1.10 Implementation of the Calculator Program

C1.11 Executing the Pipeline Automatically Using Git SCM Polling & NGROK

C1.12 Extracting the Log File from a Running Container

C1.13 Conclusion

2 Transformation Through DevOps: Evolving ‘E-Bill Pay’ Utilities Operations and Customer Experience

C2.1 Introduction

C2.2 Objectives

C2.3 DevOps Solution

C2.3.1 Application Architecture

C2.3.2 Implementation

C2.3.3 Implementation of DevOps Tools

C2.3.4 Continuous Integration (Jenkins) Pipeline

C2.4 Docker Containerisation

C2.4.1 Docker Compose

C2.4.2 Deployment using Ansible

C2.4.3 Logging and Monitoring with ELK Stack

C2.5 Monitoring

C2.5.1 Monitoring System Performance Using ‘Count of Records (Transactions)’

C2.6 Conclusion

C2.7 Future Roadmap

Further Reading

3 Revolutionising Mental Health Services: A DevOps Implementation Journey with Book My Buddy

C3.1 Introduction

C3.2 Challenges

C3.2.1 User Experience Challenges

C3.2.2 Buddy-Specific Challenges

C3.2.3 Administrative Challenges

C3.3 Overview and Significance of the MERN Stack

C3.3.1 Brief about the MERN components

C3.3.2 Significant Features and Benefits of the MERN Stack

C3.4 Objectives

C3.5 DevOps Solution

C3.5.1 DevOps Tool Chain

C3.5.2 Source Code Directory Structure

C3.6 Implementation

C3.6.1 Unit Testing

C3.6.2 Kubernetes and Docker Compose

C3.6.3 Docker Compose

C3.6.4 Ansible Deployment

C3.6.5 Ansible using Kubernetes

C3.6.6 Utilising Winston for Effective Logging in MERN Stack Applications

C3.6.7 Jenkins Pipeline

C3.6.8 ELK Screenshots for Application Performance Monitoring

C3.7 Conclusion

4 Pioneering Healthcare Data Management: MedWeb’s Innovative Consent System

C4.1 Introduction

C4.1.1 The Challenge

C4.1.2 Key Project Features

C4.2 Block Diagram of the MedWeb Application

C4.2.1 Patient

C4.2.2 Healthcare Providers

C4.2.3 Guardian/Legal Representative

C4.2.4 Emergency Personnel

C4.2.5 Consent Management System (CMS)

C4.2.6 Electronic Health Record (EHR) System

C4.2.7 Admin

C4.3 Problem Statement

C4.4 Adoption of DevOps Practices

C4.4.1 Objectives

C4.4.2 DevOps Solution

C4.5 Experimental Details

C4.5.1 Development and Local Testing

C4.5.2 Build and Packaging

C4.5.3 Source Code Management with GitHub

C4.5.4 Containerization

C4.5.5 Continuous Integration (CI) and Continuous Delivery (CD)

C4.5.6 Deployment

C4.5.7 Container Orchestration Using Kubernetes

C4.5.8 Logging

C4.5.9 Monitoring and Visualisation

C4.6 Results and Discussion

C4.7 Visualisation

C4.7.1 Top 11 Operations vs. PatientID

C4.7.2 Top 5 PatientID and Percentage of Info/Error Occurrences

C4.8 Challenges Encountered During Implementation and Their Resolutions

C4.8.1 Minikube Deployment Challenges

C4.8.2 GitHub Webhook Integration

C4.8.3 Dynamic Connection Details in application.yml

C4.8.4 Direct Access to Kubernetes Services

C4.8.5 JUnit Test Case Failures and Compilation

C4.9 Conclusion

C4.10 Future Roadmap

C4.10.1 Continuous Integration and Continuous Deployment Pipeline

C4.10.2 Proactive Monitoring and Incident Response

C4.10.3 Feedback and Iteration

C4.10.4 Infrastructure Scaling

5 Enhancing Assessment Excellence through DevOps-Powered Peer Grading

C5.1 Introduction

C5.2 Objectives

C5.3 Proposed DevOps-Driven Solution

C5.4 Implementation Strategy

C5.5 Navigating Challenges

C5.6 Architecture Diagram

C5.7 Experimental Details

C5.7.1 Source Code Management

C5.7.2 Continuous Integration

C5.7.3 Containerization

C5.7.4 Container Orchestration and Deployment

C5.7.5 Minikube Usage

C5.7.6 Azure and Azure Kubernetes Service for Cloud Deployment

C5.7.7 Jenkins Pipeline Script Explanation

C5.8 Application Dashboard

C5.9 Continuous Monitoring

C5.10 Benefits

C5.11 Conclusion

C5.12 Future Roadmap

*6 Transforming Education with NoteShare

*7 Fashion Pal’s Digital Transformation

*8 Optimising Academic Package Handling

*9 Streamlining Expense Management with ‘Splitter’

*10 Revolutionising Crowdfunding with CrowdContract

*11 Ekart: A Microservices-Driven E-Commerce Platform

*12 Optimising TA Management with DevOps

*13 Qubejudge: A Pluggable Code Execution Platform

*14 Revolutionising Food Courts with BAWARCHI

*15 Transforming Idle Lands with AutoSpot

*16 Enhancing Gameplay with DevOps and Machine Learning

Index

* Available online

 

 

 

 

×
  • Name:
  • Designation:
  • Name of Institute:
  • Email:
  • * Request from personal id will not be entertained
  • Moblie:
  • ISBN / Title:
  • ISBN:    * Please specify ISBN / Title Name clearly