
Many centralized exchanges keep you in the dark, leaving no-one accountable when things go wrong. It’s like handing your car keys to a stranger and asking them to park your car for you. They could crash it, steal it, park it in the wrong place, lose the keys or sell them to someone else. Once they’ve taken the keys, you’ve got no control, no transparency, and no guarantees.
Finally: irrespective of the overall architecture, we find great value in programming to interfaces (protocols) for many of our components (now popular approach thanks to Protocol-Oriented Programming in Swift), in a proper dependency injection like Typhoon and in a proper dependency management like Cocoapods.