{"id":23588,"date":"2019-07-16T00:00:00","date_gmt":"2019-07-16T00:00:00","guid":{"rendered":"https:\/\/www.mailgun.com\/blog\/how-and-why-we-adopted-service-mesh-with-vulcand-and-nginx-2\/"},"modified":"2026-09-16T09:56:22","modified_gmt":"2026-09-16T09:56:22","slug":"how-and-why-we-adopted-service-mesh-with-vulcand-and-nginx","status":"publish","type":"blog","link":"https:\/\/www.mailgun.com\/es\/blog\/product\/how-and-why-we-adopted-service-mesh-with-vulcand-and-nginx\/","title":{"rendered":"C\u00f3mo y por qu\u00e9 adoptamos una arquitectura service mesh con Vulcand y Nginx"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Over the past year, service mesh has officially become a thing, thanks to the launch of\u00a0<a href=\"https:\/\/istio.io\/\" target=\"_tabs\" rel=\"noopener noreferrer\">Istio<\/a>\u00a0(a joint collaboration between IBM, Google, and Lyft) and the adoption of\u00a0<a href=\"https:\/\/linkerd.io\/\" target=\"_tabs\" rel=\"noopener noreferrer\">linkerd<\/a>\u00a0by big companies like PayPal and Ticketmaster.<\/p>\n\n<p class=\"wp-block-paragraph\">So what is a service mesh, why have we adopted it at Mailgun, and how are we using it to deliver our software?<\/p>\n\r\n    <nav data-content-type=\"longform\" class=\"toc-block longform-spacings px-5 py-6 px-md-6 px-lg-7 py-md-7 bg-light fs-sm rounded-lg\" aria-labelledby=\"toc-title-9851\"><p class=\"h5 m-0\" id=\"toc-title-9851\">\u00cdndice<\/p><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">01<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#what-is-a-service-mesh-and-why-use-it\">What Is a Service Mesh and Why Use It?<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">02<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#where-vulcand-comes-in\">Where Vulcand Comes In<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">03<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#how-mailgun-manages-service-mesh-routes\">How Mailgun Manages Service Mesh Routes<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">04<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#exposing-service-mesh-as-a-public-api\">Exposing Service Mesh As A Public API<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">05<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#conclusion\">Conclusion<\/a><\/div><\/div><\/nav>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" class=\"wp-image-4695\" width=\"800\" height=\"532\" src=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/vulcan-nginx-mailgun-service-mesh-2.png\" alt=\"Banner with Vulcan, Mailgun, and Nginx logos\" srcset=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/vulcan-nginx-mailgun-service-mesh-2.png 800w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/vulcan-nginx-mailgun-service-mesh-2-300x200.png 300w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/vulcan-nginx-mailgun-service-mesh-2-768x511.png 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/figure>\n\n<h2 class=\"wp-block-heading\">What Is a Service Mesh and Why Use It?<\/h2>\n\n<p class=\"wp-block-paragraph\">In simple terms, a service mesh is a bit of software (usually a proxy) that handles service-to-service communication in a fast and resilient manner. Say I\u2019m an HTTP-based user service, and I want to contact the account service to verify a user. In a typical non-mesh architecture, the user service would make a request to\u00a0,\u00a0which would route the request directly to the service\u2019s load balancer, which then proxies the request to the account-service node, fulfilling the request.<\/p>\n\n<p class=\"wp-block-paragraph\">In a service mesh, the user service makes an HTTP request to\u00a0,\u00a0which is handled by the local service-mesh proxy. The local proxy knows that requests to \u2018\/accounts\u2019 are handled by the \u2018account-service,\u2019 so it routes the request to a node in the mesh that\u2019s running an instance of \u2018account-service.\u2019<\/p>\n\n<p class=\"wp-block-paragraph\">The major advantage to service mesh is that it allows for high resiliency (no load balancer single point of failure), built-in service discovery, and zero downtime releases. Most modern service-mesh implementations provide many more features, but these factors were the major motivation in our adoption of a service-mesh architecture.<\/p>\n\n<h2 class=\"wp-block-heading\">Where Vulcand Comes In<\/h2>\n\n<p class=\"wp-block-paragraph\">Back in 2014, no one had even heard of a service mesh. When we started <a href=\"https:\/\/github.com\/vulcand\/vulcand\" target=\"_tabs\" rel=\"noopener noreferrer\">vulcand<\/a>, we wanted to build a high-performance reverse proxy that would provide some smart request throttling and allow us to dynamically add and remove backend services on the fly, thus enabling zero downtime deployments. We definitely didn\u2019t set out to build a service-mesh router.<\/p>\n\n<p class=\"wp-block-paragraph\">But soon after, we started wondering what would happen if, instead of running vulcand as a traditional front-end load balancer, we had all our services talk to each other via the local vulcand instance.<\/p>\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" class=\"wp-image-4696\" width=\"400\" height=\"400\" src=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/excellent-let-the-load-balancing-begin.jpeg\" alt=\"Raccoon meme about load balancing with meme text\" srcset=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/excellent-let-the-load-balancing-begin.jpeg 400w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/excellent-let-the-load-balancing-begin-150x150.jpeg 150w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/excellent-let-the-load-balancing-begin-300x300.jpeg 300w\" sizes=\"(max-width: 400px) 100vw, 400px\" \/><\/figure>\n\n<p class=\"wp-block-paragraph\">We quickly realized how much freedom this would provide. Using vulcand this way would avoid additional load balancers, provide zero downtime releases, increase resiliency, and facilitate service discovery. We had inadvertently created what the industry would eventually call a service-mesh.<\/p>\n\n<h2 class=\"wp-block-heading\">How Mailgun Manages Service Mesh Routes<\/h2>\n\n<p class=\"wp-block-paragraph\">There are two schools of thought for managing service-mesh routes. A central governance model and the distributed ungoverned model.<\/p>\n\n<p class=\"wp-block-paragraph\">In a central governance model, route configuration is stored and managed centrally, usually by a company-appointed architect whose job is to ensure the consistency of API routes, resolve route conflicts across the entire service mesh, set weights, and route destinations.<\/p>\n\n<p class=\"wp-block-paragraph\">With the distributed model, each service owner determines what routes its service provides, often using a route prefix to avoid conflicts (i.e. \u2018\/service-1\/users\u2019 would not conflict with \u2018\/service-2\/users\u2019).<\/p>\n\n<p class=\"wp-block-paragraph\">At\u00a0<a href=\"https:\/\/www.mailgun.com\/es\/\" target=\"_tabs\" rel=\"noopener noreferrer\">Mailgun<\/a>, we\u2019ve adopted the distributed ungoverned model so each service is responsible for informing vulcand about the routes the service provides. Services do this by registering their routes with vulcand via etcd during service startup. If my service handles requests for \u2018\/users,\u2019 it would register this route with vulcand. With this route configured, requests made to the local vulcand instance,\u00a0,\u00a0will automatically be routed to my service.<\/p>\n\n<p class=\"wp-block-paragraph\">We feel like the distributed model allows us to deliver and experiment much more rapidly than if we had embraced a central governance model. By distributing ownership of the route configuration to each service, we lower the barrier of adding new capabilities to services and bypass the additional configuration step before testing and deployment.<\/p>\n\n<p class=\"wp-block-paragraph\">Because vulcand stores its configuration in [etcd, it\u2019s simple for services to add and update new routes. To lower the barrier even further, we have libraries in go and python that make publishing routes to etcd easy. Anyone with read access to etcd can inspect what routes belong to a service, which can help avoid route conflicts. Even so, route conflicts can happen, but it\u2019s very rare and usually caught early in testing.<\/p>\n\n<p class=\"wp-block-paragraph\">The ungoverned model provides our developers with great power and flexibility, but if uncontrolled, it could give external users unintended access to routes and functionality we don\u2019t want to expose. To control which routes and services external users can access, we use an additional proxy layer so only the appropriate service routes are exposed.<\/p>\n\n<h2 class=\"wp-block-heading\">Exposing Service Mesh As A Public API<\/h2>\n\n<p class=\"wp-block-paragraph\">We use [nginx](https:\/\/nginx.org\/) to expose specific routes within our service mesh for public consumption. The resulting architecture looks something like this:<\/p>\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" class=\"wp-image-4697\" width=\"950\" height=\"950\" src=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/service-mesh-architecture-diagram.png\" alt=\"Flow chart for load balancer architecture\" srcset=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/service-mesh-architecture-diagram.png 950w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/service-mesh-architecture-diagram-150x150.png 150w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/service-mesh-architecture-diagram-300x300.png 300w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/service-mesh-architecture-diagram-768x768.png 768w\" sizes=\"(max-width: 950px) 100vw, 950px\" \/><\/figure>\n\n<p class=\"wp-block-paragraph\">On the front end, we load balance a pool of nginx workers that proxy specific requests to our service mesh via locally running vulcand instances. Running vulcand locally on each nginx node allows the node to become a member of the service mesh. This lets us avoid a single point of failure if one nginx node fails.<\/p>\n\n<p class=\"wp-block-paragraph\">Within our nginx configuration, we add location directives for the specific service mesh routes we wish to expose. For instance, the following directive accepts routes that begin with \u2018\/users\u2019 and forwards them to vulcand to be routed to the appropriate service.<\/p>\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                C#                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"Copia al portapapeles\" data-clipboard-success-label=\"\u00a1Copiado!\" data-clipboard-error-label=\"No se ha podido copiar\" data-tooltip=\"Copia al portapapeles\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copia al portapapeles\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-csharp\">\r\n                                <code id=\"code_0_content\" class=\"language-csharp\">\r\n\r\n                                    location ~ ^\/users\/($|\/.*$) {rn            limit_req zone=api burst=280 nodelay;rn}rnupstream vulcand {rn         server localhost:9003 fail_timeout=30s;rn }\r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n<p class=\"wp-block-paragraph\">If an internal service uses a path prefix model, we could have nginx rewrite requests to target specific services by prefix. For example, requests to \u2018\/users\u2019 could be re-written to \u2018\/user-service\/users\u2019 within the service mesh so that the user-service would respond to that request.<\/p>\n\n<p class=\"wp-block-paragraph\">Using nginx in this manner gives us something of a DMZ for external requests before they enter the service mesh. This insulates us from insecure HTTP requests and limits customer access to our service mesh.<\/p>\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n<p class=\"wp-block-paragraph\">The service-mesh model allows us to build small teams of developers focused on delivering high-performance products to our customers quickly and reliably. Leveraging an nginx proxy layer gives us the tools needed to control and scale our services to meet the needs of our customers.<\/p>\n\n<p class=\"wp-block-paragraph\">Interested in working at Mailgun? We\u2019re hiring! And there are several dev positions available.\u00a0<a href=\"https:\/\/mailgun.recruitee.com\/?utm_source=mailgun&amp;utm_medium=blog&amp;utm_campaign=service-mesh-1710\" target=\"_tabs\" rel=\"noopener noreferrer\">Check out our current openings here<\/a>!<\/p>\n\r\n    <aside data-content-type=\"longform\"  class=\"banner-block longform-spacings rounded-lg shadow-lg px-5 py-6 px-md-6 py-md-7 p-lg-7 bg-light\" data-theme=\"dark\" aria-labelledby=\"banner-block-block_69e632ccba44e8ced163cc67f8f2309f\">\r\n                    <p class=\"text-uppercase section-caption text-body-color\">\r\n                Sign Up            <\/p>\r\n                            <p class=\"h4 text-accent fw-bold\" id=\"banner-block-block_69e632ccba44e8ced163cc67f8f2309f\">\r\n                It&#8217;s easy to get started. And it&#8217;s free.            <\/p>\r\n                            <div class=\"mb-0 text-body-color\">\r\n                                    <div class=\"content-body mb-0 text-body-color\">See what you can accomplish with the world\u2019s best email delivery platform.<\/div>\r\n                            <\/div>\r\n        \r\n        <div class=\"text-start mt-5\"><a href=\"https:\/\/signup.mailgun.com\/new\/signup\"  class=\"btn btn-secondary\" >Get started<\/a><\/div>\r\n    <\/aside>\r\n\r\n","protected":false},"excerpt":{"rendered":"<p>Durante el \u00faltimo a\u00f1o, la arquitectura service mesh se ha consolidado. Pero \u00bfqu\u00e9 es una arquitectura service mesh, por qu\u00e9 la hemos adoptado y c\u00f3mo la utilizamos para ofrecer nuestro software?<\/p>\n","protected":false},"author":35,"featured_media":4555,"menu_order":0,"template":"","meta":{"_acf_changed":false,"footnotes":""},"blog_category":[22],"class_list":["post-23588","blog","type-blog","status-publish","has-post-thumbnail","hentry","blog_category-product"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Qu\u00e9 es una arquitectura service mesh - Transactional Email API Service For Developers | Mailgun<\/title>\n<meta name=\"description\" content=\"Durante el \u00faltimo a\u00f1o, la arquitectura service mesh se ha consolidado. Pero \u00bfqu\u00e9 es una arquitectura service mesh, por qu\u00e9 la hemos adoptado y c\u00f3mo la utilizamos para ofrecer nuestro software?\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.mailgun.com\/es\/blog\/product\/how-and-why-we-adopted-service-mesh-with-vulcand-and-nginx\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Qu\u00e9 es una arquitectura service mesh - Transactional Email API Service For Developers | Mailgun\" \/>\n<meta property=\"og:description\" content=\"Durante el \u00faltimo a\u00f1o, la arquitectura service mesh se ha consolidado. Pero \u00bfqu\u00e9 es una arquitectura service mesh, por qu\u00e9 la hemos adoptado y c\u00f3mo la utilizamos para ofrecer nuestro software?\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.mailgun.com\/es\/blog\/product\/how-and-why-we-adopted-service-mesh-with-vulcand-and-nginx\/\" \/>\n<meta property=\"og:site_name\" content=\"Transactional Email API Service For Developers | Mailgun\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-16T09:56:22+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Product.png\" \/>\n\t<meta property=\"og:image:width\" content=\"720\" \/>\n\t<meta property=\"og:image:height\" content=\"448\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"6 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/blog\\\/product\\\/how-and-why-we-adopted-service-mesh-with-vulcand-and-nginx\\\/\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/blog\\\/product\\\/how-and-why-we-adopted-service-mesh-with-vulcand-and-nginx\\\/\",\"name\":\"Qu\u00e9 es una arquitectura service mesh - Transactional Email API Service For Developers | Mailgun\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/blog\\\/product\\\/how-and-why-we-adopted-service-mesh-with-vulcand-and-nginx\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/blog\\\/product\\\/how-and-why-we-adopted-service-mesh-with-vulcand-and-nginx\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/MG-Blog-Product.png\",\"datePublished\":\"2019-07-16T00:00:00+00:00\",\"dateModified\":\"2026-09-16T09:56:22+00:00\",\"description\":\"Durante el \u00faltimo a\u00f1o, la arquitectura service mesh se ha consolidado. Pero \u00bfqu\u00e9 es una arquitectura service mesh, por qu\u00e9 la hemos adoptado y c\u00f3mo la utilizamos para ofrecer nuestro software?\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/blog\\\/product\\\/how-and-why-we-adopted-service-mesh-with-vulcand-and-nginx\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.mailgun.com\\\/es\\\/blog\\\/product\\\/how-and-why-we-adopted-service-mesh-with-vulcand-and-nginx\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/blog\\\/product\\\/how-and-why-we-adopted-service-mesh-with-vulcand-and-nginx\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/MG-Blog-Product.png\",\"contentUrl\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/MG-Blog-Product.png\",\"width\":720,\"height\":448},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/blog\\\/product\\\/how-and-why-we-adopted-service-mesh-with-vulcand-and-nginx\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"C\u00f3mo y por qu\u00e9 adoptamos una arquitectura service mesh con Vulcand y Nginx\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/#website\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/\",\"name\":\"Transactional Email API Service For Developers | Mailgun\",\"description\":\"Potentes API de email transaccional que te permiten enviar, recibir y hacer seguimiento de emails, creadas pensando en los desarrolladores. \u00a1Descubre m\u00e1s!\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/#organization\",\"name\":\"Transactional Email API Service For Developers | Mailgun\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/cropped-android-chrome-512x512-1.png\",\"contentUrl\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/cropped-android-chrome-512x512-1.png\",\"width\":512,\"height\":512,\"caption\":\"Transactional Email API Service For Developers | Mailgun\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Qu\u00e9 es una arquitectura service mesh - Transactional Email API Service For Developers | Mailgun","description":"Durante el \u00faltimo a\u00f1o, la arquitectura service mesh se ha consolidado. Pero \u00bfqu\u00e9 es una arquitectura service mesh, por qu\u00e9 la hemos adoptado y c\u00f3mo la utilizamos para ofrecer nuestro software?","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.mailgun.com\/es\/blog\/product\/how-and-why-we-adopted-service-mesh-with-vulcand-and-nginx\/","og_locale":"es_ES","og_type":"article","og_title":"Qu\u00e9 es una arquitectura service mesh - Transactional Email API Service For Developers | Mailgun","og_description":"Durante el \u00faltimo a\u00f1o, la arquitectura service mesh se ha consolidado. Pero \u00bfqu\u00e9 es una arquitectura service mesh, por qu\u00e9 la hemos adoptado y c\u00f3mo la utilizamos para ofrecer nuestro software?","og_url":"https:\/\/www.mailgun.com\/es\/blog\/product\/how-and-why-we-adopted-service-mesh-with-vulcand-and-nginx\/","og_site_name":"Transactional Email API Service For Developers | Mailgun","article_modified_time":"2026-09-16T09:56:22+00:00","og_image":[{"width":720,"height":448,"url":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Product.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"6 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.mailgun.com\/es\/blog\/product\/how-and-why-we-adopted-service-mesh-with-vulcand-and-nginx\/","url":"https:\/\/www.mailgun.com\/es\/blog\/product\/how-and-why-we-adopted-service-mesh-with-vulcand-and-nginx\/","name":"Qu\u00e9 es una arquitectura service mesh - Transactional Email API Service For Developers | Mailgun","isPartOf":{"@id":"https:\/\/www.mailgun.com\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.mailgun.com\/es\/blog\/product\/how-and-why-we-adopted-service-mesh-with-vulcand-and-nginx\/#primaryimage"},"image":{"@id":"https:\/\/www.mailgun.com\/es\/blog\/product\/how-and-why-we-adopted-service-mesh-with-vulcand-and-nginx\/#primaryimage"},"thumbnailUrl":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Product.png","datePublished":"2019-07-16T00:00:00+00:00","dateModified":"2026-09-16T09:56:22+00:00","description":"Durante el \u00faltimo a\u00f1o, la arquitectura service mesh se ha consolidado. Pero \u00bfqu\u00e9 es una arquitectura service mesh, por qu\u00e9 la hemos adoptado y c\u00f3mo la utilizamos para ofrecer nuestro software?","breadcrumb":{"@id":"https:\/\/www.mailgun.com\/es\/blog\/product\/how-and-why-we-adopted-service-mesh-with-vulcand-and-nginx\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.mailgun.com\/es\/blog\/product\/how-and-why-we-adopted-service-mesh-with-vulcand-and-nginx\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.mailgun.com\/es\/blog\/product\/how-and-why-we-adopted-service-mesh-with-vulcand-and-nginx\/#primaryimage","url":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Product.png","contentUrl":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Product.png","width":720,"height":448},{"@type":"BreadcrumbList","@id":"https:\/\/www.mailgun.com\/es\/blog\/product\/how-and-why-we-adopted-service-mesh-with-vulcand-and-nginx\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.mailgun.com\/es\/"},{"@type":"ListItem","position":2,"name":"Blog","item":"https:\/\/www.mailgun.com\/es\/blog\/"},{"@type":"ListItem","position":3,"name":"C\u00f3mo y por qu\u00e9 adoptamos una arquitectura service mesh con Vulcand y Nginx"}]},{"@type":"WebSite","@id":"https:\/\/www.mailgun.com\/es\/#website","url":"https:\/\/www.mailgun.com\/es\/","name":"Transactional Email API Service For Developers | Mailgun","description":"Potentes API de email transaccional que te permiten enviar, recibir y hacer seguimiento de emails, creadas pensando en los desarrolladores. \u00a1Descubre m\u00e1s!","publisher":{"@id":"https:\/\/www.mailgun.com\/es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.mailgun.com\/es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/www.mailgun.com\/es\/#organization","name":"Transactional Email API Service For Developers | Mailgun","url":"https:\/\/www.mailgun.com\/es\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.mailgun.com\/es\/#\/schema\/logo\/image\/","url":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/06\/cropped-android-chrome-512x512-1.png","contentUrl":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/06\/cropped-android-chrome-512x512-1.png","width":512,"height":512,"caption":"Transactional Email API Service For Developers | Mailgun"},"image":{"@id":"https:\/\/www.mailgun.com\/es\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.mailgun.com\/es\/wp-json\/wp\/v2\/blog\/23588","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mailgun.com\/es\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.mailgun.com\/es\/wp-json\/wp\/v2\/types\/blog"}],"author":[{"embeddable":true,"href":"https:\/\/www.mailgun.com\/es\/wp-json\/wp\/v2\/users\/35"}],"version-history":[{"count":3,"href":"https:\/\/www.mailgun.com\/es\/wp-json\/wp\/v2\/blog\/23588\/revisions"}],"predecessor-version":[{"id":23713,"href":"https:\/\/www.mailgun.com\/es\/wp-json\/wp\/v2\/blog\/23588\/revisions\/23713"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mailgun.com\/es\/wp-json\/wp\/v2\/media\/4555"}],"wp:attachment":[{"href":"https:\/\/www.mailgun.com\/es\/wp-json\/wp\/v2\/media?parent=23588"}],"wp:term":[{"taxonomy":"blog_category","embeddable":true,"href":"https:\/\/www.mailgun.com\/es\/wp-json\/wp\/v2\/blog_category?post=23588"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}