{"id":288463,"date":"2021-07-01T15:00:34","date_gmt":"2021-07-01T12:00:34","guid":{"rendered":"https:\/\/en.buradabiliyorum.com\/what-is-a-service-mesh-why-do-they-matter-cloudsavvy-it\/"},"modified":"2021-07-01T15:00:34","modified_gmt":"2021-07-01T12:00:34","slug":"what-is-a-service-mesh-why-do-they-matter-cloudsavvy-it","status":"publish","type":"post","link":"https:\/\/buradabiliyorum.com\/en\/what-is-a-service-mesh-why-do-they-matter-cloudsavvy-it\/","title":{"rendered":"#What Is a Service Mesh? Why Do They Matter? \u2013 CloudSavvy IT"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-6a3dfafb33c2d\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #dd3333;color:#dd3333\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #dd3333;color:#dd3333\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-6a3dfafb33c2d\" checked aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/buradabiliyorum.com\/en\/what-is-a-service-mesh-why-do-they-matter-cloudsavvy-it\/#Whats_Inside_The_Mesh\" >What\u2019s Inside The Mesh?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/buradabiliyorum.com\/en\/what-is-a-service-mesh-why-do-they-matter-cloudsavvy-it\/#How_Are_Service_Meshes_Implemented\" >How Are Service Meshes Implemented?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/buradabiliyorum.com\/en\/what-is-a-service-mesh-why-do-they-matter-cloudsavvy-it\/#Other_Service_Mesh_Functions\" >Other Service Mesh Functions<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/buradabiliyorum.com\/en\/what-is-a-service-mesh-why-do-they-matter-cloudsavvy-it\/#What_About_the_Drawbacks\" >What About the Drawbacks?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/buradabiliyorum.com\/en\/what-is-a-service-mesh-why-do-they-matter-cloudsavvy-it\/#When_Should_You_Use_a_Service_Mesh\" >When Should You Use a Service Mesh?<\/a><\/li><\/ul><\/nav><\/div>\n<p><strong>&#8220;#What Is a Service Mesh? Why Do They Matter? \u2013 CloudSavvy IT&#8221;<\/strong><\/p>\n<div id=\"article-content-area\">\n<figure style=\"width: 6667px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"type:primaryImage wp-image-12375 size-full\" data-pagespeed-lazy-src=\"https:\/\/www.cloudsavvyit.com\/p\/uploads\/2021\/06\/899ce4b1.jpg?width=1198&amp;trim=1,1&amp;bg-color=000&amp;pad=1,1\" alt=\"cloud illustration\" width=\"6667\" height=\"3750\" src=\"https:\/\/www.shutterstock.com\/image-vector\/abstract-cloud-data-digital-earth-point-1160196997\" data-credittext=\"Quanrong Huang\/Shutterstock.com\" onload=\"pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);\" onerror=\"this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);\"\/><figcaption class=\"wp-caption-text\"><span class=\"type:primaryImage imagecredit\"><a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/www.shutterstock.com\/image-vector\/abstract-cloud-data-digital-earth-point-1160196997\">Quanrong Huang\/Shutterstock.com<\/a><\/span><\/figcaption><\/figure>\n<p>A service mesh is an infrastructure layer that facilitates communication between <a href=\"https:\/\/buradabiliyorum.com\/en\/category\/download-scripts-themes-apps\/\" data-internallinksmanager029f6b8e52c=\"9\" title=\"Download Scripts &amp; Themes &amp; Apps\" target=\"_blank\" rel=\"noopener\">app<\/a>lication components. Meshes provide functionality including service discovery, load balancing, and observability.<\/p>\n<p>Service meshes are <a href=\"https:\/\/buradabiliyorum.com\/en\/category\/general\/\" data-internallinksmanager029f6b8e52c=\"3\" title=\"General\" target=\"_blank\" rel=\"noopener\">general<\/a>ly found in distributed systems composed of microservices. The mesh provides a way for different services to exchange data. It only handles internal traffic, handing off to an API gateway or edge node to serve to users. Popular meshes include <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/linkerd.io\">Linkerd<\/a> and <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/istio.io\">Istio<\/a>.<\/p>\n<h2 id=\"whats-inside-the-mesh\"><span class=\"ez-toc-section\" id=\"Whats_Inside_The_Mesh\"><\/span>What\u2019s Inside The Mesh?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>The basic concept of a service mesh is quite straightforward. The layer encapsulates network proxies that route traffic into individual services. A control layer manages network calls between the services and orchestrates the use of the proxies.<\/p>\n<p>The mesh\u2019s fundamental purpose is to make it easier and more reliable for services to communicate. Let\u2019s take a simple pair of services: an API and a separate authentication system. The API will need to interface with the authentication service when it receives requests.<\/p>\n<p>With a service mesh, you gain reliable communication between services using known identifiers. Your API could send network calls to the <code>auth-service<\/code> hostname and be confident it\u2019ll still resolve correctly, even if the auth service gets moved to a different datacentre location. The service mesh acts to transparently route requests to the appropriate service.<\/p>\n<p>Using a service mesh makes it easier to move services around. Hard-coded network communication logic can quickly become constraining. A mesh gives you more flexibility to distribute your workloads in the future.<\/p>\n<h2 id=\"how-are-service-meshes-implemented\"><span class=\"ez-toc-section\" id=\"How_Are_Service_Meshes_Implemented\"><\/span>How Are Service Meshes Implemented?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Most modern service meshes are formed from two components: a control plane and a data plane. The core functionality belongs to the data plane, which concerns itself with the data flowing through the system.<\/p>\n<p>Each request to the mesh will be processed by the data plane. It\u2019ll discover the proper service to use, perform any logging actions, and enable conditional behaviors to filter and redirect traffic.<\/p>\n<p>Services are usually part of your application so they can include routing logic. The data plane inspects configuration rules to determine the final endpoint based on HTTP headers, request parameters, and other values from the request.<\/p>\n<p>While the data plane buzzes with activity, the control plane is relatively simpler. It oversees the proxies in the data plane and provides an API so you can interact with them.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-12091\" data-pagespeed-lazy-src=\"https:\/\/www.cloudsavvyit.com\/p\/uploads\/2021\/06\/37460b37.png?trim=1,1&amp;bg-color=000&amp;pad=1,1\" alt=\"Istio diagram showing a service mesh architecture\" width=\"820\" height=\"569\" src=\"\/pagespeed_static\/1.JiBnMqyl6S.gif\" onload=\"pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);\" onerror=\"this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);\"\/><\/p>\n<p>This diagram <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/istio.io\/latest\/docs\/ops\/deployment\/architecture\">from the Istio project<\/a> illustrates how the components fit together. Each service gets its own proxy. Ingress traffic flows through the proxies. They may communicate with the control plane to discover other services. Proxies are commonly called \u201csidecars\u201d as they run alongside the service they represent.<\/p>\n<h2 id=\"other-service-mesh-functions\"><span class=\"ez-toc-section\" id=\"Other_Service_Mesh_Functions\"><\/span>Other Service Mesh Functions<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Service meshes usually provide additional functionality beyond basic service discovery. You\u2019ll typically find load balancing, request-level authentication, and support for data encryption. Encrypted traffic can pass through the mesh but get handed to your services in decrypted form.<\/p>\n<p>Your mesh will usually offer safeguards against transient network outages. Automatic retries, failovers, and circuit breakers make communication between services more resilient. The end user\u2019s less likely to see a serious error state. These important capabilities would be difficult and costly to implement by hand.<\/p>\n<p>Similarly, service meshes incorporate performance optimizations that help to minimize overheads. The mesh might retain connections to services for later reuse, reducing the latency on the next request.<\/p>\n<p>Mesh layers also provide security protections. You can implement mesh-level access control policies that reject traffic before it reaches your services. If you want a global API rate limiter, making it part of the mesh configuration will apply it to all your services \u2013 present and future.<\/p>\n<h2 id=\"what-about-the-drawbacks\"><span class=\"ez-toc-section\" id=\"What_About_the_Drawbacks\"><\/span>What About the Drawbacks?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>The biggest challenge around service meshes is the extra complexity which they bring. While they aim to simplify microservice networking, they also introduce a learning curve of their own.<\/p>\n<p>Developers will need to get acquainted with <em>another<\/em> layer atop their existing services. Mesh terminologies, such as proxies and sidecars, add to the already lengthy list of Kubernetes resources maintained by operations teams.<\/p>\n<p>Although meshes do add their own performance enhancements, some deployments could notice an overall reduction in network throughput. The mesh adds a new layer that requests need to pass through, impacting overall efficiency. This is normally most noticeable if you stock your mesh with many routing rules.<\/p>\n<h2 id=\"when-should-you-use-a-service-mesh\"><span class=\"ez-toc-section\" id=\"When_Should_You_Use_a_Service_Mesh\"><\/span>When Should You Use a Service Mesh?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Service meshes work best when you\u2019re fully committed to containers and microservices. They\u2019re designed to solve the challenges of running large-scale distributed systems in production. Smaller deployments might still benefit from a mesh but could also utilize simpler networking approaches, such as Kubernetes\u2019 built-in networking resources.<\/p>\n<p>Meshes are most helpful when you\u2019re frequently launching new services or distributing them across servers. A mesh lets developers focus on functionality, instead of the tedium of connecting different services together. As you deploy an ever-growing service fleet, you\u2019ll spend more time handling service-to-service communication. A mesh automates most of this configuration so you don\u2019t need to think about service discovery and routing.<\/p>\n<p>The approach helps your system become more observable too. All requests flow through the mesh so you can implement infrastructure-level logging and tracing. This provides a simpler pathway to diagnosis and resolution of routing issues. Without a mesh, you might have dozens of services all relaying information directly to each other. This makes it hard to find the origin of a problem.<\/p>\n<p>Most popular service meshes are easy to set up. <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/istio.io\/latest\/docs\/setup\/getting-started\">Istio<\/a> and <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/linkerd.io\/2.10\/getting-started\">Linkerd<\/a> both have well-documented getting started guides to help you deploy a mesh in your Kubernetes cluster. It\u2019s worth experimenting even if you\u2019re not sure your system\u2019s at mesh scale yet. Sticking with direct service communication for too long could restrict your ability to launch new services in a timely and reliable fashion.\n<\/div>\n<blockquote><p><strong><span style=\"color: #ff6600;\">If you liked the article, do not forget to share it with your friends. Follow us on\u00a0<span style=\"color: #ff0000;\"><a style=\"color: #ff0000;\" href=\"https:\/\/news.google.com\/publications\/CAAqBwgKMLG0nwswvr63Aw\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Google News<\/a><\/span>\u00a0too, click on the star and choose us from your favorites.<\/span><\/strong><\/p><\/blockquote>\n<blockquote>\n<p style=\"text-align: center;\">For forums sites go to <span style=\"color: #ff9900;\"><a style=\"color: #ff9900;\" href=\"https:\/\/forum.buradabiliyorum.com\/\" target=\"_blank\" rel=\"noopener\">Forum.BuradaBiliyorum.Com<\/a><\/span><\/strong><\/p>\n<\/blockquote>\n<blockquote>\n<p style=\"text-align: center;\"><strong>If you want to read more like this article, you can visit our <span style=\"color: #ff9900;\"><a style=\"color: #ff9900;\" href=\"https:\/\/en.buradabiliyorum.com\/technology\/\" target=\"_blank\" rel=\"noopener\">Technology category.<\/a><\/span><\/strong><\/p>\n<\/blockquote>\n<p><span style=\"color: black;\"><a style=\"color: #ff9900;\" href=\"https:\/\/www.cloudsavvyit.com\/12088\/what-is-a-service-mesh-why-do-they-matter\/\" target=\"_blank\" rel=\"noopener\">Source<\/a><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8220;#What Is a Service Mesh? Why Do They Matter? \u2013 CloudSavvy IT&#8221; Quanrong Huang\/Shutterstock.com A service mesh is an infrastructure layer that facilitates communication between application components. Meshes provide functionality including service discovery, load balancing, and observability. Service meshes are generally found in distributed systems composed of microservices. The mesh provides a way for different&#8230;<\/p>\n","protected":false},"author":1,"featured_media":288464,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"https:\/\/www.cloudsavvyit.com\/p\/uploads\/2021\/06\/899ce4b1.jpg","fifu_image_alt":"","footnotes":""},"categories":[18],"tags":[],"class_list":["post-288463","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technology"],"_links":{"self":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/posts\/288463","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/comments?post=288463"}],"version-history":[{"count":0,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/posts\/288463\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/media\/288464"}],"wp:attachment":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/media?parent=288463"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/categories?post=288463"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/tags?post=288463"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}