A task to explore the advantages and disadvantages of separating all front-ends / skins from the data / API layer. For the purpose of this task, the frontend is the code that
- adds the chrome around the content (language links, tool links, footer, user tools), and
- renders special pages.
Advantages
- Introduces a well-defined interface between frontend & backend
- Improves testability
- Reduces the amount of code front-end developers need to understand
- Drives API improvements (performance and features), which in turn can make our front-end development more flexible
- Can power single-page-app front-ends with server-side pre-rendering for first load
- Enables faster testing of UIs and Frontends without using a backend (fixtures)
- Enables and empowers non-web interfaces like native apps on iOS, Android, etc.
Disadvantages
- Performance, if not done well
- Migration cost
See also
- T89889: RFC: Service split along presentation vs data manipulation line
- Related discussion in architecture brainstorm session
- Nuria's Blog post about single-page app vs. first page load performance @Tuenti
- Some older thoughts on API layers vs. org structure on officewiki