[소프트웨어 아키텍처] 파이프라인 아키텍처란 무엇인가?

오늘 시간은 파이프라인 아키텍처에 대해서 살펴 보도록 하겠습니다. 이전에 설명한 레이어드 아키텍처에 대해서 궁금한 사항이 있으면 한번 살펴봐도 좋다.

토폴로지

파이프라인 아키텍처의 경우 다수의 파이프와 필터로 구성이 된다.

파이프라인 아키텍처

파이프

파이프는 한 소스에서 입력을 받아 다른 소스로 출력을 내는 필터간 통신 채널이라고 볼 수 있습니다. 파이프는 성능상 이슈로 점대점, 단방향 방식으로 구성 합니다. 파이프는 자유로는 데이터 포멧 방식이 가능하지만 성능상 적은양의 데이터를 선호 합니다.

필터

필터의 경우 파이프에서 전달 받은 데이터를 가공 한뒤 다음 단계로 전달하는 독립적인 처리 단위라고 볼 수 있다.
필터는 아래와 같이 4가지로 구분 할 수 있다.

구분역할Spring Batch에서 요소
프로듀서데이터를 최초로 생성하거나 수집하는 시작점ItemReader
변환기입력 데이터를 가공/변환하는 단계ItemProcessor
테스터데이터가 규칙을 만족하는지 검사하고 통과/차단을 결정하는 단계ItemProcessor에 validation check
컨슈머파이프라인 처리 결과를 최종적으로 사용하는 단계
– DB 저장, 파일 생성, 메시지 발행, 화면 출력
ItemWriter

활용 영역

데이터 처리 · ETL / 배치 처리 영역 (가장 대표적)

  • 입력 → 정제 → 검증 → 변환 → 저장 흐름이 명확
  • 실패 지점 추적 용이
  • 각 단계 독립적 관리 가능

컴파일러 · 인터프리터 구조

  • 단계가 엄격히 순서화됨
  • 각 단계의 책임이 명확

미디어 처리 (영상 · 음성 · 이미지)

  • 스트림 기반 데이터 처리
  • 단계별 필터 조합 가능

파이프라인 아키텍처 주의사항

필터·프로세서 과도 분해 주의

  • 파이프라인 단계 수 폭증
  • 성능 저하 & 흐름 파악 어려움

파이프라인 단계 간 상태 공유 금지

  • static 변수, shared cache, 전역 Map 사용
  • 병렬 처리 시 데이터 오염 / 재현 불가 버그

병렬 처리 시 병목 위치 주의

  • “Processor를 많이 쓰면 빨라진다”
  • 병목은 보통 Writer (DB / 파일 I/O)

중간 데이터 포맷 비대화 주의

  • 로그용 데이터
  • 불필요한 원본 필드
  • 대용량 리스트 포함
  • 메모리 폭증 / GC 지옥1(가비지 컬렉션)
  1. GC가 너무 자주 또는 너무 오래 실행되어 애플리케이션 성능이 급격히 떨어지는 상태 ↩︎

관련 글 보기