[aerogear-dev] Data Sync Thoughts
Matthias Wessendorf
matzew at apache.org
Wed Jan 29 07:49:55 EST 2014
On Wed, Jan 29, 2014 at 1:43 PM, Bruno Oliveira <bruno at abstractj.org> wrote:
> My 2 non technical cents, I really think we should separate "push" from
> "sync" and integrate later, bet on simple. In my opinion we are just
> adding one more level of complexity.
>
> For example: would be perfect to add digital signatures, encrypted data
> for that storage and all the sick things from security. But that would add
> an extra level of complexity which would lead us to several months of
> development.
>
+1
>
> Is just my opinion, but if you guys think that we REALLY need Push, MVP or
> whatever atm, that's fine.
>
>
> On Wed, Jan 29, 2014 at 6:03 AM, Matthias Wessendorf <matzew at apache.org>wrote:
>
>>
>>
>>
>> On Tue, Jan 28, 2014 at 7:22 PM, Summers Pittman <supittma at redhat.com>wrote:
>>
>>> On 01/28/2014 11:11 AM, Corinne Krych wrote:
>>>
>>> I think we still need the synchronisation mode in pull mode.
>>>
>>> How are we going to deal with this use case with simple push:
>>> UserA is offline update some data, then switch off his phone
>>> Some other users update data
>>> UserA open his app, he has missed some push notifications but still want
>>> to sync his app.
>>>
>>> That is the magic of Push systems. He gets the messages when he comes
>>> online.
>>>
>>> Device A and B and Server have data with a checksum of 42.
>>> Device A goes offline.
>>> Device A changes its data and has a checksum of 64.
>>> Device B changes its data and has a checksum of 192.
>>> Device B sends the expected server checksum of 42 and its new data to
>>> the server.
>>> Server accepts B's Data, updates its checksum to 192, and sends a
>>> message to all Devices ( in this case just A)
>>>
>>
>> sending the data does not work via 'mobile push' - we need something like
>> 'real-time' for that sending;
>>
>>
>>>
>>> Device B and Server go on a long date, but things don't work out and
>>> they end up splitting the check 50/50. Device B is annoyed because she
>>> only got a salad but Server got the Surf and Turf.
>>>
>>> Device A comes online and receives a message from the server.
>>> Device A notices the server's checksum data is a change from 42 -> 192
>>> and not 42 -> 64. Thus its copy is out of sync and fires a message to the
>>> User of Device A to resolve the data.
>>> User A resolves the data and Device A sends the merged data to the
>>> server.
>>> Device B gets a message of new data and updates to what the server has.
>>>
>>>
>>>
>>> ++
>>> Corinne
>>>
>>>
>>> On 28 January 2014 17:01, Summers Pittman <supittma at redhat.com> wrote:
>>>
>>>> On 01/28/2014 10:58 AM, Lucas Holmquist wrote:
>>>> > On Jan 28, 2014, at 10:54 AM, Summers Pittman <supittma at redhat.com>
>>>> wrote:
>>>> >
>>>> >> On 01/28/2014 10:48 AM, Lucas Holmquist wrote:
>>>> >>> On Jan 28, 2014, at 10:30 AM, Summers Pittman <supittma at redhat.com>
>>>> wrote:
>>>> >>>
>>>> >>>> On 01/28/2014 09:36 AM, Lucas Holmquist wrote:
>>>> >>>>> yup, this is another Data Sync thread,
>>>> >>>>>
>>>> >>>>>> From a client side perspective, i have concerns that there is
>>>> still not a clear direction yet.
>>>> >>>>> I know there are multiple ideas floating around on what our model
>>>> should be, i'm all for choice, but what about deciding on 1 model to get
>>>> started with. Then later once we have this nailed down, we can have other
>>>> "adapters" with different models perhaps
>>>> >>>> All the data model is is an envelope of sync metadata around an
>>>> object
>>>> >>>> right?
>>>> >>> right
>>>> >>>
>>>> >>>> We also need to think about the API and server/client protocol as
>>>> well.
>>>> >>>>
>>>> >>>> I think that for sync 1.0 we could focus on the following behavior
>>>> (it
>>>> >>>> worked for my demos at least)
>>>> >>>>
>>>> >>>> 1. We have a Sync factory similar to Pipeline, Authenticator,
>>>> >>>> Registrar, and KeyService.
>>>> >>>> 2. The Sync factory consumes/manages Synchronizer instances.
>>>> >>>> 3. AG Synchronizer listens for sync messages using UnifiedPush
>>>> endpoints.
>>>> >>> i thought for a 1.0 we weren't thinking about "realtime"
>>>> >> When I hear realtime I think sub 100 ms updates to all clients.
>>>> (think
>>>> >> gaming)
>>>> >>
>>>> >> What I thought we were going for was something closer to email. The
>>>> >> data gets changed and at some point in the future the client knows.
>>>> More
>>>> >> specifically, the thing the ONE thing that makes sync special is it
>>>> is a
>>>> >> push instead of poll implementation.
>>>> > this makes sense, but i guess it would be push when available.
>>>> thinking web and crappy web socket support( dang you carriers )
>>>> Right. I'm not saying lets do something complicated. I'm saying lets
>>>> use GCM, iOS CM, and simple push to send notifications to tell the
>>>> client something. In simplePush case it is "this data changed, get the
>>>> new stuff and update yourself". In Android and iOS case it may be that
>>>> or it may be "here is new data".
>>>>
>>>> In general, I am fine for getting a message saying something like
>>>> Documents/Schedules/1/${revision}. Then I can check my revisions, fetch
>>>> data if necessary, update my local data, and send any updates. That
>>>> SHOULD (I think) be doable with simplepush as well right?
>>>>
>>>> >
>>>> >>>> 4. AG Synchronizer sends sync messages using Pipes
>>>> >>>> 5. AG Synchronizer holds local data in a store
>>>> >>>>
>>>> >>>> 6. When AGSynchronizer gets a message it is responsible for
>>>> updating
>>>> >>>> the Store and then notifying code listing for updates OR for
>>>> notifying
>>>> >>>> the code that an error has occurred and needs to be addressed.
>>>> >>>>
>>>> >>>> 7. When the developer updates data in the store, the synchronizer
>>>> >>>> should package that data and send it to the server. The
>>>> synchronizer is
>>>> >>>> responsible for error handling, retrying, back-off, etc.
>>>> >>>>
>>>> >>>> 8. We should include multiple synchronizer implementations to
>>>> deal with
>>>> >>>> multiple very simple use cases which involve legacy systems. (For
>>>> >>>> instance polling to load static data on a schedule.)
>>>> >>>>
>>>> >>>> Thoughts? Tomatoes?
>>>> >>>>>
>>>> >>>>> _______________________________________________
>>>> >>>>> aerogear-dev mailing list
>>>> >>>>> aerogear-dev at lists.jboss.org
>>>> >>>>> https://lists.jboss.org/mailman/listinfo/aerogear-dev
>>>> >>>> _______________________________________________
>>>> >>>> aerogear-dev mailing list
>>>> >>>> aerogear-dev at lists.jboss.org
>>>> >>>> https://lists.jboss.org/mailman/listinfo/aerogear-dev
>>>> >>> _______________________________________________
>>>> >>> aerogear-dev mailing list
>>>> >>> aerogear-dev at lists.jboss.org
>>>> >>> https://lists.jboss.org/mailman/listinfo/aerogear-dev
>>>> >> _______________________________________________
>>>> >> aerogear-dev mailing list
>>>> >> aerogear-dev at lists.jboss.org
>>>> >> https://lists.jboss.org/mailman/listinfo/aerogear-dev
>>>> >
>>>> > _______________________________________________
>>>> > aerogear-dev mailing list
>>>> > aerogear-dev at lists.jboss.org
>>>> > https://lists.jboss.org/mailman/listinfo/aerogear-dev
>>>>
>>>> _______________________________________________
>>>> aerogear-dev mailing list
>>>> aerogear-dev at lists.jboss.org
>>>> https://lists.jboss.org/mailman/listinfo/aerogear-dev
>>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> aerogear-dev mailing listaerogear-dev at lists.jboss.orghttps://lists.jboss.org/mailman/listinfo/aerogear-dev
>>>
>>>
>>>
>>> _______________________________________________
>>> aerogear-dev mailing list
>>> aerogear-dev at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/aerogear-dev
>>>
>>
>>
>>
>> --
>> Matthias Wessendorf
>>
>> blog: http://matthiaswessendorf.wordpress.com/
>> sessions: http://www.slideshare.net/mwessendorf
>> twitter: http://twitter.com/mwessendorf
>>
>> _______________________________________________
>> aerogear-dev mailing list
>> aerogear-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/aerogear-dev
>>
>
>
>
> --
>
> --
> "The measure of a man is what he does with power" - Plato
> -
> @abstractj
> -
> Volenti Nihil Difficile
>
> _______________________________________________
> aerogear-dev mailing list
> aerogear-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/aerogear-dev
>
--
Matthias Wessendorf
blog: http://matthiaswessendorf.wordpress.com/
sessions: http://www.slideshare.net/mwessendorf
twitter: http://twitter.com/mwessendorf
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/aerogear-dev/attachments/20140129/61b35ffa/attachment-0001.html
More information about the aerogear-dev
mailing list