travlog / travlog-server

7 stars 3 forks source link

Realm(Mobile) - MySQL sync #32

Open ChangJoo-Park opened 6 years ago

ChangJoo-Park commented 6 years ago

오프라인에서 조작한 데이터를 서버와 싱크하는 경우는 아래 세가지 경우가있습니다.

  1. 데이터 추가 (모바일 <-> 서버)
  2. 데이터 삭제 (모바일 <-> 서버)
  3. 데이터 갱신 (모바일 <-> 서버)

Realm Sync Engine은 삭제와 갱신시에는 마지막 데이터가 항상 최신으로 판단된다고 하니까(참고URL 함께 수정하는 경우에도 마지막 데이터가 최신으로 판단될거 같아요 지금 하시는 프로젝트가 웹은 없으니까(맞나요?) 여러군데에서 한번에 조작할 일은 없을 것 같기도 하네요

오전에 갱신시 어떻게 할까? 에 관한 내용은 Realm을 쓰시면 고려할만한 부분은 아닐 것 같아요 항상 마지막 데이터만 보존되면 되니까요 (갱신 얘기는 웹에서 offlinefirst를 고려하면 CouchDB에서의 갱신을 기준으로 말씀드렸어요) 만약 구현하려는 노트가 둘다 오프라인인 경우에 수정 후 나중에 함께 싱크가 되어야 하는 노트가 아니라면 상관없겠죠?

Realm을 쓰는 경우 MySQL과 Sync하는 방법을 찾아봤는데 대부분의 답변이 Realm Object Server를 쓰라고하네요 :sob:

fobidlim commented 6 years ago

@ChangJoo-Park 님이 웹 서비스를 담당하십니다. 😊

농담이고, Realm과 Firebase Database가 없던 시절부터 존재하던 노트 서비스에서는 이런 문제를 과연 어떻게 해결했을지 궁금하네요. 개인적으로는 서버에서 Realm이나 Firebase Database 등 Realtime Database 서비스를 사용하지 않고 해결해보고싶었어요.

fobidlim commented 6 years ago

슬라이드 설명입니다. Implementing Server Side Data Synchronization for Mobile Apps

위 슬라이드에 대한 영상 자료입니다. PHPNW14: Michele Orselli - Implementing Server Side Data Synchronization for Mobile Apps

ChangJoo-Park commented 6 years ago

우리나라에서 offlinefirst라는게 그렇게 각광을 받는게 아니라서요 ㅋㅋㅋ 보통 CouchDB(또는 Couchbase)/PouchDB를 이용해서 서버 - 웹앱간 offlinefirst를 해결하거든요 앱이 중심이 되는 서비스에서 필요한가? 라고 질문하시면 모르겠습니다

웹까지 끼는 경우는 이야기가 달라질거에요 ㅋㅋ 정말 리얼타임이 필요할까 부터 고민해야하지 않을까요

ChangJoo-Park commented 6 years ago

http://couchdb.apache.org/ 얘는 서버에서 사용 https://pouchdb.com/ 얘는 클라이언트에서 사용

기록용으로 남겨놓습니다 ( )

ChangJoo-Park commented 6 years ago

영상은 내일 회사가면서 볼게요 ㅋㅋ 슬라이드만 보면 앱에서 폴링한다는거 보니까 되게 업데이트가 잦은 경우에 쓰는건가봐요

앱에서 한 클라이언트가 변경되는 내용을 보고있는 다른 클라이언트도 알아야한다는 정도에서 사용하겠죠?

rkdgusrnrlrl commented 6 years ago

서버에 사용자 데이터(상태)를 보관하지 말고, 사용자 정보 변경 이벤트를 저장합니다. 클라이언트에서 도 이벤트를 저장해 싱크 될 떄 해당 이벤트를 서버에 보내주면 될 것 같습니다. 서버는 항상 이벤트를 다 돌려서 상태를 만들어 주기 떄문에 엉킬 염려가 없을 것 같습니다.(기존 상태 값을 덮어써 버리는)

너무 과하려나요 ^^;;

이벤트 소싱

ChangJoo-Park commented 6 years ago

결과적으론 이벤트소싱까지 가지 않을까요 진짜 싱크를 한다면.. ;ㅂ;

fobidlim commented 6 years ago

일이 커지네요 1

1

1

1

devjin0617 commented 6 years ago

OTL