처음 만난 리덕스 (Redux) 문서


12.1 Saga

먼저 saga는 무엇인지 그 개념에 대해서 알아보도록 하겠습니다.

처음 들어본 분들에게는 아마도 굉장히 생소한 단어일 것입니다.
saga는 사전적 의미로는 영웅 전설, 일련의 사건 등의 의미를 갖고 있습니다.
그래서 보통 게임의 이름에 Saga라는 단어가 들어가는 경우가 많죠.

실제 컴퓨터 프로그래밍에서 사용되는 saga라는 단어의 의미는 사전적 의미와는 많이 다르지만, 굳이 따지자면 일련의 사건에 조금 더 가깝다고 할 수 있습니다.

컴퓨터 프로그래밍에서 Saga라는 단어의 기원을 찾아서 올라가다 보면, 아주 오래 전인 1987년에 발표된 바로 이 논문이 나옵니다.

SAGAS paper

http://www.cs.cornell.edu/andru/cs711/2002fa/reading/sagas.pdf

이 논문의 제목은 SAGAS이며 분산 컴퓨팅 시스템에서 Saga라는 것에 대해서 정의를 하고 있습니다.

요약해보면 Saga라는 것은 일종의 메커니즘인데, 분산 컴퓨팅 시스템에서 분산된 트랜잭션을 사용하여 하나의 긴 비즈니스 프로세스를 관리하는 방법이라고 정의하고 있습니다.
보통 하나의 비즈니스 프로세스는 작은 트랜잭션들을 포함하는 여러 단계로 구성되는데, 이런 작은 트랜잭션들을 분산 트랜잭션으로 그룹화함으로써 시스템의 일관성을 달성할 수 있다는 것입니다.

어려운 단어들이 나와서 잠깐 혼란스러웠을 수 있는데, 우리는 지금 분산 컴퓨팅을 공부하는 것이 아니라 Redux를 공부하고 있기 때문에 Redux 관점에서의 Saga의 의미를 한 번 생각해보도록 하겠습니다.

Redux 관점에서의 Saga의 의미는 Side Effect를 활용하여 데이터 흐름을 관리하는 방법이라고 할 수 있습니다.
의미상으로는 앞에서 나온 분산 컴퓨팅에서의 의미와 조금 비슷한 부분이 있죠.
그리고 여기에서의 데이터 흐름은 Flux 아키텍처에서 말하는 Unidirectional. 즉, 단방향이 됩니다.

우리가 앞에서 배운것처럼 Redux의 Reducer에서는 Side Effect를 허용하지 않습니다.
그래서 Side Effect를 사용하기 위해서 앞에서는 Thunk를 사용하는 방법에 대해서 배웠고, 이번 강의에서는 Saga를 사용하는 방법에 대해서 배울 예정입니다.
그리고 Saga는 이러한 작은 Side Effect들을 그룹화하여 데이터의 흐름을 관리하는 방법이라고 할 수 있습니다.


마지막 업데이트: 2023년 07월 14일 00시 00분

이 문서의 저작권은 이인제(소플)에 있습니다. 무단 전재와 무단 복제를 금합니다.