같은 코드베이스에서 서로 다른 환경(staging, prod)에 배포해야 한다. 수십 개의 마이크로서비스가 단일 저장소에 있고, 각 서비스의 변경이 해당 서비스 파이프라인만 실행해야 한다. 여러 PR이 동시에 진행되는데 각 PR의 빌드가 서로를 취소해서는 안 된다. 이 세 가지 요구사항을 V1 CodePipeline으로 해결하려면 복잡한 우회책이 필요하다. V2는 이 세 가지를 각각 입력 변수 시스템, 트리거 필터, Execution Mode로 직접 지원한다.
오늘은 V2의 동적 파이프라인 기능이 왜 그렇게 설계됐는지, 그리고 어떤 상황에서 어떤 기능을 쓰는지를 구체적인 시나리오와 함께 본다.
💡 관련 이론: V1에서 V2로의 전환은 단순한 기능 추가가 아니라 설계 철학의 전환이다. V1 파이프라인은 "고정된 워크플로"—같은 코드, 같은 환경, 같은 방식으로 실행된다. V2는 "매개변수화된 워크플로"—같은 파이프라인 정의를 다른 입력값으로 실행할 수 있다. 이 차이는 소프트웨어 설계의 Template Method Pattern과 유사하다. V1이 구체 클래스(Concrete Class)라면, V2는 추상 클래스(Abstract Class)에 해당한다—변수를 주입받아 다양한 동작을 표현한다