2025-09-06 13:01
파이프라인
- 하나의 복잡한 작업을 여러 개의 작고 독립적인 단계로 나누어 동시에 처리하는 기술
- 자동차 공장의 컨베이어 벨트처럼, 각 단계가 이전 단계의 결과물을 받아 처리 후 다음 단계로 넘겨 전체 처리량을 극대화
- 하나의 크고 복잡한 작업을 순차적인 여러 개의 작은 단계(Stage) 로 나눈 뒤,
- 각 단계가 독립적으로 쉬지 않고 돌아가게 하여 전체 처리량(Throughput)을 극대화
구조
- 단계 (Stage):
- 파이프라인을 구성하는 각각의 작업 단위.
- 각 단계는 특정하고 명확한 임무를 수행
- 예를 들어 ‘데이터 불러오기’, ‘데이터 정제하기’, ‘데이터 저장하기’ 등이 각각의 단계가 될 수 있습니다.
- 데이터 흐름 (Data Flow):
- 데이터나 작업물은 파이프라인의 한쪽 끝에서 입력되어 각 단계를 순서대로 거쳐 반대쪽 끝으로 나옵니다.
- 이전 단계의 출력(Output)이 다음 단계의 입력(Input)이 되는 선형적인 구조입니다.
- 버퍼 (Buffer):
- 각 단계 사이에 위치하는 임시 저장 공간
- 만약 특정 단계의 처리 속도가 다른 단계보다 눈에 띄게 느리거나 빠를 경우, 이 속도 차이를 조절하고 데이터 손실을 막기 위해 버퍼를 사용합니다.
- 컨베이어 벨트 위에서 다음 작업자를 기다리는 부품과 같습니다.
종류 | 주 사용 분야 | 핵심 단계 예시 | 비유 |
---|---|---|---|
명령어 파이프라인 (Instruction Pipeline) | CPU (하드웨어) | 인출(Fetch) → 해석(Decode) → 실행(Execute) → 쓰기(Write-back) | 요리사가 여러 요리를 동시에 만드는 과정 |
그래픽스 파이프라인 (Graphics Pipeline) | GPU (하드웨어) | 정점 처리 → 래스터화 → 픽셀 처리 → 출력 | 3D 모델을 2D 화면으로 그려내는 과정 |
데이터 파이프라인 (Data Pipeline) | 데이터 엔지니어링 | 추출(Extract) → 변환(Transform) → 적재(Load) (ETL) | 원재료를 가공하여 완제품을 만드는 공장 |
CI/CD 파이프라인 | 소프트웨어 개발 | 빌드(Build) → 테스트(Test) → 배포(Deploy) | 코드를 작성하여 사용자에게 전달하는 과정 |
장점:
- 처리량 증가: 같은 시간 동안 훨씬 더 많은 작업을 처리할 수 있습니다.
- 효율성 및 자원 활용 극대화: 시스템의 각 부분이 쉬는 시간 없이 일하게 됩니다.
- 모듈성 및 단순화: 복잡한 시스템을 여러 개의 단순한 모듈(단계)로 나눌 수 있어 설계와 유지보수가 용이합니다.
단점:
- 지연 시간 증가: 단일 작업 하나가 파이프라인 전체를 통과하는 시간은 파이프라인이 없을 때보다 오히려 조금 더 길어질 수 있습니다. (각 단계를 거치는 오버헤드 때문)
- 설계의 복잡성: 파이프라인 해저드나 병목 현상 등을 고려하여 각 단계를 잘 설계해야 합니다.
- 디버깅의 어려움: 여러 단계가 동시에 실행되므로, 문제가 발생했을 때 어느 단계의 문제인지 파악하기 어려울 수 있습니다.
언급한 노트 (Outgoing Links)