The best choice is to design a loosely coupled system based on services.
It is up to (good) programmers to know how to make use of hypermedia systems in order to create a loosely coupled system.