Architecture
PipeLine Architecture
realizers
2023. 9. 7. 10:22
728x90
반응형
PipeLine Architecture란
PipeLine Architecture는 시스템의 작업을 몇 개의 순차적인 프로세싱 단계들로 구분할 수 있고, 이 단계들은 파이프를 통해 연결됩니다. 그렇기 때문에 어떤 단계의 출력 데이터는 다음 단계의 입력 데이터가됩니다.
초기에는 데이터를 제공해줄 수 있는 Data Source가 있어야 합니다. 그런 다음 단계적으로 데이터는 파이프를 통해 필터로 전달됩니다. 그리고 각 필터는 전달받은 데이터를 변환하고 변환된 데이터를 파이프를 통해 다음 필터로 전달하고 최종적으로 Consumer에게 도착하게 됩니다.
💡 Pipe
- 파이프는 필터에서 다음 필터로 데이터를 전달하는 연결자입니다.
- 파이프는 성능상의 이유로 보통 단방향, 점대점 방식으로 구성됩니다.
- 파이프를 오가는 페이로드의 데이터는 어떤 포맷도 가능하지만, 아키텍트는 고성능에 유리한 적은 양의 데이터를 선호합니다.
- 일반적으로 다음 필터가 파이프가 가지고있는 데이터를 처리할 시간이 있을 때까지 모든 데이터를 저장하기 위해 파이프는 데이터 버퍼에 의해 구현됩니다.
💡 Filter
- 필터는 다른 서비스나 모듈 등을 호출하지 않아도 동작하고, 다른 필터와 독립적이며, 일반적으로 무상태성입니다.
- 필터는 한가지 작업만 수행하므로 복합 태스크는 여러 필터를 이어 붙여 처리하면 됩니다.
- 필터는 출력을 하기 위해 들어온 모든 데이터를 한꺼번에 처리하는것이 아닌 입력이 일정량 들어오는 대로 출력을 바로바로 하는 방식으로 데이터를 처리합니다. 이렇게 해야 낮은 레이턴시를 만들 수 있고, 병렬 프로세싱이 가능하게 됩니다.
💡 Filter의 종류
프로듀서(producer)
- 프로세스의 시작점이고, 아웃바인드만 있어서 source라고도 합니다.
변환기(transformer)
- 입력을 받아 필요시 일부 또는 전체 데이터를 변환한 후, 그 결과를 아웃바운드 파이프로 전달합니다.
- 함수형 프로그래밍의 열혈팬들은 이 기능을 map이라고 부릅니다.
테스터(tester)
- 입력을 받아 하나 이상의 기준에 대해 테스트하고, 그 결과에 따라 필요시 결과를 생산합니다.
- 함수형 프로그래머는 이 기능을 reduce라고 부릅니다.
컨슈머(consumer)
- 파이프라인 흐름의 종착역입니다. 컨슈머는 파이프라인 프로세스의 최종 결과를 데이터베이스에 저장하거나 화면에 표시하는 역할을 수행합니다.
PipeLine Architecture의 장단점
장점
- 프로세싱의 순서를 유연하게 변경할 수 있고, 재조합할 수 있습니다.
- 특정 프로세스를 제외하거나 새로 추가할 수 있습니다.
- 느슨한 결합으로 인해 독립적인 개발을 진행할 수 있습니다.
- 하나의 필터를 수정하더라도 다른 필터에 영향을 미치지 않습니다.
- 필터는 재사용할 수 있습니다.
단점
- 전역 상태정보를 공유하게 된다면 비용이 많이들고 유연성을 저하시키는 원인이 됩니다.
🤔 전역 상태정보를 공유하고자할 때 어떤 방법이 있을까?
- 아래와 같은 방법을 사용할 수 있다고 합니다.
- 모든 단계들이 Symbol table을 사용하여 전역 정보를 공유합니다.
- 하지만 이 방식은 필터는 이전 필터가 보내준 데이터에 대해서만 얻는다는 규칙을 위반하게 됩니다. 왜 이 규칙을 위반하면서까지 해당 방법을 사용하는 걸까요? 그 이유는 성능 때문이라 합니다. 파이프가 전역 상태정보를 추가 데이터로 넘겨준다면 데이터 구조가 복잡해질 수도 있고, 파이프의 데이터 크기가 커집니다. 이렇게 전역 상태 정보를 따로 관리함으로써 파이프가 최소한의 데이터만 넘길 수 있도록 설계한 것입니다.
참고
- https://www.dossier-andreas.net/software_architecture/pipe_and_filter.html
- https://johngrib.github.io/wiki/pattern/pipeline/
- https://www.linkedin.com/pulse/software-architectural-patterns-pipes-filters-lakmal-kankanamge
- https://www.slmanju.com/2020/05/pipes-and-filters-architecture.html
728x90
반응형