webpackJsonp([2],{"2/Hn":function(e,t,n){"use strict";t.a={layout:"experiment",data:function(){return{toolsUsed:["Node 9+","Vue CLI","Vue CLI Init","AWS Account","AWS CLI","Terraform (0.11.l7)"]}}}},LemX:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var s=n("2/Hn"),r=n("hGpi"),o=!1;var i=function(e){o||n("zG9L")},a=n("VU/8")(s.a,r.a,!1,i,null,null);a.options.__file="pages\\laboratory\\static-asset-front-end.vue",t.default=a.exports},hGpi:function(e,t,n){"use strict";var s=function(){var e=this.$createElement;this._self._c;return this._m(0)};s._withStripped=!0;var r={render:s,staticRenderFns:[function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("section",[n("h1",[e._v("Static Asset Front-End's")]),n("aside",[e._v("May 17th, 2018 - Robert Taylor")]),n("p",[e._v("A static-asset front-end, is a design pattern in which the front-end is delivered to the users, without the\nintermediate processing of a server. This means that a very simple service can deliver the content, such as\nAmazon S3, and the distribution of that content is extremely simple.")]),n("section",[n("h2",[e._v("Why Should I Care?")]),n("p",[e._v("This approach leads to a very "),n("b",[e._v("scalable")]),e._v(" and "),n("b",[e._v("robust")]),e._v(" system. The servers that are hosting and \ndelivering the content only has a single job. They are not required to route to a specific server based\non a session, nor does the application server need to be replicated to multiple regions. The likelihood\nof a content delivery node failing is much lower than an application server.")]),n("p",[e._v("The down side is you lose the power to perform server side checks, and pre-rendering of content on the\nserver before delivering it to the client. More work needs to be performed on the client, and may lead\nto issues if you are attempting to support very old clients.")])]),n("section",[n("h2",[e._v("How Does it Work?")]),n("p",[e._v("The main premise, is to collect a list of web assets that are necessary to run your front-end. These list of\nassets are then put onto a content delivery service, with the assumption that no server side work will be done.\nThe beauty of this is that "),n("b",[e._v("minimal setup and maintenance")]),e._v(" is required to make this pattern work.\n")]),n("section",[n("h3",[e._v("Example Setup")]),n("aside",[n("a",{attrs:{href:"https://gitlab.com/foureyeslabs/static-asset-front-end-examples/tree/master/vanilla-setup"}},[e._v("gitlab.com/foureyeslabs/static-asset-front-end-examples")])]),n("p",[e._v("Here is an example setup. It leverages Amazon's S3, Cloudfront and Route 53. This example setup is minimalist\non the various technologies, to create a baseline for comparison to other techniques, that follow this\ndesign pattern.")]),n("section",[n("h4",[e._v("Overview")]),n("p",[e._v("In order to create this magnificent beast, we leveraged a few technologies not required for implementation,\nbut helpful in describing the underlying infrastructure.\n")]),n("h5",[e._v("Terraform")]),n("p",[e._v("A brilliant IaC implementation by Hashicorp, that makes launching resources in Amazon, and many other\nIaaS providers.")])])])])])}]};t.a=r},rBuV:function(e,t,n){(e.exports=n("FZ+f")(!1)).push([e.i,"",""])},zG9L:function(e,t,n){var s=n("rBuV");"string"==typeof s&&(s=[[e.i,s,""]]),s.locals&&(e.exports=s.locals);n("rjj0")("2ed6987c",s,!1,{sourceMap:!1})}});