최근 선언적 패러다임에 대한 글을 읽다가, 예전에 반응형 패러다임 관련 라이브러리를 개발하며 깨달았던 두 패러다임 간의 본질적 차이에 대해 정리해보고자 합니다.
선언적 패러다임은 데이터 간의 관계를 정의합니다. 즉, "무엇이 무엇과 관련이 있는가"를 나타냅니다.
반응형 패러다임은 데이터 간의 흐름을 정의합니다. 즉, "무엇이 무엇으로부터 어떻게 흘러가는가"를 나타냅니다.
반응형 패러다임에서는 데이터가 어떻게 흘러갈지를 명시적으로 정의합니다. 하나의 값이 입력되면 그것이 map 함수를 거치고, filter 함수를 통과하며, 다양한 변환 과정을 거쳐 최종 결과에 도달하게 됩니다. 이는 마치 데이터가 파이프라인을 따라 흘러가는 것과 같습니다.
두 패러다임의 가장 중요한 차이점은 시간에 대한 관점입니다.
선언적 패러다임은 시간을 추상화합니다. 단순히 관계만을 정의할 뿐, 언제 그 관계가 실행될지는 고려하지 않습니다.
반면 반응형 패러다임은 시간에 따라 변하는 상태를 핵심으로 다룹니다. 상태의 변화를 감지하고, 그 변화에 따라 연관된 관계들이 순차적으로 실행되도록 합니다.
이를 쉽게 비유하면, 선언적 패러다임은 지도이고 반응형 패러다임은 네비게이션입니다.
지도는 모든 가능한 경로와 관계를 한눈에 보여주지만, 언제 어떤 경로를 선택할지는 사용자의 몫입니다. 반면 네비게이션은 현재 위치에서 시작해 목적지까지 실시간으로 단계별 안내를 제공합니다.
선언적 패러다임은 복잡한 로직을 관계로 표현합니다. 각 요소 간의 연관성을 정의해 전체적인 구조를 명확하게 드러냅니다.
반응형 패러다임은 복잡한 로직을 파이프로 표현합니다. 데이터의 흐름과 변환 과정을 순차적으로 연결해 복잡한 비동기 처리나 이벤트 기반 로직을 직관적으로 구현할 수 있게 합니다.
두 패러다임은 각각의 강점을 가지고 있으며, 문제의 성격에 따라 적절히 선택하거나 조합해서 사용할 때 진정한 힘을 발휘합니다.