Friday, March 21, 2025

Jenkins Architecture Across Dev, QA, Staging (Pre-Prod), & Prod Environments | Overview.

Jenkins  Architecture Across Dev, QA, Staging (Pre-Prod), & Prod Environments - Overview.

Focus:

    • Tailored for:
      • Devops, 
      • DevSecops 
      • & Cloud Engineers.

Scope:

  • Intro,
  • Key aspects of jenkins include,
  • Jenkins Master and Slave Architecture,
  • Development (Dev) Environment,
  • Quality Assurance (QA) Environment,
  • Staging Environment,
  • Production Environment,
  • Pipeline Setup Across Environments,
  • Jenkin & Integration,
  • Pipeline workflow for Each Environment
  • Final thoughts.

Intro:

    • Jenkins is an open-source automation Tool used to automate parts of the software development process, such as building, testing, and deploying applications. 
    • The architecture of Jenkins vary across different environments (development, QA, staging, and production), but the core principles generally remain the same. 
    • Jenkins is a continuous integration/continuous delivery (CI/CD) tool that automates the process of building, testing, and deploying code. 
Key aspects of jenkins include
Pipeline as Code:
    •  It allows defining build pipelines using a jenkinsfile (which uses Groovy syntax) stored within a project's source code repository.
Plugins:
    •  It has a vast ecosystem of plugins that extend its functionality, such as the AnsiColor Plugin for adding color and formatting to console output.
Configuration: 
    • The appearance and system messages can be configured in the "Manage Jenkins" section, which may involve using markup formatters like "Safe HTML" for custom styling.
Theming:
    •  Users can change the visual theme of the interface, including a dark theme, via the "Manage Jenkins" > "Appearance" settings. 

1. Jenkins Master and Slave Architecture

  • Master Node:
    • The Jenkins master is the main control server that handles the orchestration of jobs and the scheduling of builds.
    • Master Node also manages the configuration of Jenkins and user access.
    • Master Node  typically has web-based access to Jenkins, where users can define, configure, and monitor jobs.
  • Slave Nodes:
    • Slave nodes (also called agents) are additional machines ( Servers) where the actual job execution takes place.
    • These slaves are connected to the master and can run specific tasks concurrently (e.g., builds, tests, deployments) depending on their configuration.
    • Different environments (Dev, QA, Staging, Production) may have their own set of slave nodes to handle jobs specific to those environments.

2. Development (Dev) Environment

    • Purpose: The Dev environment is where developers write and commit code. Jenkins typically runs jobs like building, testing, and packaging the application.
    • Jenkins Setup:
      • Jenkins is typically set up with a Git repository integration where the code changes are pulled after every commit or on a scheduled basis.
      • Builds are triggered automatically after code is committed to the version control system.
      • Dev-related jobs focus on building the application, running unit tests, static code analysis, and preparing packages for deployment.
      • Dev slaves may be lightweight and can be created on-demand using containers or cloud instances.

3. Quality Assurance (QA) Environment

  • Purpose: The QA environment is for testing the code after it’s been developed, ensuring it’s functional, stable, and bug-free before staging and production.
  • Jenkins Setup:
    • After a successful build in the Dev environment, Jenkins triggers a deployment to the QA environment.
    • Jenkins runs automated tests (integration tests, system tests, etc.) to verify the functionality.
    • The QA environment typically includes test slave nodes that mimic the production environment as closely as possible, but with a focus on stability and testing rather than live traffic handling.
    • Jobs here can also include code quality checks and deployment validation scripts.
    • Additionally, post-deployment validation and test reports are generated and sent to the team for review.

4. Staging Environment

  • Purpose: The staging environment mirrors the production environment as closely as possible. The goal is to perform final validation in an environment that closely replicates production.
  • Jenkins Setup:
    • Jenkins is configured to deploy the application to staging after a successful build and test in the QA environment.
    • The staging environment usually runs the full pipeline, including integration with external services and dependencies.
    • Continuous testing in the staging environment often involves smoke tests, user acceptance tests (UAT), and load tests to validate the application under near-production conditions.
    • Jenkins may trigger deployment to staging, followed by additional tests, before promoting the code to production.
    • Staging slaves are configured to match the production environment (including network, services, etc.), with configurations that reflect the live system.

5. Production Environment

  • Purpose: The production environment is where the live, customer-facing application runs. Jenkins is responsible for promoting the application from staging to production, usually after final approvals.
  • Jenkins Setup:
    • Jenkins is responsible for deploying the code to production in a controlled and reliable way.
    • Typically, deployment to production is more conservative and may require manual approval after successful staging validation.
    • Jenkins supports Blue-Green or Canary deployments in production to minimize downtime and ensure stability.
    • Jobs in production may include monitoring scripts, scaling operations, performance validation, and rolling back if issues arise.
    • Production slave nodes usually need to be high-performing and robust. These may be tightly controlled to avoid errors and provide redundancy.

Pipeline Setup Across Environments

  • Pipeline as Code:
    • Jenkins pipelines (using Jenkinsfile) are often used to define how the code flows through various stages (Dev QA Staging Production)
    • This ensures consistency and repeatability across different environments.
    • twtech may have different pipeline stages for each environment, with specific build, test, and deploy commands.
  • Environment-Specific Configuration:
    • Jenkins is configured to use different credentials, environment variables, and configurations for each environment (e.g., database connections, API keys).
    • It’s common to use tools like Docker to create environment-specific containers that are consistent across the pipeline.

Tools and Integrations,

  • Jenkins often integrates with various tools across environments:
    • Source Control: Git, GitHub, etc.
    • Build Tools: Maven, Nodejs, etc.
    • Test Frameworks: Sonarqube, Aqua Solution, Trivy Operator, etc.
    • Deployment Tools: Ansible, Kubernetes, Docker, etc.
    • Monitoring and Notifications: Slack, SNS (email notifications), Prometheus, Grafana, CloudWatch etc.

 Pipeline workflow for Each Environment

  1. Dev:
    • Checkout code from Git
    • Build and compile the application
    • Run unit tests
    • Package the code for deployment
  2. QA:
    • Deploy built code to the QA environment
    • Run automated tests (e.g., integration tests, API tests)
    • Generate test reports
  3. Staging (Pre-Prod):
    • Deploy code to the staging environment
    • Run smoke tests, UAT, and load tests
    • Validate against production-like conditions
  4. Production:
    • Deploy to production (possibly using Blue-Green or Canary deployment strategies)
    • Run post-deployment checks and monitoring
    • Rollback in case of failure

twtech final thoughts 

  • Jenkins provides flexibility across environments by:
    •  leveraging a master-slave architecture, 
    • pipelines as code, 
    • and environment-specific configurations, 
    • ensuring smooth,
    •  And automated transitions from development to production while minimizing risk and downtime.





No comments:

Post a Comment

Amazon EventBridge | Overview.

Amazon EventBridge - Overview. Scope: Intro, Core Concepts, Key Benefits, Link to official documentation, What EventBridge  Really  Is (Deep...