Real-World DevOps Practices: A Case Study Approach
ISBN: 9789357465946
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 |