Strict Version Pinning
Strict Version Pinning extends Folder-Based Versioning by creating explicit component versions using number-based versioning schemes like SemVer (vpc/1.2.3, vpc/2.0.0) within the Continuous Version Deployment strategy. This approach works particularly well when vendoring from external sources or managing shared component libraries within your organization.
This folder organization approach provides the most granular version control by using fixed-point versioning—each version folder represents a specific, immutable version. Components are organized into version-specific folders, making it explicit which exact version each environment uses. This is especially useful when vendoring components from external sources where you want to track specific upstream versions.
Strict Version Pinning works with number-based versioning schemes that create immutable version identifiers:
- SemVer (
1.2.3) - Communicates breaking vs. non-breaking changes - CalVer (
2024.10.1) - Date-based versions for temporal tracking - Sequential (
v1,v2) - Simple incrementing numbers - Major/Minor (
1.0,2.0) - Simplified SemVer
These are fixed points—once created, the version never changes. This contrasts with Release Tracks/Channels which use moving targets (labels like alpha, prod) that point to evolving versions.
You will learn
- How strict pinning provides reproducibility but encourages environment divergence
- Why lockstep promotion is critical when using strict version pinning
- The operational overhead of managing individual pins across many environments
- When strict pinning is appropriate despite its limitations
Atmos now supports source-based version pinning which provides the same per-environment version control directly in stack configuration—without managing vendor manifests or pre-vendoring components. Use source-based versioning when you don't need vendored code committed to your repository.
Use Cases
Use the Strict Version Pinning pattern when:
- Reproducibility and auditability are paramount requirements
- Your environment count is small and carefully curated
- You can enforce lockstep promotion across the SDLC without skipping versions
- Your organization truly needs to optimize for rollback over roll-forward
- You have regulatory requirements that mandate exact version tracking
- You need a clear audit trail of what ran where and when
Problem
While strict version pinning seems like the safest approach, it creates several challenges at scale:
1. Optimizes for Divergence
Each environment maintains its own version pins, causing environments to drift apart unless you continuously update them. This divergence makes it harder to reason about the overall system state.