Post

02. DevOps about Plan

02. DevOps about Plan

DevOps about Plan


Prerequisites


1. What is Plan in DevOps?

The Plan phase is where everything starts.

Before writing a single line of code, you define:

  • What problem you are solving
  • What the system should do
  • How performance will be measured
  • What constraints exist

Plan is the phase where requirements, constraints, and system goals are clearly defined before implementation begins.

2. Why Planning Matters (Especially for C++ Systems)

In high-performance systems (like C++ real-time processing), bad planning = expensive rework

❌ Without Planning

  • Wrong architecture → rewrite needed
  • Latency too high → redesign pipeline
  • Memory issues → major refactor
  • Not scalable → system collapse under load
✔ With Proper Planning
  • Clear performance targets
  • Predictable system behavior
  • Easier optimization later
  • Faster development cycle overall
Example

Let’s assume we are building:

A C++ image preprocessing pipeline for real-time industrial inspection

4. Step-by-Step Planning Breakdown

4-1. Define the Problem

What are we solving?

  • Input: raw camera frames
  • Output: processed images for downstream vision algorithms

4-2. Define Requirements

Functional Requirements

  • Resize images
  • Apply filtering (denoise, normalize)
  • ROI extraction

Non-Functional Requirements (Critical)

  • Latency: < 10 ms per frame
  • Throughput: > 100 FPS
  • Stability: 24/7 operation
  • Accuracy: preprocessing must not degrade detection quality

In C++ systems, non-functional requirements are often more important

4-3. Define Constraints

  • Hardware:

    • CPU only? GPU allowed?
  • Memory limits:

    • Can we buffer frames?
  • Environment:

    • Embedded system vs server

Example:

  • CPU: 8 cores
  • No GPU
  • Limited memory (512MB)

4-4. Define System Architecture (High-Level)

Design the pipeline before coding:

1
2
3
4
5
6
7
8
9
Camera Input
   ↓
Frame Queue
   ↓
Preprocessing Stage (parallel)
   ↓
Output Queue
   ↓
Consumer (Vision Algorithm)

4-5. Identify Performance Bottlenecks Early

Ask:

  • Where will time be spent?
  • Where can parallelism be applied?

Example:

StageRisk
Image copymemory bandwidth bottleneck
FilteringCPU-heavy
Queue synclock contention

4-6. Choose Optimization Strategy

Based on planning:

  • SIMD (AVX/SSE) for pixel operations
  • Multithreading (per-frame parallelism)
  • Cache-friendly memory layout (SoA vs AoS)

4-7. Define Metrics & Observability

Before coding, decide how to measure success:

  • Latency per frame
  • Throughput (FPS)
  • CPU usage
  • Memory usage

4-8. Define Build & Dependency Strategy

Even in planning, DevOps thinking starts:

  • Build system → CMake
  • Dependencies → vcpkg
  • Target platform → Linux / Docker

5. Output of the Plan Phase

At the end of planning, you should have:

  • Clear system requirements
  • Defined architecture
  • Performance targets
  • Identified risks
  • Tooling decisions

6. Common Mistakes

❌ Jumping into coding too early
❌ Ignoring non-functional requirements
❌ No performance targets
❌ No architecture definition
This post is licensed under CC BY 4.0 by the author.