It could be implemented using the two alternatives:
I assume that you can access the OOTB lists web service to manipulate both the lists. So the next step is to attach the Event receivers to both the Lists i.e. List 1 and List 2.
For example you have these Event receivers on List 1:
- ItemAdded (you can use this method and access the list 2 and add the same item there)
- ItemUpdate (you can use this method and access the list 2 and update the same item there)
- ItemDeleted (you can use this method and access the list 2 and delete the same item there)
The access between the two lists can be accomplished using the OOTB List Web service or Object Model.
The other option could be to create a custom timer job which sync the both list items. You can use hidden field to check which items have been sync during the timer job execution.
Hope it helps.