{"id":9174,"date":"2020-02-21T10:58:55","date_gmt":"2020-02-21T03:58:55","guid":{"rendered":"http:\/\/54.151.235.32\/?p=9174"},"modified":"2021-03-03T18:00:25","modified_gmt":"2021-03-03T11:00:25","slug":"why-switch-to-microservices","status":"publish","type":"post","link":"https:\/\/renovacloud.com\/en\/why-switch-to-microservices\/","title":{"rendered":"Why Switch To Microservices?"},"content":{"rendered":"<h3><strong>Defining Microservices<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">In order to answer the question of Why Switch To Microservices? Let&#8217;s define microservices. Take look at the word itself \u2014<\/span><b>Micro<\/b><span style=\"font-weight: 400;\">\u201d + \u201c<\/span><b>Services<\/b><span style=\"font-weight: 400;\">\u201d. \u201c<\/span><b>Micro<\/b><span style=\"font-weight: 400;\">\u201d means small. And that means small not just in the size of the code itself, but also in the scope of the service and the size of the team working on that service. And the second half is \u201c<\/span><b>Services<\/b><span style=\"font-weight: 400;\">\u201d. \u201cService\u201d refers to an API that provides a defined protocol, defined contracts, and defined Service Level Agreements (SLAs). As a consumer of that service, you can rely on those protocols because you have a contract with the service.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">So \u201c<\/span><b>microservices<\/b><span style=\"font-weight: 400;\">\u201d are single purpose, self-contained services with well-defined protocols and published SLAs, and they&#8217;re designed to be built and operated by small autonomous teams.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">In this article, we will cover the benefits and limitations of microservices in today\u2019s cloud computing landscape.<\/span><\/p>\n<h3><\/h3>\n<h3><strong>Why Switch To Microservices?<\/strong><\/h3>\n<p><a href=\"https:\/\/aws.amazon.com\/microservices\/\" rel=\"noopener\"><span style=\"font-weight: 400;\">Microservices<\/span><\/a><span style=\"font-weight: 400;\"> aren\u2019t just a trendy way to architect applications. They offer significant benefits:<\/span><\/p>\n<p><strong>#1 Microservices accelerate <a href=\"https:\/\/renovacloud.com\/5106\/?lang=en\">development<\/a><\/strong><\/p>\n<p><span style=\"font-weight: 400;\">In traditional monolithic applications, especially at larger companies, you have huge teams of technologists that are working on a massive application altogether, and that creates a lot of friction and overhead. Conversely, you&#8217;re working on microservices-based architectures, you can split out your team into smaller autonomous teams. Such teams can work in parallel and accelerate the overall kind of velocity of your organization.\u00a0<\/span><\/p>\n<p><strong>#2 Microservices improve operations<\/strong><\/p>\n<p><span style=\"font-weight: 400;\">The second major driver is that microservices can improve your operations \u2014 by isolating issues down to individual microservices, you can often reduce the time it takes to repair any particular workload.<\/span><\/p>\n<p><strong>#3 Microservices enable massive scaling<\/strong><\/p>\n<p><span style=\"font-weight: 400;\">Microservice architecture also enables massive scaling, and it does that by allowing each service to be independently scaled to meet the demand for the application feature it supports.<\/span><\/p>\n<p><strong>#4 Microservices let you choose the best technology\u00a0<\/strong><\/p>\n<p><span style=\"font-weight: 400;\">Nimble teams leveraging microservices aren\u2019t restricted to a \u201cone size fits all\u201d approach, rather, they have the freedom to choose the best tool for every job.\u00a0<\/span><\/p>\n<p><strong>#5 Improving resilience and security<\/strong><\/p>\n<p><span style=\"font-weight: 400;\">In a monolithic architecture, if a single component fails, it can cause the entire application to fail. With microservices, applications handle total service failure by degrading functionality and not crashing the entire application. So by switching to a microservices architecture, you increase your application\u2019s resistance to failure.\u00a0<\/span><\/p>\n<h3><\/h3>\n<h3><strong>Why does AWS use microservices?<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">AWS is one of the best examples of a company that actually practices what they preach. They use microservices internally. They have shared eight key drivers for their own internal adoption of microservices:<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Pick the right tool for the job<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Improve resiliency and security<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Lower costs with granular scaling<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Optimize team productivity<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Create new compositions easily<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Experiment and fail safely<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Adopt technology faster<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Deploy features safely and quickly<\/span><\/li>\n<\/ol>\n<p><span style=\"font-weight: 400;\">You can read more about AWS\u2019 perspectives on the benefits and drivers for using microservices here: <\/span><a href=\"https:\/\/aws.amazon.com\/microservices\" rel=\"noopener\"><span style=\"font-weight: 400;\">https:\/\/aws.amazon.com\/microservices<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<h3><\/h3>\n<h3><strong>Trade-Offs To Consider When\u00a0 Switch To Microservices<\/strong><\/h3>\n<p><strong>#1 Higher cognitive load<\/strong><\/p>\n<p><span style=\"font-weight: 400;\">Monolithic applications pack a lot of complexity into a single system. While they are hard to scale, they are pretty easy to understand in many ways because you do not have to worry about an application being composed together of many different systems.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Conversely, with microservices architecture, if you really want to understand the overall system, you have to start thinking about different services and how they relate to one another. It\u2019s a complex ecosystem with many moving parts and a lot of factors to consider &#8211; hence the higher cognitive load.<\/span><\/p>\n<p><strong>#2 Complexity for debugging<\/strong><\/p>\n<p><span style=\"font-weight: 400;\">If you have a monolithic application, you don&#8217;t have to leave the borders of your application to do the debugging. But with a microservices architecture, you now have a distributed system. Distributed systems have very different ways and methods for instrumenting, tracing, and debugging, and that means you have to adopt modern tools and modern instrumentation such as <\/span><a href=\"https:\/\/docs.newrelic.com\/docs\/understand-dependencies\/distributed-tracing\/get-started\/introduction-distributed-tracing\" rel=\"noopener\"><span style=\"font-weight: 400;\">distributed tracing<\/span><\/a><span style=\"font-weight: 400;\"> and <\/span><a href=\"https:\/\/newrelic.com\/resource\/what-is-observability\" rel=\"noopener\"><span style=\"font-weight: 400;\">observability platforms<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><strong>#3 Inter-service Network Latency<\/strong><\/p>\n<p><span style=\"font-weight: 400;\">This last trade-off is due to the limitation of physics &#8211; the speed of light. We can\u2019t overcome the speed of light! In a monolithic application, all your requests are handled and processed within a single system, and often they don&#8217;t even have to leave the borders of that application.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Conversely, with architectures composed of microservices, a single request coming from a customer may touch dozens of different interconnected systems behind the scenes. When you decompose your monolithic application, you have to understand that you cannot treat remote services like local services. You cannot overcome the speed of light, and you need to treat the network as something that will fail and will underperform at times.\u00a0 This means limiting network-bound calls via batching of requests, caching etc. as well as gracefully handling delays via throttling, circuit breakers, buffering, queues and so on.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Now that you\u2019ve learned more about what microservices are, why switch to microservices with its <\/span><span style=\"font-weight: 400;\">key benefits and tradeoffs, be sure to tune in our next article where we will cover how to build microservices on AWS.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Defining Microservices In order to answer the question of Why Switch To Microservices? Let&#8217;s define microservices. Take look at the word itself \u2014Micro\u201d + \u201cServices\u201d. \u201cMicro\u201d means small. And that means small not just in the size of the code itself, but also in the scope of the service and the size of the team [&#8230;]\n","protected":false},"author":7,"featured_media":9170,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[35,263],"class_list":["post-9174","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-data-and-analytics","tag-aws","tag-microservices"],"_links":{"self":[{"href":"https:\/\/renovacloud.com\/en\/wp-json\/wp\/v2\/posts\/9174","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/renovacloud.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/renovacloud.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/renovacloud.com\/en\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/renovacloud.com\/en\/wp-json\/wp\/v2\/comments?post=9174"}],"version-history":[{"count":0,"href":"https:\/\/renovacloud.com\/en\/wp-json\/wp\/v2\/posts\/9174\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/renovacloud.com\/en\/wp-json\/wp\/v2\/media\/9170"}],"wp:attachment":[{"href":"https:\/\/renovacloud.com\/en\/wp-json\/wp\/v2\/media?parent=9174"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/renovacloud.com\/en\/wp-json\/wp\/v2\/categories?post=9174"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/renovacloud.com\/en\/wp-json\/wp\/v2\/tags?post=9174"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}