Какую архитектуру используют для создания SPA в 2017 году?
Знаю, что от MVC давно отказались - это совсем не так.
Архитектуру SPA приложения задает фреймворк, который вы используете, а в случае с маленькими библиотеками (React) архитектура строится на свой вкус и цвет, так же есть некие стандарты, например create-react-app.
Отдельный важный момент, это управление состоянием вашего приложения, в сложных случаях это управление требует особой архитектуры, как бы паттерн над паттерном. И тут основные варианты - это Flux или MV* паттерны.
Например, angular дает вам контроллеры, изменение свойств которых автоматически обновляет view, и сервисы-синглтоны, которые удобно использовать как модели. Вы можете придумать свои способы, что бы автоматически обновлять контроллеры в зависимости от изменения данных в сервисе, либо использовать паттерн, например MVVM: 
Если представить html шаблон как view, контроллер как view-model, а сервис как model - вам нужно реализовать подписку view-model на изменения model, а у model - оповещение подписчиков об изменениях. И уже сам angular обновит вам view при изменениях view-model.
React часто используют в связке с Redux - это библиотека, реализующая Flux паттерн.
Перерисовка react компонентов в зависимости от их свойств реализована в библиотеке, вам остается создать redux хранилище для всех данных, и передавать в компоненты необходимые им данные из хранилища, а для изменения хранилища - соответствующие действия, которые вы будете вызывать например по вводу данных в инпут.
Основная мысль - SPA фреймворк дает вам привязку данных к шаблону (aka Вид + Контроллер или Вид + Вид-Модель), и определенные вкусности. Вы же должны решить, как хранить и обновлять важные данные (aka Модель + бизнес-логика), и все зависимые от них элементы.
Как правило используют готовые библиотеки/фреймворки типа React/Angular/Vue.