Another way to lower server costs is to change tools. Eg, Phoenix renders HTML much more efficiently than Rails due to its use of IO lists.
http://nathanmlong.com/2016/11/elixir-and-io-lists-part-2-io...
> User experience tends to be snappier since you aren't always waiting for the server to render your view.
The "Turbolinks" approach of only re-rendering the `<body>` also makes things feel snappy if the server response is fast.
https://changelog.com/ is a site that uses Phoenix + Turbolinks to achieve a snappy user experience with very little JS. The source is at https://github.com/thechangelog/changelog.com
Honestly, unless you're serving billions of pageviews on a very tight budget, I'm not really sure how much of a savings we're talking about here (server side vs. client side rendering).
That's true. OTOH, using a front-end framework has downsides, too. You have another framework involved, a big pile of JS that must be downloaded, more build tools, maybe you need to render server-side anyway for first page load...
> I'm not really sure how much of a savings we're talking about here (server side vs. client side rendering)
Yeah, me either. I think "what's the easiest way to get & maintain the desired user experience?" is probably the best question.
Having different teams for front-end and backend so they can work and update at different paces.
You can update the front end without taking your servers down.
Front-end developers tend to be cheaper than full stack or wholly backend devs. (And many backend/full stack devs HATE html/css/js). Depending on your app, you might do way more work on the front end than backend, so it'd be a waste to hire full stack devs only to make them do all front end work.
Front-end apps can handle spotty internet connections much better, so they work nicely for websites with a lot of mobile traffic.
User experience tends to be snappier since you aren't always waiting for the server to render your view.