I had the same issue. I Reset Developer Environment in the CloudKit Dashboard, did a fresh install of the builds on my devices and things seemed to work again.
You might be inadvertently using the wrong server change token. If you have identically named zones in the private and shared databases and you are fetching changes in the private database first, you may be accidentally passing the server change token for the private zone into the fetch for the shared database. This would produce a 503 error like you describe.