Open ChangJoo-Park opened 6 years ago
@ChangJoo-Park 님이 웹 서비스를 담당하십니다. 😊
농담이고, Realm과 Firebase Database가 없던 시절부터 존재하던 노트 서비스에서는 이런 문제를 과연 어떻게 해결했을지 궁금하네요. 개인적으로는 서버에서 Realm이나 Firebase Database 등 Realtime Database 서비스를 사용하지 않고 해결해보고싶었어요.
우리나라에서 offlinefirst라는게 그렇게 각광을 받는게 아니라서요 ㅋㅋㅋ 보통 CouchDB(또는 Couchbase)/PouchDB를 이용해서 서버 - 웹앱간 offlinefirst를 해결하거든요 앱이 중심이 되는 서비스에서 필요한가? 라고 질문하시면 모르겠습니다
웹까지 끼는 경우는 이야기가 달라질거에요 ㅋㅋ 정말 리얼타임이 필요할까 부터 고민해야하지 않을까요
http://couchdb.apache.org/ 얘는 서버에서 사용 https://pouchdb.com/ 얘는 클라이언트에서 사용
기록용으로 남겨놓습니다 ( )
영상은 내일 회사가면서 볼게요 ㅋㅋ 슬라이드만 보면 앱에서 폴링한다는거 보니까 되게 업데이트가 잦은 경우에 쓰는건가봐요
앱에서 한 클라이언트가 변경되는 내용을 보고있는 다른 클라이언트도 알아야한다는 정도에서 사용하겠죠?
서버에 사용자 데이터(상태)를 보관하지 말고, 사용자 정보 변경 이벤트를 저장합니다. 클라이언트에서 도 이벤트를 저장해 싱크 될 떄 해당 이벤트를 서버에 보내주면 될 것 같습니다. 서버는 항상 이벤트를 다 돌려서 상태를 만들어 주기 떄문에 엉킬 염려가 없을 것 같습니다.(기존 상태 값을 덮어써 버리는)
너무 과하려나요 ^^;;
결과적으론 이벤트소싱까지 가지 않을까요 진짜 싱크를 한다면.. ;ㅂ;
일이 커지네요 1
오프라인에서 조작한 데이터를 서버와 싱크하는 경우는 아래 세가지 경우가있습니다.
Realm Sync Engine은 삭제와 갱신시에는 마지막 데이터가 항상 최신으로 판단된다고 하니까(참고URL 함께 수정하는 경우에도 마지막 데이터가 최신으로 판단될거 같아요 지금 하시는 프로젝트가 웹은 없으니까(맞나요?) 여러군데에서 한번에 조작할 일은 없을 것 같기도 하네요
오전에 갱신시 어떻게 할까? 에 관한 내용은 Realm을 쓰시면 고려할만한 부분은 아닐 것 같아요 항상 마지막 데이터만 보존되면 되니까요 (갱신 얘기는 웹에서 offlinefirst를 고려하면 CouchDB에서의 갱신을 기준으로 말씀드렸어요) 만약 구현하려는 노트가 둘다 오프라인인 경우에 수정 후 나중에 함께 싱크가 되어야 하는 노트가 아니라면 상관없겠죠?
Realm을 쓰는 경우 MySQL과 Sync하는 방법을 찾아봤는데 대부분의 답변이 Realm Object Server를 쓰라고하네요 :sob: