洪民憙 (홍민희) 블로그

이하의 글은 2011년에 쓴 것입니다. 오래된 글인 만큼, 현재의 생각과 전혀 다른 내용도 많이 포함되어 있고, 당시와는 상황이 많이 달라진 점도 있습니다. 또한, 그 당시에 잘못 알려졌던 정보도 포함되어 있을 수 있습니다. 어찌됐든 저는 제 오래된 글이 회자되는 것을 저어합니다. 읽기에 앞서 양해를 부탁드립니다.

엔티티 중복과 동기화

엔티티 중복(entity duplication)을 좋아하지 않는다. 어느 한쪽의 엔티티를 다른 한쪽으로 복제해야 할 때가 있다. 예를 들자면 트윗을 Facebook으로, iPhoto 사진을 Flickr로 복제한다. 문제는 현존하는 거의 대부분의 소프트웨어들이 엔티티 복제를 아주 나이브하게 구현했다는 데에 있다. 구체적으로는, 거의 모든 소프트웨어가 동기화(synchronization)에는 전혀 관심이 없는듯 보인다. 동기화가 되지 않으면 엔티티 복제는 엔티티 중복이 된다.

어떤 것들이 보장되어야 동기화가 된다고 말할 수 있을까?

위와 같은 것들이 보장되면 동기화가 된다고 볼 수 있다. 동기화가 되지 않을 경우 엔티티에 대한 통제가 힘들어진다. 나는 그래서 기술적으로 동기화를 구현하기 매우 힘든 반면 동기화를 구현해서 얻는 이득이 거의 없거나 아예 원본 엔티티가 수정/삭제될 가능성이 없는 경우2가 아니면 동기화를 꼭 구현해야 한다고 생각한다. 아니면 비동기적이라고 하더라도 최소한 eventually-consistent할 필요는 있다고 생각한다.

자, 여기까지는 정리된 생각. 이후로는 요즘 고민하는 내용들.


  1. 복제된 엔티티가 삭제되면 그냥 엔티티 복제가 취소된다.

  2. 아주 예전 미투데이가 그랬었다.