๐”– Scriptorium
โœฆ   LIBER   โœฆ

๐Ÿ“

Continuous Integration and Delivery with Test-driven Development

โœ Scribed by Amit Bhanushali; Alekhya Achanta; Beena Bhanushali


Publisher
BPB Online
Year
2024
Tongue
English
Leaves
238
Category
Library

โฌ‡  Acquire This Volume

No coin nor oath required. For personal study only.

โœฆ Synopsis


Amit Bhanushali, Alekhya Achanta, Beena Bhanushali, "Continuous Integration and Delivery with Test-driven Development: Cultivating quality, speed, and collaboration through automated pipelines"

Building tomorrow, today: Seamless integration, continuous deliver

Key Features

โ— Step-by-step guidance to construct automated software and data CI/CD pipelines.
โ— Real-world case studies demonstrating CI/CD best practices across diverse organizations and development environments.
โ— Actionable frameworks to instill an organizational culture of collaboration, quality, and rapid iteration grounded in TDD values.

Description

As software complexity grows, quality and delivery speed increasingly rely on automated pipelines. This practical guide equips readers to construct robust CI/CD workflows that boost productivity and reliability. Step-by-step walkthroughs detail the technical implementation of continuous practices, while real-world case studies showcase solutions tailored for diverse systems and organizational needs.

Master CI/CD, crucial for modern software development, with this book. It compares traditional versus test-driven development, stressing testing's importance. In this book, we will explore CI/CD's principles, benefits, and DevOps integration. We will build robust pipelines covering containerization, version control, and infrastructure as code. Through this book, you will learn about effective CD with monitoring, security, and release management, you will learn how to optimize CI/CD for different scenarios and applications, emphasizing collaboration and automation for success.

With actionable best practices grounded in TDD principles, this book teaches how to leverage automated processes to cultivate shared ownership, design simplicity, comprehensive testing, and ultimately deliver exceptional business value.

What you will learn

โ— Construct smooth automated CI/CD pipelines tailored for complex systems.
โ— Master implementation strategies for diverse development environments.
โ— Design comprehensive test suites leveraging leading tools and frameworks.
โ— Instill a collaborative culture grounded in TDD values for ownership and simplicity.
โ— Optimize release processes for efficiency, quality, and business alignment.

Who this book is for

This book is ideal for software engineers, developers, testers, and technical leads seeking to improve their CI/CD proficiency. Whether you are starting to explore the tool or looking to deepen your understanding, this book is a valuable resource for anyone eager to learn and master the technology.

Table of Contents

  1. Adopting a Test-driven Development Mindset
  2. Understanding CI/CD Concepts
  3. Building the CI/CD Pipeline
  4. Ensuring Effective CD
  5. Optimizing CI/CD Practices
  6. Specialized CI/CD Applications
  7. Model Operations: DevOps Pipeline Case Studies
  8. Data CI/CD: Emerging Trends and Roles

โœฆ Table of Contents


Cover
Title Page
Copyright Page
Dedication Page
About the Authors
About the Reviewers
Acknowledgement
Preface
Table of Contents
1.โ€‚Adopting a Test-driven Development Mindset
Introduction
Structure
Objectives
Traditional methodology
Agile methodology
Development
Traditional development
Test-driven development
Testing
Weighing the pros and cons
Pros
Traditional development
Test-driven development
Cons
Traditional development
Test-driven development
Evolving role of data in software development
Introduction to DataOps
Definition and significance
DataOps in the context of TDD
The intersection of DataOps and CI/CD
Conclusion
2.โ€‚Understanding CI/CD Concepts
Introduction
Structure
Objectives
Defining CI
History and evolution of CI
Core principles of CI
Benefits of CI
Role of CI/CD in software development
Maximize collaboration and productivity with CI/CD
Understanding continuous delivery
Data CI/CD: The new frontier in data operations
Extending CI/CD principles to data workflows
Benefits of CI/CD and data CI/CD
Impact of data CI/CD on data analytics projects
Key attributes of data CI/CD
Attributes for efficient software and data operations
CI/CD and data CI/CD workflow in action
Real-world examples of CI/CD and data CI/CD
Example 1: Software development at Netflix
Example 2: Data CI/CD at Airbnb
Example 3: E-commerce at Etsy
Integration with DevOps and DataOps
CI/CD and data CI/CD tools and ecosystem
Overview of popular CI/CD tools
Introduction to tools specific to data CI/CD
Embracing a CI/CD and data CI/CD culture
Conclusion
3.โ€‚Building the CI/CD Pipeline
Introduction
Structure
Objectives
Constructing a continuous integration pipeline
Key characteristics
Examples of CI/CD pipeline workflows
Traditional CI/CD pipeline
Cloud-based CI/CD pipeline
Stages of CI/CD pipeline
Implementation with Jenkins
CI/CD pipelines minimize manual work
Automation testing strategies
Understanding automation testing
Types of automation testing
Strategies for comprehensive test coverage
Tooling and frameworks
Challenges and best practices
Data integration in CI/CD
Types of data sources
Integration points
Continuous data integration
Benefits
Data validation and testing
Type of data tests
Data quality checks
Automated data testing
Data deployment strategies
Blue-green deployments
Feature toggles
Rolling deployments
Data rollback mechanisms
Backup and restore
Data versioning
Automated rollback
Containerization and orchestration
Understanding containerization
Introducing Docker
Orchestration with Kubernetes
Challenges and best practices
Version control and source management
Understanding version control and source management
Introducing Git
Integration within CI/CD pipelines
Git workflow strategies
Challenges and best practices
Infrastructure as Code
Understanding Infrastructure as Code
Introducing Terraform
Introducing Ansible
Integration with CI/CD pipelines
Challenges and best practices
Conclusion
4.โ€‚Ensuring Effective CD
Introduction
Structure
Objectives
Monitoring and observability
Real-time monitoring and observability for CD
Utilizing monitoring data for proactive issue resolution
Observing data workflows for quality and consistency
Security checks and compliance in CD pipelines
Security and compliance for code and data
Security and integrity during deployment
Release management strategies
Complex releases across different environments
Feature toggles and rollbacks for precise control
Scalability to handle workload and traffic
Ensuring high availability and performance
Enhanced user experience in CD
Minimizing user disruption in deployments
Collecting and incorporating user feedback
Conclusion
5.โ€‚Optimizing CI/CD Practices
Introduction
Structure
Objectives
Scaling CI/CD for large projects
Defining complexity in software development
Factors contributing to increased complexity
Impact of complexity on development and delivery
Challenges of large projects
Identifying challenges specific to large projects
Scalability issues in development and testing
Risk management in complex projects
Codebase organization
Structuring code for maintainability
Code documentation and commenting
Version control strategies for large codebases
Best practices and tools
Code review and collaboration
Significance of code reviews
Collaborative coding practices
Challenges in collaboration
Code review tools and processes
Best practices and processes
Parallelization in CI/CD
Understanding parallel CI/CD pipelines
Parallel testing and building strategies
Benefits and challenges of parallelization
Optimization techniques
Performance optimization in CI/CD
Resource utilization and cost savings
Implementing caching and artifact management
Data challenges in large projects
Handling large datasets in development and testing
Data synchronization challenges
Data versioning and management
CI/CD for different environments
Defining environments in CI/CD
Roles and responsibilities in different environments
Environment-specific tools and configurations
Environment-specific challenges and considerations
Unique challenges in each environment
Maintaining consistency across environments
Managing environment-specific data
Configuration management for code and data
Configuration as Code principles
Managing environment configurations
Data configuration and migration strategies
Continuous improvements and feedback loops
Importance of feedback in CI/CD
Feedback as a cornerstone of CI/CD
Real-time feedback mechanisms
Benefits of early and frequent feedback
Implementing continuous improvement processes
Continuous improvement frameworks
Identifying areas for improvement
Root cause analysis and corrective actions
Monitoring and metrics for performance optimization
Monitoring infrastructure and application performance
Collecting relevant metrics
Using metrics for optimization and decision-making
Ensuring data quality through data CI/CD
Data quality as a part of CI/CD
Implementing data validation checks
Automating data quality assurance
Conclusion
6.โ€‚Specialized CI/CD Applications
Introduction
Structure
Objectives
CI/CD for mobile and IoT
CI/CD practices for mobile app development
Version control for mobile projects
Automated testing on various devices and OS versions
Dealing with app store submissions and updates
Emphasis on speed, reliability, and efficiency
IoT-specific CI/CD considerations and challenges
Strategies for mobile and IoT applications delivery
Monitoring and error tracking
Rollback mechanisms
Handling intermittent connectivity in IoT devices
Prioritizing user experience
CI/CD contribution to reliability
Leveraging tools for continuous delivery
Exploring specialized tools and platforms for CI/CD
Jenkins
Travis CI
CircleCI
Azure DevOps
Xcode Server
Evaluating toolsets for specific application domains
Identify domain-specific requirements
Assess tool capabilities
Evaluate tool ecosystem and integrations
Proof of concept and testing
Collaboration and team skillset
CI/CD best practices
Tool integration and best practices
Version control system integration
Automated testing integration
Containerization for consistent builds
Scripting and automation
Continuous feedback and monitoring
Infrastructure as Code
Testing as code
Case studies
GitHubโ€™s journey to CI/CD
Googleโ€™s CI/CD pipeline for firebase
IoT CI/CD pipeline of Bosch
Wixโ€™s approach to mobile CI/CD
Etsyโ€™s evolution to continuous deployment
Healthcare industry
Automotive industry
Finance industry
Government and public sector
Legacy systems
Conclusion
References
7.โ€‚Model Operations: DevOps Pipeline Case Studies
Introduction
Structure
Objectives
Key considerations for the DevOps pipeline
Accessibility and governance
Case study: Building a DevOps pipeline for effective model operations
Collaborative development and version control
Computing environment
Operationalizing AWS EC2
Leveraging MLflow for model experimentation and tracking
Setting up MLflow on EC2
Expanding CI/CD in MLOps pipeline
Introduction to AWS tools for CI/CD
AWS Sagemaker consideration
Model testing and monitoring
Other CI/CD pipeline development aspects
Example: Bitbucket and Ansible Pipelines for CI/CD in a Node.js
Introduction: Navigating the landscape of automation
Orchestrating effortless deployments
Setup your pipelines: Crafting a seamless integration
Automated deployment of Node.js with Ansible
Example: Implementing CI/CD on Azure
Complexity of software delivery
Practices of CI/CD
Continuous integration
Continuous delivery and deployment
Distinguishing continuous delivery from continuous deployment
Advantages of continuous delivery
Automating the release process
Enhancing developer efficiency
Enhancing code quality
Accelerate update delivery
Implementing CI/CD
Navigating the route to CI/CD
Continuous integration
Continuous delivery: Creating a staging environment
Continuous delivery: Creating a production environment
Continuous deployment
Maturity and beyond
Teams
Application team
Infrastructure team
Tools team
Testing stages in CI/CD
Setting up the source
Setting up and executing builds
Staging
Building the pipeline
Starting with a minimum viable pipeline for continuous integration
Continuous delivery pipeline
Adding actions
Manual approvals
Deploying infrastructure code changes in a CI/CD pipeline
CI/CD for serverless applications
Pipelines for multiple teams, branches, and regions
Pipeline integration with Azure code build
Pipeline integration with Jenkins
Deployment methods
All at once: In-place deployment
Rolling deployment
Immutable and blue green deployment
Modification to database schema
Outline of best practices
Conclusion
8.โ€‚Data CI/CD: Emerging Trends and Roles
Introduction
Structure
Objectives
Role of culture in CI/CD and data CI/CD
Collaboration and quality
Collaboration
Quality
Data-driven decision-making culture
Data-driven decision-making strategies for large projects
CI/CD adoption
Leadership strategies
Future of CI/CD and data CI/CD
Emerging trends
Evolution of GitOps
Widespread adoption of immutable infrastructure
Advancements in DataOps
Future predictions
Conclusion
Index


๐Ÿ“œ SIMILAR VOLUMES


iOS Code Testing: Test-Driven Developmen
โœ Abhishek Mishra ๐Ÿ“‚ Library ๐Ÿ“… 2017 ๐Ÿ› Apress ๐ŸŒ English

Put into motion practical examples to master Test-Driven Development (TDD) and acceptance testing in Swift. This book uses a pragmatic approach to writing well-tested code and provides techniques that can be used to retrofit tests to legacy code bases. You'll be introduced to basic principles of

Xamarin Continuous Integration and Deliv
โœ Gerald Versluis (auth.) ๐Ÿ“‚ Library ๐Ÿ“… 2017 ๐Ÿ› Apress ๐ŸŒ English

<p>Learn everything you need to set up a full-featured, automated pipeline for Xamarin development and deployment. Automate everything from the build step through to deployment and delivery to your customer. If you thought this level of automation could be achieved only by large companies with gener

Continuous Integration, Delivery, and De
โœ Sander Rossel ๐Ÿ“‚ Library ๐Ÿ“… 2017 ๐Ÿ› Packt ๐ŸŒ English

The challenge faced by many teams while implementing continuous delivery is that it requires the use of many tools and processes that all work together. Learning and implementing all these tools (correctly) takes a lot of time and effort, leading people to wonder whether itโ€™s really worth it. This b