데이터 시스템의 미래

jinwook han·2021년 11월 28일
0

데이터 시스템

목록 보기
7/7
post-thumbnail

데이터 중심 어플리케이션 설계 12장에 대한 저의 느낀 점을 적었습니다.


마지막장인 12장에서 저자는 데이터 시스템의 미래에 대한 자신의 의견을 말한다.

12장에서 저자가 바라보는 데이터 시스템의 미래는 다음과 같이 요약할 수 있다.
여러 곳에서 데이터들은 분산되어 처리되며, 분산된 데이터들은 동기적으로 싱크를 맞추는 게 아니라, 비동기적으로 동기화된다.

즉, 분산된 데이터들은 이벤트 시스템을 통해 동기화가 진행되며, 이벤트를 보낸 측에서는 수신자의 이벤트 처리와 상관없이 다른 작업들을 지속적으로 진행할 수 있다.
저자는 이런 분산형 이벤트 시스템을 마이크로서비스의 여러 서비스의 관계들에서 뿐만 아니라,
서버와 클라이언트 간의 관계에서도 이벤트 시스템을 구성할 수 있다고 본다.
클라이언트에서 local DB를 만들고, 서버에서 클라이언트들에게 이벤트들을 보내서 클라이언트가 local DB에 업데이트를 반영하는 방식이다.

저자는 분산형 시스템에서 데이터 동기화를 보장하는 방식으로 분산 트랜잭션을 강하게 반대한다.
대신 저자는 이벤트 시스템을 분산 트랜잭션보다 더 선호함을 분명히 하고 있다.

이벤트 시스템에서 데이터 동기화를 보장하는 방법으로, 저자는 fault tolerance와 idempotent(같은 이벤트를 중복으로 처리하더라도 결과는 하나의 이벤트를 처리한 것과 같음)한 처리방식을
제안하고 있다.
이벤트 시스템에서는 분산 트랜잭션과 달리 실시간성을 일정 부분 포기해야 한다.
하지만 저자는 실시간성이 부족한 점은 비즈니스적인 처리(ex 사과, 보상)으로 풀 수 있다고 본다.
또한 실시간성을 포기하는 대신, 이벤트 시스템은 성능과 데이터 정합성(integrity)을 모두 성취할 수 있다고 주장한다.

12장을 읽고 느낀 점으로, 명령어로 간편하게 데이터 시스템을 변환하는 아이디어가 인상깊었다.
책에 이런 명령이 나온다.
mysql | elasticsearch
mysql에 있는 데이터를 elasticsearch 데이터로 바꾸는 것을 명령어로 하는 것을 가상으로 상상한 것이다.
실제로 mysql -> elasticsearch, mysql -> redis 등의 데이터 시스템끼리의 변환을 자주 하는데도 불구하고,
단순히 선언형 코드만으로 처리할 수 없다.
mysql, elasticsearch 각각의 스키마를 정의하는데 더해, 각각을 변환해줄 때 필요한 api와 업데이트 로직 모두 코드로 구현해야 한다.
물론 코드로 하는 게 더 간편할 수 있지만,
개발을 처음 접한 사람들에게는 mysql | elasticsearch로 하는 방식이 훨씬 간편할 것으로 생각한다. 또한 명령어로 변환로직을 구성할 수 있으면 작업하는데 걸리는 시간도 더 줄어들 것이다.

0개의 댓글