{"id":593772,"date":"2025-04-28T10:00:00","date_gmt":"2025-04-28T08:00:00","guid":{"rendered":"https:\/\/www.devoteam.com\/expert-view\/modernising-in-aws-monoliths-to-microservices-using-aws-app-mesh\/"},"modified":"2025-04-28T10:00:00","modified_gmt":"2025-04-28T08:00:00","slug":"modernising-in-aws-monoliths-to-microservices-using-aws-app-mesh","status":"publish","type":"expert-view","link":"https:\/\/devoteam.info\/en-pt\/expert-view\/modernising-in-aws-monoliths-to-microservices-using-aws-app-mesh\/","title":{"rendered":"Modernising in AWS: Monoliths to Microservices Using AWS App Mesh"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong>In the latest entry to our Modernisation Blog series, Solutions Architect Jim Wood performs a high-level comparison of monoliths vs microservices, before exploring some of the ways in which App Mesh makes managing microservices easier. Let\u2019s get started!<\/strong><\/p>\n\n\n\n<div class=\"wp-block-group has-gray-light-background-color has-background has-global-padding is-layout-constrained wp-container-core-group-is-layout-03cab32d wp-block-group-is-layout-constrained\" style=\"padding-top:var(--wp--preset--spacing--medium);padding-right:var(--wp--preset--spacing--medium);padding-bottom:var(--wp--preset--spacing--medium);padding-left:var(--wp--preset--spacing--medium)\">\n<div class=\"wp-block-yoast-seo-table-of-contents yoast-table-of-contents\"><h3>What you&#8217;ll read in this article<\/h3><ul><li><a href=\"#h-monoliths\" data-level=\"2\">Monoliths<\/a><\/li><li><a href=\"#h-microservices\" data-level=\"2\">Microservices<\/a><\/li><li><a href=\"#h-microservices-on-aws-app-mesh\" data-level=\"2\">Microservices on AWS (+ App Mesh)<\/a><\/li><li><a href=\"#h-conclusion\" data-level=\"2\">Conclusion<\/a><\/li><\/ul><\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-monoliths\">Monoliths<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Unless you\u2019ve been living in the dark ages, chances are you already know what a monolith is. You\u2019ve more than likely owned or managed some before, and perhaps you still are. You will know the trouble they bring with them, which is probably what led you to find this article.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Even so, let\u2019s quickly set the scene and remind ourselves about them.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-typical-anatomy\">Typical Anatomy<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A typical monolith might consist of a classic \u20183-tier\u2019 web application architecture, such as the one below:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"264\" height=\"408\" src=\"https:\/\/devoteam.info\/wp-content\/uploads\/2025\/04\/diagram-showing-typical-monolith-web-application-architecture.webp\" alt=\"\" class=\"wp-image-580159\" srcset=\"https:\/\/devoteam.info\/wp-content\/uploads\/2025\/04\/diagram-showing-typical-monolith-web-application-architecture.webp 264w, https:\/\/devoteam.info\/wp-content\/uploads\/2025\/04\/diagram-showing-typical-monolith-web-application-architecture-194x300.webp 194w\" sizes=\"auto, (max-width: 264px) 100vw, 264px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">If you\u2019ve come from an ASP\/.NET, Java or PHP background, you will likely be familiar with this pattern. You will also quite likely have deployed variations on the theme, such as use of the MVC (Model, View, Controller) paradigm, for example.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In a classic monolith, all functional areas of the application are in some way conjoined, whether that be: UI, input validation, data processing, business logic, error handling, etc.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Until fairly recently, monoliths used to be the favoured option for enterprise web applications, and this is why development frameworks adopted patterns like MVC \u2013 in order to provide at least&nbsp;<em>some<\/em>&nbsp;separation-of-concerns. However, as anyone with experience of using these frameworks will know, they do not solve the problem of managing at scale for very long. Monolith projects tend to arrive in a situation where increasing bloat and technical debt begin to cripple business agility, along with growing maintenance costs. Confidence is lost.<strong>&nbsp;<\/strong><\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8d39b2df wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<div class=\"wp-block-group has-secondary-background-color has-background has-global-padding is-layout-constrained wp-container-core-group-is-layout-03cab32d wp-block-group-is-layout-constrained\" style=\"padding-top:var(--wp--preset--spacing--medium);padding-right:var(--wp--preset--spacing--medium);padding-bottom:var(--wp--preset--spacing--medium);padding-left:var(--wp--preset--spacing--medium)\">\n<h4 class=\"wp-block-heading\" id=\"h-pros\">Pros<\/h4>\n<\/div>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A single codebase\/application to understand\n<ul class=\"wp-block-list\">\n<li>Can be managed and understood by one team<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Logging\/debugging and monitoring is simple (only one running application to monitor)<\/li>\n\n\n\n<li>Single database (one source of truth for everything)<\/li>\n<\/ul>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<div class=\"wp-block-group has-primary-background-color has-background has-global-padding is-layout-constrained wp-container-core-group-is-layout-03cab32d wp-block-group-is-layout-constrained\" style=\"padding-top:var(--wp--preset--spacing--medium);padding-right:var(--wp--preset--spacing--medium);padding-bottom:var(--wp--preset--spacing--medium);padding-left:var(--wp--preset--spacing--medium)\">\n<h4 class=\"wp-block-heading\" id=\"h-cons\">Cons<\/h4>\n<\/div>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Scalability limited\n<ul class=\"wp-block-list\">\n<li>Vertical-only scaling<\/li>\n\n\n\n<li>Horizontal scaling impossible (application is stateful; processes are managed internally)<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Releases are cumbersome and dangerous (\u2018big-bang\u2019 releases)\n<ul class=\"wp-block-list\">\n<li>Very long build time\n<ul class=\"wp-block-list\">\n<li>Even a tiny change will result in the entire application being released<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Prolonged testing required<\/li>\n\n\n\n<li>Rollbacks are expensive and\/or slow<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Fault intolerant\n<ul class=\"wp-block-list\">\n<li>If the application drops service, the entire application drops service<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Databases become large and complex; harder to maintain; more expensive to scale; restores take longer, which hinders Disaster Recovery<\/li>\n\n\n\n<li>Under-utilised resources \u2013 to make up for lack of horizontal scaling \u2013 result in high fixed costs<\/li>\n\n\n\n<li>TCO is high<\/li>\n\n\n\n<li>Speed-to-market is slow<\/li>\n<\/ul>\n<\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-microservices\">Microservices<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In contrast to the monolith, a microservice is exactly as its name implies: a tiny, single area of functionality, running as a standalone service. A single developer can build a new microservice very quickly (hours) and easily, using the right tools and frameworks. They can deploy it quickly too, as each microservice can have its own CICD pipeline.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Here is how some parts of a monolithic application may look after migrating to microservices:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"556\" src=\"https:\/\/devoteam.info\/wp-content\/uploads\/2025\/04\/diagram-showing-monolithic-application-parts-after-migrating-to-microservices-768x556-1.webp\" alt=\"\" class=\"wp-image-580273\" srcset=\"https:\/\/devoteam.info\/wp-content\/uploads\/2025\/04\/diagram-showing-monolithic-application-parts-after-migrating-to-microservices-768x556-1.webp 768w, https:\/\/devoteam.info\/wp-content\/uploads\/2025\/04\/diagram-showing-monolithic-application-parts-after-migrating-to-microservices-768x556-1-300x217.webp 300w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">And here is how a real-world example of a microservice architecture might look, if you worked in eCommerce:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"556\" src=\"https:\/\/devoteam.info\/wp-content\/uploads\/2025\/04\/diagram-ecommerce-microservice-architecture-768x556-1.png\" alt=\"\" class=\"wp-image-580298\" srcset=\"https:\/\/devoteam.info\/wp-content\/uploads\/2025\/04\/diagram-ecommerce-microservice-architecture-768x556-1.png 768w, https:\/\/devoteam.info\/wp-content\/uploads\/2025\/04\/diagram-ecommerce-microservice-architecture-768x556-1-300x217.png 300w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Microservice architectures have helped countless businesses \u2013 at varying scale \u2013 to become increasingly more agile in responding to changing market conditions, as well as having better control of their spend, often converting from rigid Capital Expenditure cost models, to more flexible monthly Operational Expenditure cost models.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8d39b2df wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<div class=\"wp-block-group has-secondary-background-color has-background has-global-padding is-layout-constrained wp-container-core-group-is-layout-03cab32d wp-block-group-is-layout-constrained\" style=\"padding-top:var(--wp--preset--spacing--medium);padding-right:var(--wp--preset--spacing--medium);padding-bottom:var(--wp--preset--spacing--medium);padding-left:var(--wp--preset--spacing--medium)\">\n<h4 class=\"wp-block-heading\" id=\"h-pros-0\">Pros<\/h4>\n<\/div>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Easier for developers to build and deploy new features\n<ul class=\"wp-block-list\">\n<li>Quicker to develop\n<ul class=\"wp-block-list\">\n<li>Functional requirements are more concise and isolated<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Quicker to build<\/li>\n\n\n\n<li>Testing is isolated\n<ul class=\"wp-block-list\">\n<li>Service-specific tests<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Containers can be run locally and in isolation<\/li>\n\n\n\n<li>Release to a single service, not the entire application (e.g. \u2018Domain Driven Design\u2019)<\/li>\n\n\n\n<li>Speed-to-market improved\n<ul class=\"wp-block-list\">\n<li>Product-based development (not project-based)<\/li>\n\n\n\n<li>Respond quicker to changing customer demands<\/li>\n\n\n\n<li>Respond quicker to competitors\u2019 capabilities (and beat them)<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Increased portability of application\/services\n<ul class=\"wp-block-list\">\n<li>Containers make application code platform agnostic<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Fault tolerant\n<ul class=\"wp-block-list\">\n<li>Service containers are managed, and will self-heal or horizontally scale when needed\n<ul class=\"wp-block-list\">\n<li>ECS Service<\/li>\n\n\n\n<li>Auto-scaling<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>One, or even several, services failing will not necessarily mean the entire user-facing application will fail (reduced blast radius).<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<div class=\"wp-block-group has-primary-background-color has-background has-global-padding is-layout-constrained wp-container-core-group-is-layout-03cab32d wp-block-group-is-layout-constrained\" style=\"padding-top:var(--wp--preset--spacing--medium);padding-right:var(--wp--preset--spacing--medium);padding-bottom:var(--wp--preset--spacing--medium);padding-left:var(--wp--preset--spacing--medium)\">\n<h4 class=\"wp-block-heading\" id=\"h-cons-0\">Cons<\/h4>\n<\/div>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Harder to monitor (multiple services to monitor \u2013 number will grow as functionality and scaling increases)\n<ul class=\"wp-block-list\">\n<li>Vertical-only scaling<\/li>\n\n\n\n<li>Horizontal scaling impossible (application is stateful; processes are managed internally)<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>End-to-end visibility\/tracing is exponentially harder as number of services (and service containers) increases.<\/li>\n\n\n\n<li>Security risk surface increases<\/li>\n<\/ul>\n<\/div>\n<\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-microservices-on-aws\">Microservices on AWS<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A typical microservice may be built using very lightweight, microservice-specific development frameworks. It is then encapsulated in a&nbsp;<a href=\"https:\/\/www.docker.com\/resources\/what-container\">Docker<\/a>&nbsp;container, which is sort of an abstraction of a process container (think of it as a miniature VM, but without the strings attached).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Docker containers are highly portable, as they are abstracted away from the underlying OS. In other words, I can write a microservice and run it in a standalone container on my local development environment on my Mac. The developer next to me, on his PC, can run the exact same container \u2013 not a Windows port of the container, but the exact same container. That same container can be run on any other system with a running Docker host, completely agnostically.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is a powerful tool for:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Portability<\/li>\n\n\n\n<li>Ease of development (and collaboration)<\/li>\n\n\n\n<li>Testing<\/li>\n\n\n\n<li>Dev-to-production parity<\/li>\n\n\n\n<li>Future proofing<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-aws-container-services\">AWS Container Services<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">AWS provides several managed services that take most of the heavy lifting out of building, deploying and maintaining microservice architectures in the Cloud:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/aws.amazon.com\/ecs\">ECS<\/a>(Elastic Container Service)<\/li>\n\n\n\n<li><a href=\"https:\/\/aws.amazon.com\/eks\">EKS<\/a>(Elastic Kuberbetes Service)<\/li>\n\n\n\n<li><a href=\"https:\/\/aws.amazon.com\/ecr\">ECR<\/a>(Elastic Container Registry)<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-microservices-on-aws-app-mesh\">Microservices on AWS (+ App Mesh)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/aws.amazon.com\/app-mesh\">AWS App Mesh<\/a>\u00a0aims to solve some of the most common pitfalls of managing microservice architectures, by reinterpreting pre-existing design patterns and tooling. Before getting stuck in to\u00a0<em>how<\/em>\u00a0the AWS App Mesh service works, it\u2019s important to understand some fundamentals, such as:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Why it exists \u2013 (the problems it was designed to solve)<\/li>\n\n\n\n<li>How it compares to pre-existing solutions &amp; patterns (e.g. service mesh)<strong>\u00a0<\/strong><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-an-introduction-to-the-service-mesh-pattern\">An introduction to the \u2018Service Mesh\u2019 pattern<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Before AWS App Mesh, came the Service Mesh pattern.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This might be a term you\u2019ve heard before, particularly if you\u2019ve had some exposure to managing large-scale Kubernetes clusters, for example. If you haven\u2019t heard of it before, or if you\u2019re just unsure of exactly what is it, then this section is definitely for you.<\/p>\n\n\n\n<div class=\"wp-block-group has-gray-light-background-color has-background has-global-padding is-layout-constrained wp-container-core-group-is-layout-03cab32d wp-block-group-is-layout-constrained\" style=\"padding-top:var(--wp--preset--spacing--medium);padding-right:var(--wp--preset--spacing--medium);padding-bottom:var(--wp--preset--spacing--medium);padding-left:var(--wp--preset--spacing--medium)\">\n<p class=\"wp-block-paragraph\"><strong>What is a Service Mash Pattern? <\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A \u2018service mesh\u2019 is basically a dedicated layer of infrastructure that is used for service-to-service communication. This brings a range of benefits, including:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Improved security<\/li>\n\n\n\n<li>Better observability of service-to-service communications<\/li>\n\n\n\n<li>Increased granular control of fault-tolerance\n<ul class=\"wp-block-list\">\n<li>Automating retries<\/li>\n\n\n\n<li>Back-off\/roll-off policies<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Centralised management of the application ecosystem<\/li>\n<\/ul>\n<\/div>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-data-plane\">Data Plane<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">In its absolute simplest form, a Service Mesh starts with the idea of simply placing network proxies before each running service in our microservice architecture \u2013 either using a sidecar container in ECS or an App Mesh controller in Kubernetes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is called the \u2018data plane\u2019.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"450\" height=\"438\" src=\"https:\/\/devoteam.info\/wp-content\/uploads\/2025\/04\/diagram-showing-data-plane-1.png\" alt=\"\" class=\"wp-image-580379\" srcset=\"https:\/\/devoteam.info\/wp-content\/uploads\/2025\/04\/diagram-showing-data-plane-1.png 450w, https:\/\/devoteam.info\/wp-content\/uploads\/2025\/04\/diagram-showing-data-plane-1-300x292.png 300w\" sizes=\"auto, (max-width: 450px) 100vw, 450px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The data plane intercepts calls between different services and processes them, in the same way that any other proxy might work. In the diagram above, the \u2018caller\u2019 will typically be another service in our microservice architecture.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-control-plane\">Control Plane<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">The data plane proxies are then managed by a separate, automated management process, called the \u2018Control Plane\u2019.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"680\" src=\"https:\/\/devoteam.info\/wp-content\/uploads\/2025\/04\/control-plane-diagram-768x680-1.png\" alt=\"\" class=\"wp-image-580404\" srcset=\"https:\/\/devoteam.info\/wp-content\/uploads\/2025\/04\/control-plane-diagram-768x680-1.png 768w, https:\/\/devoteam.info\/wp-content\/uploads\/2025\/04\/control-plane-diagram-768x680-1-300x266.png 300w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Not only does the control plane coordinate the behaviour of proxies, it also provides APIs for ops teams to control and observe the whole network.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-putting-it-all-together\">Putting it all together<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">In the diagram below, you can see how a deliberately small and simple microservice ecosystem is managed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Imagine the benefits this could bring at scale, with tens, hundreds or even thousands of distributed microservices.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Imagine also, the limitations of our self-managed Task Manager (Control Plane) at such a scale.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"500\" src=\"https:\/\/devoteam.info\/wp-content\/uploads\/2025\/04\/simple-microservice-ecosystem-768x500-1.png\" alt=\"\" class=\"wp-image-580429\" srcset=\"https:\/\/devoteam.info\/wp-content\/uploads\/2025\/04\/simple-microservice-ecosystem-768x500-1.png 768w, https:\/\/devoteam.info\/wp-content\/uploads\/2025\/04\/simple-microservice-ecosystem-768x500-1-300x195.png 300w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-mapping-aws-appmesh-to-the-service-mesh-pattern\">Mapping AWS AppMesh to the Service Mesh Pattern<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-data-plane-0\">Data Plane<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">AWS App Mesh uses the open source&nbsp;<a href=\"https:\/\/www.envoyproxy.io\/\">Envoy Proxy<\/a>&nbsp;to provide its \u2018Data Plane\u2019.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"558\" height=\"546\" src=\"https:\/\/devoteam.info\/wp-content\/uploads\/2025\/04\/diagram-app-mesh-data-plane-using-envoy-proxy.png\" alt=\"\" class=\"wp-image-580455\" srcset=\"https:\/\/devoteam.info\/wp-content\/uploads\/2025\/04\/diagram-app-mesh-data-plane-using-envoy-proxy.png 558w, https:\/\/devoteam.info\/wp-content\/uploads\/2025\/04\/diagram-app-mesh-data-plane-using-envoy-proxy-300x294.png 300w\" sizes=\"auto, (max-width: 558px) 100vw, 558px\" \/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-control-plane-0\">Control Plane<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">AWS App Mesh is a fully-managed \u2018Control Plane\u2019 service, that supports ECS (Fargate), EKS (Kubernetes) and EC2.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"588\" height=\"546\" src=\"https:\/\/devoteam.info\/wp-content\/uploads\/2025\/04\/1diagram-app-mesh-control-plane.png\" alt=\"\" class=\"wp-image-580480\" srcset=\"https:\/\/devoteam.info\/wp-content\/uploads\/2025\/04\/1diagram-app-mesh-control-plane.png 588w, https:\/\/devoteam.info\/wp-content\/uploads\/2025\/04\/1diagram-app-mesh-control-plane-300x279.png 300w\" sizes=\"auto, (max-width: 588px) 100vw, 588px\" \/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-putting-it-all-together-0\">Putting it all together<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">As you can see, the high-level topology looks similar to before. However, we now no longer need to manage the Control Plane ourselves, which negates the need to continually upgrade, patch, scale and secure it. More of our precious time can be spent focussing on our customers\u2019 needs, rather than our own.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As with other AWS services, App Mesh is a highly-available, always-on service \u2013 you pay for what you use on a month-by-month (OpEx) basis.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It integrates seamlessly with other AWS services, too.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"477\" src=\"https:\/\/devoteam.info\/wp-content\/uploads\/2025\/04\/1diagram-management-using-app-mesh-768x477-1.png\" alt=\"\" class=\"wp-image-580505\" srcset=\"https:\/\/devoteam.info\/wp-content\/uploads\/2025\/04\/1diagram-management-using-app-mesh-768x477-1.png 768w, https:\/\/devoteam.info\/wp-content\/uploads\/2025\/04\/1diagram-management-using-app-mesh-768x477-1-300x186.png 300w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-centralised-tracing-amp-monitoring\">Centralised Tracing &amp; Monitoring<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">With App Mesh and Envoy Proxy in place, it is now much easier to ensure that all services are properly traced and monitored, as both these integrations will be managed for us.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In the diagram below,&nbsp;<a href=\"https:\/\/aws.amazon.com\/xray\">AWS X-Ray<\/a>&nbsp;is being used to provide full end-to-end tracing, whilst&nbsp;<a href=\"https:\/\/aws.amazon.com\/cloudwatch\">CloudWatch<\/a>&nbsp;could be used for centralised logging, monitoring and container insights, for instance. See too, how calls to unhealthy endpoints are rapidly re-routed to healthy ones by Envoy Proxy (an example of App Mesh\u2019s automatic self-healing and service discovery capabilities).<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"668\" src=\"https:\/\/devoteam.info\/wp-content\/uploads\/2025\/04\/diagram-app-meshenvoy-proxy-768x668-1.png\" alt=\"\" class=\"wp-image-580531\" srcset=\"https:\/\/devoteam.info\/wp-content\/uploads\/2025\/04\/diagram-app-meshenvoy-proxy-768x668-1.png 768w, https:\/\/devoteam.info\/wp-content\/uploads\/2025\/04\/diagram-app-meshenvoy-proxy-768x668-1-300x261.png 300w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-conclusion\">Conclusion<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">We hope you enjoyed this whistle stop tour of the microservice evolution, and that it provides some stimulus for further debate with your colleagues. Perhaps you can now build a small POC or run a lab session, and begin exploring more features of App Mesh. It\u2019s only a sprint away!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Alternatively, if you would like to learn more from a real human being (remember what they look like?) feel free to reach out to us Ubertas Consulting. We are a team of highly skilled, experienced and certified consultants \u2013 as well as being an AWS Trusted Partner \u2013 who can offer tailored advice for all manner of AWS implementations, migrations and modernisations. We\u2019d love to help.<\/p>\n\n\n\n<div class=\"wp-block-group alignfull has-base-color has-text-color has-global-padding is-layout-constrained wp-container-core-group-is-layout-46b67d08 wp-block-group-is-layout-constrained has-background\" style=\"margin-top:0px;margin-bottom:0px;padding-top:var(--wp--preset--spacing--xxx-large);padding-right:var(--wp--preset--spacing--medium);padding-bottom:var(--wp--preset--spacing--xxx-large);padding-left:var(--wp--preset--spacing--medium);background-image:url(&apos;https:\/\/devoteam.info\/wp-content\/uploads\/2025\/01\/GettyImages-1309018761-scaled-1.jpg&apos;);background-size:cover;\">\n<div class=\"wp-block-group is-layout-flow wp-block-group-is-layout-flow\">\n<div class=\"wp-block-group has-global-padding is-content-justification-left is-layout-constrained wp-container-core-group-is-layout-5f9de3d0 wp-block-group-is-layout-constrained\">\n<h2 class=\"wp-block-heading has-text-align-left has-secondary-font-family has-large-font-size\" id=\"h-how-will-you-transform-your-business-with-aws-solutions\">How will you transform your business with AWS solutions?<\/h2>\n<\/div>\n\n\n\n<p class=\"has-text-align-left has-main-accent-color has-text-color wp-block-paragraph\">Regardless of your current cloud adoption stage, our team will help you to streamline IT investments, enhance scalability, and drive innovation.<\/p>\n\n\n\n<div class=\"wp-block-buttons is-content-justification-left is-layout-flex wp-container-core-buttons-is-layout-3c38c079 wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/devoteam.info\/amazon-web-services\/\">Begin your AWS Journey<\/a><\/div>\n\n\n\n<div class=\"wp-block-button is-style-outline-white-button\"><a class=\"wp-block-button__link has-base-color has-text-color has-background wp-element-button\" href=\"https:\/\/devoteam.info\/success-story\/?topic_name=aws\" style=\"background-color:#64648254\">See how we helped others<\/a><\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>In the latest entry to our Modernisation Blog series, Solutions Architect Jim Wood performs a high-level comparison of monoliths vs microservices, before exploring some of the ways in which App Mesh makes managing microservices easier. Let\u2019s get started! Monoliths Unless you\u2019ve been living in the dark ages, chances are you already know what a monolith [&hellip;]<\/p>\n","protected":false},"featured_media":148298,"template":"","categories":[2289,888],"tags":[],"industry":[],"class_list":["post-593772","expert-view","type-expert-view","status-publish","has-post-thumbnail","hentry","category-aws-en-pt","category-cloud-native-app-development-en-pt"],"acf":[],"cards":"\n\t<div class=\"single-post-card\">\n\n\t\t<figure class=\"wp-block-post-featured-image\"><a href=\"https:\/\/devoteam.info\/en-pt\/expert-view\/modernising-in-aws-monoliths-to-microservices-using-aws-app-mesh\/\" target=\"_self\" ><img width=\"1920\" height=\"1440\" src=\"https:\/\/devoteam.info\/wp-content\/uploads\/2024\/11\/GettyImages-1320881688.jpg\" class=\"attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"Modernising in AWS: Monoliths to Microservices Using AWS App Mesh\" style=\"aspect-ratio:4\/3;width:100%;object-fit:cover;\" decoding=\"async\" loading=\"lazy\" srcset=\"https:\/\/devoteam.info\/wp-content\/uploads\/2024\/11\/GettyImages-1320881688.jpg 1920w, https:\/\/devoteam.info\/wp-content\/uploads\/2024\/11\/GettyImages-1320881688-300x225.jpg 300w, https:\/\/devoteam.info\/wp-content\/uploads\/2024\/11\/GettyImages-1320881688-1024x768.jpg 1024w, https:\/\/devoteam.info\/wp-content\/uploads\/2024\/11\/GettyImages-1320881688-768x576.jpg 768w, https:\/\/devoteam.info\/wp-content\/uploads\/2024\/11\/GettyImages-1320881688-1536x1152.jpg 1536w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/a><\/figure>\n\n\t\t\n\t\t<div class=\"wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-43282307 wp-block-group-is-layout-flex\">\n\t<p style=\"font-style:normal;font-weight:700\" class=\"has-link-color wp-elements-1 wp-block-lp-post-type has-text-color has-primary-color has-small-font-size\">Expert View<\/p>\n\n\t\t\n\t\t<h3 style=\"font-style:normal;font-weight:400\" class=\"wp-block-post-title has-base-font-size\"><a href=\"https:\/\/devoteam.info\/en-pt\/expert-view\/modernising-in-aws-monoliths-to-microservices-using-aws-app-mesh\/\" target=\"_self\" >Modernising in AWS: Monoliths to Microservices Using AWS App Mesh<\/a><\/h3><\/div>\n\t\t\n\t<\/div>\n\n","yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.4 (Yoast SEO v28.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Modernising in AWS: Monoliths to Microservices Using AWS App Mesh | Devoteam<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/devoteam.info\/en-pt\/expert-view\/modernising-in-aws-monoliths-to-microservices-using-aws-app-mesh\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Modernising in AWS: Monoliths to Microservices Using AWS App Mesh\" \/>\n<meta property=\"og:description\" content=\"In the latest entry to our Modernisation Blog series, Solutions Architect Jim Wood performs a high-level comparison of monoliths vs microservices, before exploring some of the ways in which App Mesh makes managing microservices easier. Let\u2019s get started! Monoliths Unless you\u2019ve been living in the dark ages, chances are you already know what a monolith [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/devoteam.info\/en-pt\/expert-view\/modernising-in-aws-monoliths-to-microservices-using-aws-app-mesh\/\" \/>\n<meta property=\"og:site_name\" content=\"Devoteam\" \/>\n<meta property=\"og:image\" content=\"https:\/\/devoteam.info\/wp-content\/uploads\/2025\/04\/diagram-showing-typical-monolith-web-application-architecture.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"264\" \/>\n\t<meta property=\"og:image:height\" content=\"408\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\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=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/devoteam.info\\\/en-pt\\\/expert-view\\\/modernising-in-aws-monoliths-to-microservices-using-aws-app-mesh\\\/\",\"url\":\"https:\\\/\\\/devoteam.info\\\/en-pt\\\/expert-view\\\/modernising-in-aws-monoliths-to-microservices-using-aws-app-mesh\\\/\",\"name\":\"Modernising in AWS: Monoliths to Microservices Using AWS App Mesh | Devoteam\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/devoteam.info\\\/en-pt\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/devoteam.info\\\/en-pt\\\/expert-view\\\/modernising-in-aws-monoliths-to-microservices-using-aws-app-mesh\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/devoteam.info\\\/en-pt\\\/expert-view\\\/modernising-in-aws-monoliths-to-microservices-using-aws-app-mesh\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/devoteam.info\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/GettyImages-1320881688.jpg\",\"datePublished\":\"2025-04-28T08:00:00+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/devoteam.info\\\/en-pt\\\/expert-view\\\/modernising-in-aws-monoliths-to-microservices-using-aws-app-mesh\\\/#breadcrumb\"},\"inLanguage\":\"en-PT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/devoteam.info\\\/en-pt\\\/expert-view\\\/modernising-in-aws-monoliths-to-microservices-using-aws-app-mesh\\\/\"]}],\"accessibilityFeature\":[\"tableOfContents\"]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-PT\",\"@id\":\"https:\\\/\\\/devoteam.info\\\/en-pt\\\/expert-view\\\/modernising-in-aws-monoliths-to-microservices-using-aws-app-mesh\\\/#primaryimage\",\"url\":\"https:\\\/\\\/devoteam.info\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/GettyImages-1320881688.jpg\",\"contentUrl\":\"https:\\\/\\\/devoteam.info\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/GettyImages-1320881688.jpg\",\"width\":1920,\"height\":1440},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/devoteam.info\\\/en-pt\\\/expert-view\\\/modernising-in-aws-monoliths-to-microservices-using-aws-app-mesh\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/devoteam.info\\\/en-pt\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Expert View\",\"item\":\"https:\\\/\\\/devoteam.info\\\/en-pt\\\/expert-view\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Modernising in AWS: Monoliths to Microservices Using AWS App Mesh\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/devoteam.info\\\/en-pt\\\/#website\",\"url\":\"https:\\\/\\\/devoteam.info\\\/en-pt\\\/\",\"name\":\"Devoteam\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/devoteam.info\\\/en-pt\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-PT\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Modernising in AWS: Monoliths to Microservices Using AWS App Mesh | Devoteam","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:\/\/devoteam.info\/en-pt\/expert-view\/modernising-in-aws-monoliths-to-microservices-using-aws-app-mesh\/","og_locale":"en_US","og_type":"article","og_title":"Modernising in AWS: Monoliths to Microservices Using AWS App Mesh","og_description":"In the latest entry to our Modernisation Blog series, Solutions Architect Jim Wood performs a high-level comparison of monoliths vs microservices, before exploring some of the ways in which App Mesh makes managing microservices easier. Let\u2019s get started! Monoliths Unless you\u2019ve been living in the dark ages, chances are you already know what a monolith [&hellip;]","og_url":"https:\/\/devoteam.info\/en-pt\/expert-view\/modernising-in-aws-monoliths-to-microservices-using-aws-app-mesh\/","og_site_name":"Devoteam","og_image":[{"width":264,"height":408,"url":"https:\/\/devoteam.info\/wp-content\/uploads\/2025\/04\/diagram-showing-typical-monolith-web-application-architecture.webp","type":"image\/webp"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/devoteam.info\/en-pt\/expert-view\/modernising-in-aws-monoliths-to-microservices-using-aws-app-mesh\/","url":"https:\/\/devoteam.info\/en-pt\/expert-view\/modernising-in-aws-monoliths-to-microservices-using-aws-app-mesh\/","name":"Modernising in AWS: Monoliths to Microservices Using AWS App Mesh | Devoteam","isPartOf":{"@id":"https:\/\/devoteam.info\/en-pt\/#website"},"primaryImageOfPage":{"@id":"https:\/\/devoteam.info\/en-pt\/expert-view\/modernising-in-aws-monoliths-to-microservices-using-aws-app-mesh\/#primaryimage"},"image":{"@id":"https:\/\/devoteam.info\/en-pt\/expert-view\/modernising-in-aws-monoliths-to-microservices-using-aws-app-mesh\/#primaryimage"},"thumbnailUrl":"https:\/\/devoteam.info\/wp-content\/uploads\/2024\/11\/GettyImages-1320881688.jpg","datePublished":"2025-04-28T08:00:00+00:00","breadcrumb":{"@id":"https:\/\/devoteam.info\/en-pt\/expert-view\/modernising-in-aws-monoliths-to-microservices-using-aws-app-mesh\/#breadcrumb"},"inLanguage":"en-PT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/devoteam.info\/en-pt\/expert-view\/modernising-in-aws-monoliths-to-microservices-using-aws-app-mesh\/"]}],"accessibilityFeature":["tableOfContents"]},{"@type":"ImageObject","inLanguage":"en-PT","@id":"https:\/\/devoteam.info\/en-pt\/expert-view\/modernising-in-aws-monoliths-to-microservices-using-aws-app-mesh\/#primaryimage","url":"https:\/\/devoteam.info\/wp-content\/uploads\/2024\/11\/GettyImages-1320881688.jpg","contentUrl":"https:\/\/devoteam.info\/wp-content\/uploads\/2024\/11\/GettyImages-1320881688.jpg","width":1920,"height":1440},{"@type":"BreadcrumbList","@id":"https:\/\/devoteam.info\/en-pt\/expert-view\/modernising-in-aws-monoliths-to-microservices-using-aws-app-mesh\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/devoteam.info\/en-pt\/"},{"@type":"ListItem","position":2,"name":"Expert View","item":"https:\/\/devoteam.info\/en-pt\/expert-view\/"},{"@type":"ListItem","position":3,"name":"Modernising in AWS: Monoliths to Microservices Using AWS App Mesh"}]},{"@type":"WebSite","@id":"https:\/\/devoteam.info\/en-pt\/#website","url":"https:\/\/devoteam.info\/en-pt\/","name":"Devoteam","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/devoteam.info\/en-pt\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-PT"}]}},"uagb_featured_image_src":{"full":["https:\/\/devoteam.info\/wp-content\/uploads\/2024\/11\/GettyImages-1320881688.jpg",1920,1440,false],"thumbnail":["https:\/\/devoteam.info\/wp-content\/uploads\/2024\/11\/GettyImages-1320881688-150x150.jpg",150,150,true],"medium":["https:\/\/devoteam.info\/wp-content\/uploads\/2024\/11\/GettyImages-1320881688-300x225.jpg",300,225,true],"medium_large":["https:\/\/devoteam.info\/wp-content\/uploads\/2024\/11\/GettyImages-1320881688-768x576.jpg",768,576,true],"large":["https:\/\/devoteam.info\/wp-content\/uploads\/2024\/11\/GettyImages-1320881688-1024x768.jpg",1024,768,true],"1536x1536":["https:\/\/devoteam.info\/wp-content\/uploads\/2024\/11\/GettyImages-1320881688-1536x1152.jpg",1536,1152,true],"2048x2048":["https:\/\/devoteam.info\/wp-content\/uploads\/2024\/11\/GettyImages-1320881688.jpg",1920,1440,false]},"uagb_author_info":{"display_name":"wcraye","author_link":"https:\/\/devoteam.info\/en-pt\/author\/"},"uagb_comment_info":0,"uagb_excerpt":"In the latest entry to our Modernisation Blog series, Solutions Architect Jim Wood performs a high-level comparison of monoliths vs microservices, before exploring some of the ways in which App Mesh makes managing microservices easier. Let\u2019s get started! Monoliths Unless you\u2019ve been living in the dark ages, chances are you already know what a monolith&hellip;","_links":{"self":[{"href":"https:\/\/devoteam.info\/en-pt\/wp-json\/wp\/v2\/expert-view\/593772","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devoteam.info\/en-pt\/wp-json\/wp\/v2\/expert-view"}],"about":[{"href":"https:\/\/devoteam.info\/en-pt\/wp-json\/wp\/v2\/types\/expert-view"}],"version-history":[{"count":0,"href":"https:\/\/devoteam.info\/en-pt\/wp-json\/wp\/v2\/expert-view\/593772\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devoteam.info\/en-pt\/wp-json\/wp\/v2\/media\/148298"}],"wp:attachment":[{"href":"https:\/\/devoteam.info\/en-pt\/wp-json\/wp\/v2\/media?parent=593772"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devoteam.info\/en-pt\/wp-json\/wp\/v2\/categories?post=593772"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devoteam.info\/en-pt\/wp-json\/wp\/v2\/tags?post=593772"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/devoteam.info\/en-pt\/wp-json\/wp\/v2\/industry?post=593772"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}