[SSOT] Single Source of Truth란 무엇인가?
SSOT 가 무엇인지 알아보자!
context API와 Redux의 차이에 대해 공부하다 알게된 SSOT! 무엇인지 자세히 알아보자.
SSOT의 정의 ‘하나의 출처’
SSOT(Single Source of Truth)
는 말 그대로 ‘하나의 출처’를 의미한다. 쉽게 비유를 해보자면, 회사에서 팀장이 일정을 만들고, 그 일정을 모든 팀원이 참고하는 상황을 예시로 들 수 있을 것 같다. 여기서 일정이 SSOT이다. 팀원들이 각자 다른 스케줄을 참고하면 혼란이 생길것이고, 모두가 동일한 일정을 참고하도록 하는 것이 SSOT의 핵심이라 볼 수 있다.
- 개발에서 SSOT는 하나의 데이터 소스만을 믿고 그 데이터를 기준으로 모든 것이 동작하도록 하는 원리이다.
- Redux나 Context API를 사용할 때, 모든 상태(state)가 한 곳에서 관리되고 그 상태를 기준으로 UI가 업데이트되도록 설계하는 것을 예시로 들 수 있다.
SSOT의 필요성 ‘혼란을 피하고싶어? 하나로 정리해!’
여러 시스템이나 팀이 동일한 정보를 관리해야 할 때, 각자 따로 관리하면 어떻게 될까?
아래의 예시를 토대로 SSOT
는 이러한 문제를 방지하기 위해 단 하나의 출처(파일,상태 등등)만을 간주하고 모든 사람이 그것만 사용하자는 원칙을 제시한다.
2-1) 예시 1
A팀은 고객 정보가 최신이라 생각하는데, B팀은 이전 정보로 작업을 진행해버리는 상황이 생길 수 있다.
- 위와 같은 상황처럼 데이터가 한 곳에 있지 않고 분산되어 있으면, 결국 서로 다른 정보가 발생하고 이러한 불일치가 큰 문제를 일으킨다.
2-2) 예시 2
이전에 퍼블리셔를 경험한 입장으로 한 프로젝트에서 여러 스타일 시트(CSS)를 가정한다고 생각해보자.
- 위와 같은 상황에서 프로젝트를 진행하며 팀원들이 각각 다른 CSS파일을 참고하면 페이지의 디자인이 일관되지 않게된다.
SSOT의 장점 ‘한눈에 모든 것을 파악할 수 있다’
-
일관된 데이터
- 모든 사람이 동일한 데이터를 사용하면, 혼란이 줄어든다. 일관된 데이터를 통해 모든 작업이 정확하고, 예측 가능하게 이루어진다.
-
효율적인 관리
- SSOT가 있으면 데이터를 한 번만 관리하면 된다. 예를 들어 Redux를 상요하면 상태를 한 곳에서만 관리하니 여러 곳에서 상태를 따로 관리할 필요가 없어져서 안정적이고 시간과 노력도 절약될 수 있다.
-
신뢰할 수 있는 의사결정
-
SSOT
를 통해 얻은 데이터는 항상 최신이므로, 이를 바탕으로 한 의사결정도 신뢰할 수 있다. 최신인 스케줄을 보며 유연하게 일정을 관리하는 것을 예시로 볼 수 있다.
-
-
문제 해결
- 문제가 발생했을 때 어디서부터 찾아봐야하는지 모른다면 정말 머리가 아플 수 있다. 하지만
SSOT
를 사용하면, 이 데이터가 문제인가?라고 쉽게 추측할 수 있다. 이는 문제해결에 있어서 빠르고 쉽게 만들어준다.
- 문제가 발생했을 때 어디서부터 찾아봐야하는지 모른다면 정말 머리가 아플 수 있다. 하지만
마무리
SSOT
를 공부하며 리액트의 상태 관리의 일관성을 유지하는데 있어서 정말 중요한 개념이라 생각이 든다. 일관된 데이터 출처를 유지함으로써 발생할 수 있는 혼란을 방지하고, 효율적인 관리가 가능한 부분이 리액트 뿐만 아니라 관리 개념으로 바라보았을 때 적절히 활용한다면 좋은 결과를 얻을 수 있다고 생각하며 앞으로 사용하게 될 rtk, context API, 다른 상태관리 라이브러리를 사용하게 되었을 때 이해하는 부분에 있어서 도움이 많이 될 것 같다.