Choose Boring Technology (2015)
SPAs (single page applications) aren&#x27;t boring yet. we really don&#x27;t know how to do this well, as a community, and the cambrian explosion of JavaScript tech is almost all around trying to make this extremely un-boring application style more boring.<p>The SPA is a gateway drug to spending lots and lots of innovation tokens, more, really, than almost any dev team can afford. For example, I would consider each of Webpack, PostCSS, TypeScript, React, Redux, RxJS, to be rather exciting, and that&#x27;s only a few of the exciting parts of a mature SPA project. And of course this doesn&#x27;t touch REST, GraphQL, CI&#x2F;CD, testing, metrics, telemetry and all the other excitement.<p>So, yeah, I would say that if you take the article seriously for a webapp, you&#x27;d limit yourself to a really boring Java (8) server-side architecture using Jetty, JSP, Spring, a service layer, over Postgres. Maybe an nginx proxy if you want to get a little spicy and have good SSL and static serving performance, and an option for simple load balancing later. Oh and the only provisioning you get to do is individual VPSs or even better, bare metal on prem servers! Git and Jenkins is probably boring enough to use, though.<p>But yeah, no Docker, K8s, OpenShift, no AWS other than EC2 and maybe S3. Probably no CloudFlare. Google Analytics, sure, but only if you don&#x27;t care about your users privacy. Sentry is too exciting.<p>And then on the HTML side I&#x27;d argue that your templates should produce plain old HTML5, CSS3 and ES6. No transpilation, no source maps. No official support for IE 11. And even for those languages you can cut out the most exciting features. Do you <i>really</i> need the &quot;class&quot; or &quot;new&quot; keywords in ES6? For JS modules, use the boring, built in browser module system (you knew it had one, right?![1])<p>1 - <a href="https:&#x2F;&#x2F;caniuse.com&#x2F;#feat=es6-module-dynamic-import" rel="nofollow">https:&#x2F;&#x2F;caniuse.com&#x2F;#feat=es6-module-dynamic-import</a>