github.com/sentienttechnologies/studio-go-runner@v0.0.0-20201118202441-6d21f2ced8ee/docs/slides/index.html (about)

     1  <!doctype html>
     2  <html>
     3  	<head>
     4  		<!-- 
     5  			npm install
     6  			npm start
     7  		-->
     8  		<meta charset="utf-8">
     9  
    10  		<title>Services Platform - AWS → K8s → Istio</title>
    11  
    12  		<meta name="description" content="Introduction to Paas for Platform Services">
    13  		<meta name="author" content="karl Mutch">
    14  
    15  		<meta name="apple-mobile-web-app-capable" content="yes">
    16  		<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
    17  
    18  		<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
    19  
    20  		<link rel="stylesheet" href="css/reveal.css">
    21  		<link rel="stylesheet" href="css/theme/black.css" id="theme">
    22  
    23  		<!-- Theme used for syntax highlighting of code -->
    24  		<link rel="stylesheet" href="lib/css/zenburn.css">
    25  
    26  		<!-- Printing and PDF exports -->
    27  		<script>
    28  			var link = document.createElement( 'link' );
    29  			link.rel = 'stylesheet';
    30  			link.type = 'text/css';
    31  			link.href = window.location.search.match( /print-pdf/gi ) ? 'css/print/pdf.css' : 'css/print/paper.css';
    32  			document.getElementsByTagName( 'head' )[0].appendChild( link );
    33  		</script>
    34  	</head>
    35  
    36  	<body>
    37  		<div class="reveal">
    38  			<div class="slides">
    39                  <section data-transition="convex">
    40                      <h3>Platform Services</h3>
    41                  </section>
    42                  <section data-transition="convex">
    43                      <h4>Objective</h4>
    44                      <ul style="font-size: 66%">
    45                          <li>decide a useful path forward to create, deploy, and operate platform services</li>
    46                      </ul>
    47                      <br>
    48                      <br>
    49                      <h4>Requirements</h4>
    50                      <ul style="font-size: 66%">
    51                          <li>flexibility to employ multiple styles, languages, and classes of services</li>
    52                          <li>address needs of multiple Sentient products</li>
    53                          <li><b>can 1 person implement and operate the resulting solution</b></li>
    54                      </ul>
    55                  </section>
    56                  <section data-transition="convex">
    57                      <h4>Services have a common set of things needing addressing</h4>
    58                      <ul style="font-size: 66%">
    59                          <li>unexpected failure modes</li>
    60                          <li>topology changes</li>
    61                          <li>system degredation</li>
    62                          <li>elastic/ephemeral/transient resources</li>
    63                      </ul>
    64                      <br>
    65                      <br>
    66                      <h4 style="font-size: 66%">so we do things like</h4>
    67  					<table style="border: none; border-bottom: none; border-collapse: collapse; font-size: 66%">
    68  					<tr>
    69  						<td>circuit breaking</td>
    70  						<td>timeouts</td>
    71  						<td>service discovery</td>
    72  					</tr>
    73  					<tr>
    74  						<td>logging</td>
    75  						<td>secrets management</td>
    76  					</tr>
    77  					</table>
    78                  </section>
    79                  <section data-transition="convex">
    80                      <h4>Horizontal requirements in the past meant</h4>
    81                      <ul style="font-size: 66%">
    82                          <li>Business logic &amp; network functions being mashed together</li>
    83                          <li>platform/infrastructure changed for every implementation variation</li>
    84                          <li>service variations need unique discovery, load balancing, rate limiting, circuit breaking ...</li>
    85                          <li>library hell raised one order of magnitude</li>
    86                      </ul>
    87  					<br>
    88  					<br>
    89                      <h4 style="font-size: 50%">what if we could reduce these requirements to a network function ...</h4>
    90  					<br>
    91                      <h4 style="font-size: 50%">with no impact on the service/application</h4>
    92                  </section>
    93                  <section data-transition="convex">
    94                      <h3>Motivation</h3>
    95                      <p style="font-size: 66%">
    96                      lessons learned from previous projects
    97                      </p>
    98                      <ul style="font-size: 66%">
    99                          <li>Thrift generators are weak, json is leaky</li>
   100                          <li>HTTP 1.x is comparatively expensive</li>
   101                          <li>lack of infrastructure transparency</li>
   102                          <li>devops blocker for stats, metrics, logging ...</li>
   103                          <li>cluster management only addresses deployment ...</li>
   104                      </ul>
   105                      <p style="font-size: 66%">
   106                      others too have experienced this.  See more at <br>
   107                      <a href="https://www.slideshare.net/datawire/lyfts-envoy-from-monolith-to-service-mesh-matt-klein-lyft/6">Monolith to ServiceMesh - Matt Klien, Lyft</a>
   108                      </p>
   109                  </section>
   110                  <section data-transition="convex">
   111                      <h3>What we did</h3>
   112                      <p style="font-size: 66%">
   113                      stand up multiple skeleton services using, 
   114                      github.com/SentientTechnologies/platform-services
   115                      and evaluate
   116                      </p>
   117                      <ul style="font-size: 66%">
   118                          <li>lights-out kubernetes, using kops</li>
   119                          <li>reducing devops overhead, increase transparency, deploy a network function using Istio</li>
   120                          <li>HTTP/1.x &amp; json &nbsp;&nbsp;<em>vs</em>&nbsp;&nbsp; HTTP/2 &amp; proto</li>
   121                          <li>multi-language use of gRPC</li>
   122                          <li>AWS Aurora Postgres egress</li>
   123                          <li>roadmap to AWS EKS</li>
   124                      </ul>
   125                  </section>
   126                  <section data-transition="convex">
   127                      <h3>How does it work</h3>
   128                      <ul style="font-size: 66%">
   129                          <li>kubernetes (kops) is the deployment tool, data plane</li>
   130                          <li>istio is the service orchestration tool, currently people, control plane</li>
   131                          <li>Kubernetes is the mechanisim, Istio brings the policy</li>
   132                          <li>istio isolates entire suites of tools Netflix OSS Hystrix, Zull, Ribbon, Eureka Zipkin, Atlas</li>
   133                          <li>istio stops mashing together of applications and network functions</li>
   134                          <li>envoy is the proxy component that does this using sidecars etc</li>
   135                      </ul>
   136                      <p style="font-size: 66%">See more at <br>
   137                      <a href="http://blog.christianposta.com/istio-workshop/slides/#/4">Microservicing like a unicorn</a></p>
   138                  </section>
   139                  <section data-transition="convex">
   140                      <h3>Now show something(s)</h3>
   141                      <ul style="font-size: 66%">
   142                          <li>kops and AWS</li>
   143                          <li>IaC and S3 versioning</li>
   144                          <li>prometheus, zipkin and grafana injection</li>
   145                          <li>definition, deployment, and ECS</li>
   146                          <li>behind the scenes with pods and Istio</li>
   147                          <li>grpc_cli (curl)</li>
   148                      </ul>
   149                  </section>
   150                  <section data-transition="convex">
   151                      <h3>Roadmap - actually a code deletion plan</h3>
   152                      <ul style="font-size: 66%">
   153  						<li>delete auth0 code, migrate auth to side-car</li>
   154  						<li>use ALBs to support HTTP/2 ingress load balancing</li>
   155  						<li>drop self deployed cluster manager to AWS EWKS when widely available</li>
   156  						<li>use auto-scaling explicitly</li>
   157                      </ul>
   158                  </section>
   159                  <section data-transition="convex">
   160                      <ul style="font-size: 66%">
   161  						<li>Go is cheaper than Node. Heroku is cheaper than Lambda. <a href="https://dev.to/rdegges/to-30-billion-and-beyond-3f94">https://dev.to/rdegges/to-30-billion-and-beyond-3f94</a></li>
   162  						<li>Microservicing like a unicorn. <a href="http://blog.christianposta.com/istio-workshop/slides">http://blog.christianposta.com/istio-workshop/slides</a></li>
   163  						<li>Service mesh data plane vs. control plane<a href="https://blog.envoyproxy.io/service-mesh-data-plane-vs-control-plane-2774e720f7fc">https://blog.envoyproxy.io/service-mesh-data-plane-vs-control-plane-2774e720f7fc</a></li>
   164                      	<li>Monolith to ServiceMesh - Matt Klien, Lyft <a href="https://www.slideshare.net/datawire/lyfts-envoy-from-monolith-to-service-mesh-matt-klein-lyft">https://www.slideshare.net/datawire/lyfts-envoy-from-monolith-to-service-mesh-matt-klein-lyft</a></li>
   165  						<li>Istio Workshop - Using GCP <a href="https://github.com/retroryan/istio-workshop">https://github.com/retroryan/istio-workshop</a></li>
   166  						<li>Microservices Patterns With Envoy Sidecar <a href="http://blog.christianposta.com/microservices/00-microservices-patterns-with-envoy-proxy-series/">http://blog.christianposta.com/microservices/00-microservices-patterns-with-envoy-proxy-series/</a></li>
   167  						<li>Serverless ServiceMesh with Kubeless and istio <a href="https://engineering.bitnami.com/articles/serverless-service-mesh-with-kubeless-and-istio.html">https://engineering.bitnami.com/articles/serverless-service-mesh-with-kubeless-and-istio.html</a></li>
   168  						<li>Platform Services PoC <a href="https://github.com/SentientTechnologies/platform-services">https://github.com/SentientTechnologies/platform-services</a></li>
   169  					</ul>
   170                  </section>
   171  			</div>
   172  		</div>
   173  
   174  		<script src="lib/js/head.min.js"></script>
   175  		<script src="js/reveal.js"></script>
   176  
   177  		<script>
   178  			// More info about config & dependencies:
   179  			// - https://github.com/hakimel/reveal.js#configuration
   180  			// - https://github.com/hakimel/reveal.js#dependencies
   181  			Reveal.initialize({
   182  				dependencies: [
   183  					{ src: 'plugin/markdown/marked.js' },
   184  					{ src: 'plugin/markdown/markdown.js' },
   185  					{ src: 'plugin/notes/notes.js', async: true },
   186  					{ src: 'plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } }
   187  				]
   188  			});
   189  		</script>
   190  	</body>
   191  </html>