Cloud Native DevOps: Migrating from Monoliths to Microservices

Contents:

  • Introduction
    • Overview
    • Donations and Ethics Disclaimer
    • Why PronK8S
    • Dedication
    • License
  • Continous Integration & Continuous Delivery
    • Version Control and Branching Strategies
      • Anarchy: One Branch to Rule Them All
      • Developer Branches
      • Feature Branches
      • Release Branches
    • Platforms
      • GitHub & GitHub Actions
      • GitLab
      • Jenkins
      • Circle CI
    • Automation & Test Driven Development
      • Pipelines
      • Caching Artifacts
      • Triggering Downstream Jobs
      • Nightly/weekend automation tests
    • Security Concerns: Don’t Leak Credentials
      • Run-time Variables
      • Keyword Masking and Script Filtering
  • Configuration Management & Infrastructure as Code
    • Declarative Versus Imperative Models
    • GitOps and Versioning Infrastructure Changes
    • Rolling Upgrades
    • Backup and Restore Operations
    • Panic Button
    • Tooling
      • Ansible
      • Terraform
  • DevOps Build Patterns
    • Bare Metal
    • Virtual Machines
      • History and Hypervisors
      • Single VM with Vagrant
    • Containers
      • Single Container with Docker
      • Multiple Containers with Docker
      • Nested Containers with Docker-in-Docker
      • Advanced Example: Single Container with Docker
    • Cluster Orchestration with Kubernetes (K8S)
      • Kubernetes in Docker (KIND)
    • Best Practises & Security Concerns
      • Privileged Containers & Rootless Containers
      • Using dockerignore for Security and Image Size Reduction
      • Reducing Image Size and Number of Layers with apt
      • Credential Leaks - Don’t Embed Credentials
      • Verify Downloaded Packages via Checksums
      • Additional Reading
  • Architecture Design Patterns
    • General Structure
    • IPC
    • Storage
    • Logging
    • Sidecars
    • Debugging, Core Dumps, etc.
  • Testing Strategies
    • Pre-amble: Containers & Clusters
      • Unit Tests
      • API Tests
        • Internal APIs and Unit Testing
        • Public-Facing API Testing
      • Feature Tests
      • Regression Tests
      • Fuzz Tests
      • Negative Testing
      • Mocks and Simulated Tests
      • Chaos Testing: Break Everything to Improve your App
      • Testing in Production
        • The Historical Joke
        • The Reality of CICD and Cloud Environments
    • Regression Tests & Statistics
      • Quick Tests & Gate Keeping Code Reviews
      • Hypothetical Builds for Downstream Projects
      • Soak Tests: Finding Obscure Bugs
    • End-to-End Tests
    • Testing in Production: a Misnomer?
      • The Necessity of GitOps
      • Rolling Upgrades & Recovery
  • Documentation
    • Overview: Keeping Documentation Current
    • Markup-based Approaches
      • Read the Docs: rST + Sphinx
      • Markdown
    • Diagrams
      • PlantUML/PUML
      • Mermaid/MMD
    • Graphical and WYSIWYG Editors
      • Bridging the Gap: GUIs for Markup Languages
      • Google docs
  • Security
    • Container Scanning
    • Dependencies and Supply Chain Attacks
      • Poetry
      • Snyk
    • Common Vulnerabilities and Exposures (CVEs)
      • Reporting
      • Documenting
      • Automatic Testing
  • Practical Project: Raspberry Pi DevOps Cluster
    • Build Pattern Implementations: Language-specific Boilerplate Examples
      • Python 3.x
      • Go/Golang
  • Conclusion
  • References
  • Glossary
Cloud Native DevOps: Migrating from Monoliths to Microservices
  • »
  • Search


© Copyright 2021, Matthew Giassa.

Built with Sphinx using a theme provided by Read the Docs.