I have been reading everything there is to read on the different architectures for building scalable web applications. The challenges are numerous. For example; the benefits of client-side one-page application is offset by the fact that they lowest entry point smart phone and similar appliances are not as performant as they once were. But then millions of uniques a day might have a similar effect on the server-side of the architecture.
So what to do?
(a) by building a proper idempotent stateless REST layer that can either be exposed via an API layer or buried inside your domain would seem to be a good starting point. This is going to let you scale the backend separately from the frontend with few wasted cycles in between.
So for now this looks like the simplest way to divide the work. Test the functionality, accuracy and scale. Add features without dependency on having to update the entire source tree.
If the #1 rule is DRY then the #2 rule is KRIS (Keep RIsk Small).